Dynamische Audiountergeräte
Einige Audioadapter können ihre internen Topologien zur Laufzeit dynamisch ändern. Mithilfe der vom System bereitgestellten Funktionen im PortCls-Systemtreiber (Portcls.sys) können Adaptertreiber Softwareunterstützung für dynamisch konfigurierbare Audiohardware bereitstellen.
Die Intel High Definition Audio Specification verwendet beispielsweise den Begriff Audiocodec, um auf einen integrierten Audioadapter zu verweisen, der über eine HD Audio Link-Schnittstelle eine Verbindung mit einem HD-Audiocontroller herstellt. Ein typischer Audiocodec unterstützt die Erkennung von Jack-Presence: Wenn ein Stecker in eine Buchse eingesteckt oder daraus entfernt wird, generiert die Hardware einen Interrupt, um den Treiber über die Änderung in der Hardwarekonfiguration zu informieren. Beispielsweise reagiert der Treiber auf das Einfügen eines Steckers in die Kopfhörerbuchse, indem er einen KS-Filter erstellt, der das Audiountergerät für den Kopfhörer darstellt. Der Treiber weist dem Filter Hardwareressourcen zu (kopfhörer erfordern z. B. möglicherweise eine Lautstärkeregelung und einen Digital-Analog-Wandler oder DAC) und registriert den Filter als Audiogerät. Wenn der Benutzer den Kopfhörer absteckt, antwortet der Treiber, indem er die Ressourcen freigibt, den Filter löscht und aus der Registrierung entfernt.
Dieses Verhalten stellt sicher, dass eine Audioanwendung bei der Überprüfung, welche Audiogeräte registriert sind, nur die Geräte findet, die derzeit angeschlossen sind. Wenn ein Gerät nicht angeschlossen ist, wird es nicht in der Registrierung angezeigt.
In Windows Vista, Windows Server 2003 mit Service Pack 1 (SP1) und Windows XP mit Service Pack 2 (SP2) unterstützt PortCls die Schnittstellen IUnregisterSubdevice und IUnregisterPhysicalConnection . Audioadaptertreiber verwenden diese beiden Schnittstellen, um Audiountergeräte zu löschen, die nicht mehr verwendet werden. Ältere Versionen von Windows, einschließlich Windows Server 2003 und Windows XP, unterstützen diese Schnittstellen nicht. In diesen früheren Versionen von Windows können Untergeräte erstellt, aber nicht gelöscht werden. Sobald ein Untergerät erstellt wurde, ist es für die Lebensdauer des Adaptertreiberobjekts vorhanden.
Die IUnregisterSubdevice-Schnittstelle enthält eine einzelne Methode, mit der der Adaptertreiber die Registrierung eines Untergerätes aufheben kann, das der Treiber über einen vorherigen Aufruf der PcRegisterSubdevice-Routine registriert hat :
IUnregisterSubdevice::UnregisterSubdevice
Die IUnregisterPhysicalConnection-Schnittstelle enthält drei Methoden, mit denen der Adaptertreiber die Registrierung physischer Verbindungen zwischen Untergeräte aufheben kann:
IUnregisterPhysicalConnection::UnregisterPhysicalConnection
IUnregisterPhysicalConnection::UnregisterPhysicalConnectionFromExternal
IUnregisterPhysicalConnection::UnregisterPhysicalConnectionToExternal
Diese Methoden entfernen Verbindungen, die der Treiber über vorherige Aufrufe der Routinen PcRegisterPhysicalConnection, PcRegisterPhysicalConnectionFromExternal und PcRegisterPhysicalConnectionToExternal registriert hat. PortCls speichert die Informationen aus einem PcRegisterPhysicalConnectionXxx-Aufruf , sodass der Porttreiber die Informationen anschließend verwenden kann, um auf die Anforderungen der KSPROPERTY_PIN_PHYSICALCONNECTION-Eigenschaft zu reagieren. Beim Löschen eines Untergeräts aus der Topologie eines Adapters muss der Treiber die Registrierung der physischen Verbindungen des Untergeräts mit diesem Teil der Topologie aufheben. Wenn die Registrierung der physischen Verbindungen des Untergerätes nicht aufgehoben wird, kann dies zu Speicherverlusten führen. PortCls unterstützt diePcRegister Xxx-Routinen in Windows 2000 und höher.
In den folgenden Themen in diesem Abschnitt wird beschrieben, wie Treiberunterstützung für Adapter mit dynamischen Topologien implementiert wird:
Verwalten dynamischer Topologien