Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Sterownik typowej karty audio powinien łatwo obsługiwać kilka wystąpień tej samej karty audio w systemie. Prawie wszystkie struktury danych przechowywane przez sterownik są przechowywane w buforze rozszerzenia urządzenia (zobacz opis pola DeviceExtension struktury DEVICE_OBJECT). Jeśli jednak kilka wystąpień sterownika współużytkuje jakiekolwiek dane globalne, te wystąpienia powinny synchronizować dostęp do tych danych.
Jednym z dodatkowych wymagań jest to, że każde podurządzenie w konkretnym wystąpieniu karty adaptera powinno mieć ciąg identyfikatora urządzenia, który jednoznacznie identyfikuje podurządzenie we wszystkich wystąpieniach tej samej karty adaptera w systemie.
Najprostszym sposobem osiągnięcia tego celu jest uwidocznienie poszczególnych urządzeń podrzędnych na karcie adaptera jako logicznie odrębne urządzenie do menedżera Plug and Play. Jest to opcja (1) w wielofunkcyjnych urządzeniach audio.
Drugim podejściem jest użycie sterownika magistrali wielofunkcyjnej dostarczonego przez system do zarządzania urządzeniami podrzędnymi na karcie adaptera. Sterownik magistrali MF przypisuje do każdego urządzenia podrzędnego identyfikator urządzenia, który ma gwarancję unikatowości w systemie, nawet jeśli system zawiera kilka wystąpień tej samej karty adaptera. Sterownik magistrali MF obsługuje projekty, w których urządzenia podrzędne mają wspólny zestaw rejestrów konfiguracji, ale każdy podurządzenia ma własny zestaw rejestrów adresów podstawowych PCI. Urządzenia podrzędne nie powinny mieć żadnych ukrytych zależności od siebie i powinny być w stanie działać współbieżnie bez zakłócania między sobą lub innych urządzeń w systemie. Jest to opcja (2) we wielofunkcyjnych urządzeniach audio.
Trzecim podejściem jest użycie zastrzeżonego sterownika magistrali do zarządzania urządzeniami podrzędnymi na karcie adaptera. Jest to często konieczne, jeśli urządzenia podrzędne mają wzajemne zależności, które muszą być zarządzane centralnie. Takie zależności mogą wystąpić na kilka sposobów:
Urządzenia podrzędne mogą współdzielić niektóre zasoby na karcie. Jeśli na przykład podurządzenia współdzielą procesor sygnału cyfrowego (DSP), sterownik magistrali może wymagać pobrania zastrzeżonego systemu operacyjnego działającego na dsP przed uruchomieniem pierwszej podurządzenia.
Wadą projektu może być zależność między urządzeniami podrzędnymi. Na przykład usterka projektu może wymagać, aby urządzenia podrzędne mogły być zasilane w górę lub w dół w określonej sekwencji.
Jeśli istnieje dowolny typ zależności, zastrzeżony sterownik magistrali jest prawie zawsze lepszym rozwiązaniem niż prezentowanie urządzeń podrzędnych bezpośrednio do menedżera Plug and Play i próby ukrycia zależności.
Jeśli podajesz własny sterownik magistrali dla karty adaptera, upewnij się, że identyfikatory urządzeń przypisane przez sterownik magistrali są unikatowe w całym systemie.
Sterownik magistrali udostępnia identyfikator urządzenia dla jednego z urządzeń podrzędnych w odpowiedzi na zapytanie IRP_MN_QUERY_ID z menedżera Plug and Play. Identyfikator można określić według jednego z dwóch sposobów, które sterownik magistrali wskazuje w odpowiedzi na zapytanie IRP_MN_QUERY_CAPABILITIES, ustawiając pole UniqueID struktury DEVICE_CAPABILITIES na TRUE lub FALSE:
Unikatowy identyfikator = PRAWDZIWY
Oznacza to, że nazwa dziecka jest gwarantowana jako unikalna w całym systemie. Ciąg identyfikatora urządzenia zawiera identyfikator urządzenia oraz identyfikator wystąpienia, który jest numerem seryjnym unikalnie identyfikującym wystąpienie sprzętu.
Unikatowy identyfikator = FAŁSZYWY
Oznacza to, że nazwa elementu podrzędnego jest unikatowa tylko w odniesieniu do elementu nadrzędnego. Większość urządzeń używa tego środka identyfikacji. W takim przypadku menedżer PnP rozszerza ciąg identyfikatora urządzenia, który otrzymuje, aby stał się unikatowy w całym systemie. Ciąg rozszerzony jest funkcją unikalnego identyfikatora urządzenia nadrzędnego.
Wszystkie sterowniki magistrali audio powinny ustawić wartość UniqueID = FALSE dla swoich dzieci. Dzięki temu menedżer Plug and Play rozszerza ciąg identyfikatora urządzenia podrzędnego, dodając informacje o urządzeniu nadrzędnym, aby identyfikator był unikatowy w systemie.