Freigeben über


Dynamische Audiounterelemente

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 z. B. den Begriff Audiocodec, um auf einen integrierten Audioadapter zu verweisen, der über eine HD Audio Link-Schnittstelle eine Verbindung mit einem HD Audio Audio Controller herstellt. Ein typischer Audiocodec unterstützt die Erkennung der Jack-Anwesenheit: Wenn ein Stecker in eine Buchse eingesteckt oder aus einer Buchse entfernt wird, generiert die Hardware einen Interrupt, um den Treiber über die Änderung der Hardwarekonfiguration zu benachrichtigen. Beispielsweise reagiert der Treiber auf die Einfügung eines Steckers in die Kopfhörerbuchse, indem ein KS-Filter erstellt wird, der die Audiounterstelle für die Kopfhörer darstellt. Der Treiber weist dem Filter Hardwareressourcen zu (z. B. Kopfhörer benötigen möglicherweise eine Lautstärkeregelung und einen digital-zu-analogen Konverter oder DAC) und registriert den Filter als Audiogerät. Wenn der Benutzer die Kopfhörer entkoppelt, reagiert der Treiber, indem er die Ressourcen freigibt, den Filter löscht und ihn aus der Registrierung entfernt.

Dieses Verhalten stellt sicher, dass beim Überprüfen, welche Audiogeräte registriert sind, nur die Geräte gefunden werden, 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 IUnregisterSubdevice - und IUnregisterPhysicalConnection-Schnittstellen . Audioadaptertreiber verwenden diese beiden Schnittstellen, um Audiounterelemente zu löschen, die nicht mehr verwendet werden. Frühere 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 wird, besteht es für die gesamte Lebensdauer des Adaptertreiberobjekts.

Die IUnregisterSubdevice-Schnittstelle enthält eine einzelne Methode, mit der der Adaptertreiber die Registrierung eines Unterdevices aufheben kann, den 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 physikalischer Verbindungen zwischen Teilgeräten aufheben kann.

IUnregisterPhysicalConnection::UnregisterPhysicalConnection

IUnregisterPhysicalConnection::UnregisterPhysicalConnectionFromExternal

IUnregisterPhysicalConnection::UnregisterPhysicalConnectionToExternal

Mit diesen Methoden werden Verbindungen entfernt, 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 anschließend die Informationen verwenden kann, um auf die anforderungen der KSPROPERTY_PIN_PHYSICALCONNECTION Eigenschaft zu reagieren. Beim Löschen eines Unterabschnitts aus der Topologie eines Adapters muss der Treiber die Registrierung der physischen Verbindungen des Unterabschnitts mit diesem Teil der Topologie aufheben. Wenn die Registrierung der physischen Verbindungen des Unterdevice nicht aufgehoben wird, kann dies zu Speicherverlusten führen. PortCls unterstützt die PcRegisterXxx-Routinen in Windows 2000 und höher.

In den folgenden Themen in diesem Abschnitt wird beschrieben, wie Sie die Treiberunterstützung für Adapter mit dynamischen Topologien implementieren:

Verwalten dynamischer Topologien

Treiberunterstützung für dynamische Subdevices

Klinkenbeschreibungen für dynamische Audio-Subgeräte