Udostępnij za pośrednictwem


Fabryki filtrów

Sterownik adaptera audio udostępnia fabryki filtrów do zarządzania instancjonowaniem filtrów. Każda fabryka filtrów może utworzyć jedno lub więcej wystąpień filtrów KS określonego typu. Jeśli typ filtru hermetyzuje określoną funkcję sprzętową, liczba filtrów tego typu, które fabryka może utworzyć, jest ograniczona przez bazowe zasoby sprzętowe.

Ponieważ fabryka filtrów zarządza w dużej mierze autonomicznym blokiem funkcjonalności sprzętowej, każda fabryka filtrów może być traktowana jako sterownik urządzenia. W rzeczywistości termin sterownik adaptera, który jest używany w poprzednim akapicie, odnosi się do kolekcji powiązanych sterowników- fabryk filtru - które są pakowane razem w celu zarządzania różnymi funkcjami sprzętowymi na karcie adaptera.

Podobnie jak w przypadku innych sterowników Microsoft Windows Driver Model (WDM), fabryka filtrów obsługuje zarządzanie energią oraz funkcje ustawień. Podczas instalacji plik INF sterownika rejestruje co najmniej jedną nazwę urządzenia filtru (zobacz ciągi identyfikacji urządzeń). Ten proces ładuje nazwy do rejestru systemowego i kojarzy każdą fabrykę filtrów z co najmniej jedną kategorią filtrów KS, zgodnie z opisem w Instalowanie interfejsów urządzeń dla adaptera audio. Wszystkie urządzenia audio są klasyfikowane w KSCATEGORY_AUDIO, ale urządzenie audio może być również klasyfikowane w ramach dodatkowych kategorii, takich jak KSCATEGORY_RENDER (dla urządzenia renderowania audio) lub KSCATEGORY_CAPTURE (w przypadku urządzenia do przechwytywania dźwięku). Sterownik anonsuje ogólne możliwości urządzenia za pomocą różnych kategorii, w których rejestruje filtr dla tego urządzenia. Jeśli sterownik systemu SysAudiona przykład wymaga urządzenia audio określonego typu, wyszukuje w rejestrze urządzeń, które należą do odpowiednich kategorii.

System operacyjny używa Setup API, jak opisano w Składniki instalacji urządzeń, do wykrywania i enumeracji wszystkich fabryk filtrów KSCATEGORY_AUDIO w rejestrze. Wpis rejestru dla każdej fabryki określa przyjazną nazwę fabryki filtrów i jej nazwę urządzenia, czyli długi ciąg znaków, który klient przekazuje do wywołania funkcji tworzenia pliku, co instancjuje filtr. To wywołanie może zostać wykonane do ZwCreateFile z trybu jądra lub do CreateFile z trybu użytkownika. Filtr jest obiektem trybu jądra i jest identyfikowany przez uchwyt jądra. Wywołanie create-file zwraca uchwyt instancji, którego klienci mogą używać do odwoływania się do filtru. Klienci działający w trybie użytkownika lub filtry nadrzędne w grafie audio mogą używać tego uchwytu do wysyłania lub przekazywania żądań IOCTL do filtru. Aby uzyskać więcej informacji na temat CreateFile, zobacz dokumentację zestawu Microsoft Windows SDK.

Typowa karta audio WDM może znajdować się na magistrali PCI, na przykład i zawierać kilka złączy we/wy do renderowania lub przechwytywania danych dźwiękowych. Pojedyncze urządzenie audio na tej karcie może zawierać analogowe gniazda audio-out do podłączenia zestawu głośników i kabla lineout oraz analogowe gniazda audio-in do odbierania sygnałów z mikrofonu i kabla linein. System audio WDM reprezentuje urządzenie jako filtr i reprezentuje gniazda audio jako pinezki w tym filtrze.

Filtr urządzenia audio jest implementowany jako oddzielne sterowniki portów i miniportów, które są powiązane, aby działać wspólnie:

  • Sterownik miniportu zawiera kod specyficzny dla sprzętu.

  • Sterownik portu zawiera kod ogólny wspólny dla wszystkich filtrów określonego typu.

Dostawca pisze sterownik miniportu, który zawiera cały zastrzeżony kod niezbędny do zarządzania sprzętem audio przez filtr. System operacyjny udostępnia sterownik portu, który jest dostępny za pośrednictwem sterownika systemowego PortCls (Portcls.sys; zobacz Sterownik adaptera klasy portów i Sterownik systemu PortCls). Podzielenie implementacji filtru na sterowniki portów i miniportów upraszcza pisanie sterownika dla zastrzeżonego urządzenia.

Gdy fabryka filtrów inicjuje filtr, najpierw tworzy obiekt sterownika miniportu dla tego filtru. Następnie fabryka filtrów tworzy wystąpienie odpowiedniego obiektu portu i wiąże obiekt sterownika miniportu z tym wystąpieniem w celu utworzenia w pełni funkcjonalnego filtru. Przykład kodu w Tworzenie urządzenia podrzędnego ilustruje ten proces. Sterowniki portów i miniportów komunikują się ze sobą za pośrednictwem dobrze zdefiniowanych interfejsów oprogramowania. Aby uzyskać więcej informacji na temat tych interfejsów, zobacz Miniport Interfaces i Supporting a Device.

Filtr audio ujawnia strukturę bazowego urządzenia audio jako zestaw punktów połączeń, węzłów i połączeń wewnętrznych. Sterownik miniportu konsoliduje te informacje w deskryptor filtru, który jest strukturą typu PCFILTER_DESCRIPTOR. Z kolei ta struktura zawiera poszczególne deskryptory dla fabryk pinów filtra, węzłów i połączeń wewnętrznych. Te deskryptory są strukturami następujących typów:

PCPIN_DESCRIPTOR

PCNODE_DESCRIPTOR

PCCONNECTION_DESCRIPTOR

Aby uzyskać deskryptor filtru ze sterownika miniportu, sterownik portu wywołuje metodę IMiniport::GetDescription.

Aby zapoznać się z przykładem sposobu konfigurowania struktury PCFILTER_DESCRIPTOR sterownika, zobacz przykładowy sterownik Sysvad, który został omówiony w sekcji przykładowych sterowników audio .