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.
Większość sterowników sprzętowych dla urządzeń audio opartych na standardzie PCI i DMA jest oparta na bibliotece klas portów, która jest dostępna za pośrednictwem sterownika systemowego PortCls (Portcls.sys). PortCls to sterownik klasy portów audio, który firma Microsoft zawiera w ramach systemu operacyjnego. PortCls dostarcza zestaw sterowników portów, które implementują większość ogólnych funkcji filtrowania strumieniowania jądra (KS). W związku z tym biblioteki PortCl upraszczają zadanie dewelopera sterowników dźwiękowych. Dostawca sprzętu musi dostarczyć jedynie zestaw sterowników miniportowych do zarządzania funkcjami specyficznymi dla sprzętu adaptera audio.
Mimo że dostawcy sprzętu mają możliwość zaimplementowania własnych filtrów KS dla swoich urządzeń audio, ta opcja jest zarówno trudna, jak i niepotrzebna dla typowych urządzeń audio. Można opracować filtr KS zgodny z Stream.sys, sterownikiem klasy Stream, lub Avstream.sys, sterownikiem klasy AVStream. Jednak filtr KS oparty na Stream.sys nie może korzystać z ulepszeń, które są dostępne tylko w avStream. Aby uzyskać więcej informacji o filtrach KS i PortCls, zobacz Wprowadzenie do sterowników audio WDM.
Wewnętrzna implementacja PortCls może ewoluować, aby korzystać z ulepszeń strumieniowania jądra w kolejnych wersjach systemu Windows, jednocześnie zachowując zgodność z istniejącymi sterownikami.
PortCls jest implementowany w pliku systemowym Portcls.sys jako sterownik eksportowany (biblioteka DLL trybu jądra) i zawiera następujące elementy:
Zestaw funkcji pomocnika, które mogą być wywoływane przez sterownik adaptera
Kolekcja sterowników portów audio
Obowiązkiem dostawcy sprzętu urządzenia audio jest zapewnienie sterownika adaptera. Sterownik adaptera zawiera kod inicjalizacji i zarządzania sterownikami miniportowymi (w tym funkcję DriverEntry) oraz kolekcję sterowników miniportu audio.
Gdy system operacyjny ładuje sterownik karty, sterownik karty tworzy zestaw obiektów sterowników miniportu i monituje sterownik systemu PortCls o utworzenie odpowiedniego zestawu obiektów sterowników portów. (Przykładowy kod w obszarze Tworzenie urządzenia podrzędnego ilustruje ten proces). Te sterowniki portów są zazwyczaj podzbiorem tych, które są dostępne w pliku Portcls.sys. Każdy sterownik miniportu wiąże się z pasującym sterownikiem portu z Portcls.sys w celu utworzenia kompletnego sterownika urządzenia podrzędnego . Kombinacja sterownika urządzenia podrzędnego typu port-and-miniport jest filtrem KS (zobacz Filtry audio). Na przykład typowy sterownik adaptera może zawierać trzy sterowniki miniportu: WaveRT, DMusUART i Topologia (z interfejsami IMiniportWaveRT, IMiniportDMus i IMiniportTopology ). Podczas inicjowania te sterowniki miniportów są powiązane z sterownikami portów WaveRT, DMus i Topology (z interfejsami IPortWaveRT, IPortDMus i IPortTopology ), które znajdują się w pliku Portcls.sys. Każdy z tych trzech sterowników urządzeń podrzędnych ma formę filtru KS. Trzy filtry razem uwidaczniają pełną funkcjonalność karty audio.
Zazwyczaj sterowniki portów zapewniają większość funkcji dla każdej klasy podurządzenia audio. Na przykład sterownik portu WaveRT wykonuje większość pracy wymaganej do strumieniowego przesyłania danych audio do urządzenia audio opartego na dmA, natomiast sterownik miniportu udostępnia szczegółowe informacje dotyczące urządzenia, takie jak adres DMA i nazwa urządzenia.
Sterowniki kart audio i sterowniki miniportów są zwykle zapisywane w języku Microsoft C++ i umożliwiają szerokie wykorzystanie interfejsów COM. Architektura sterowników portu-miniportu sprzyja projektowaniu modułowemu. Autorzy sterowników miniportu powinni implementować swój sterownik jako klasę języka C++ dziedziczoną z interfejsu IMiniport, który jest zdefiniowany w pliku nagłówkowym Portcls.h. Inicjowanie sprzętu odbywa się w czasie ładowania sterownika — zazwyczaj w metodzie Init klasy pochodnej IMiniport (na przykład IMiniportWaveRT::Init). Aby uzyskać więcej informacji na temat implementacji com sterowników miniportu audio, zobacz COM w jądrze.
Na poniższym diagramie przedstawiono relację między sterownikami portów i miniportami oraz ich położeniem w stosie audio.
Na powyższym diagramie składnik KSEndpoint jest plikiem dostarczonym przez system, który jest dostarczany z systemem Windows Vista i nowszymi wersjami systemu Windows. Ten składnik jest dostarczany w postaci biblioteki DLL (Audiokse.dll). KsEndpoint abstrahuje punkt końcowy urządzenia w trybie jądra i zapewnia silnikowi audio dostęp do tego punktu końcowego. Aby uzyskać więcej informacji na temat silnika audio, zobacz Eksplorowanie silnika audio systemu Windows Vista.
Legenda na powyższym diagramie przedstawia pola reprezentujące składniki sterowników zapewniane przez dostawcę. Należy pamiętać, że górna krawędź każdego sterownika miniportu wchodzi w interakcję z dolną krawędzią każdego sterownika portu. Na przykład sterownik portu WaveRT uwidacznia interfejs IPortWaveRT sterownikowi miniportu WaveRT, który uwidacznia interfejs IMiniportWaveRT sterownikowi portu. Interfejsy te są czasami określane jako interfejsy górnej idolnej krawędzi .
Klasa sterowników portu i klasa sterowników AVStream są podobne, ponieważ oba są sterownikami WDM i oba obsługują architekturę przesyłania strumieniowego jądra WDM. Jednak sterowniki klas portów różnią się od sterowników klas AVStream w zakresie obsługi wieloprocesorowej i reentrantności. Sterowniki klas portów wykonują następujące czynności:
Użyj trzywarstwowego podejścia, które łączy sterownik klasy, sterowniki portów i sterowniki miniport dostarczone przez dostawcę.
Mają ograniczoną liczbę funkcji audio, dzięki czemu sterowniki miniportu działają bliżej sprzętu audio.
Zezwalaj na połączenie kilku sterowników portów lub miniportów dla określonego urządzenia. Ta funkcja umożliwia lepszą obsługę kart wielofunkcyjnych.
Nie obsługują magistrali zewnętrznych (na przykład USB). Wszystkie sterowniki portów obsługują urządzenia znajdujące się w magistralach systemowych (PCMCIA i PCI).
Terminologia dotycząca opisywania portów audio I sterowników miniportów WDM różni się pod pewnymi względami od terminów używanych dla innych klas sterowników systemu Windows. Te różnice wyjaśniono w terminologii audio WDM.
W tej sekcji omówiono następujące tematy: