Delen via


Dynamische audiosubsystemen

Sommige audioadapters kunnen hun interne topologieën tijdens runtime dynamisch wijzigen. Door gebruik te maken van de door het systeem geleverde mogelijkheden in het PortCls-systeemstuurprogramma (Portcls.sys), kunnen adapterstuurprogramma's softwareondersteuning bieden voor dynamisch configureerbare audiohardware.

De Intel High Definition Audio Specification gebruikt bijvoorbeeld de term audiocodec om te verwijzen naar een geïntegreerde audioadapter die via een HD Audio Link-interface verbinding maakt met een High Definition Audio-controller (HD Audio). Een typische audiocodec ondersteunt aanwezigheidsdetectie van jacks: wanneer een stekker wordt ingevoegd of verwijderd van een jack, genereert de hardware een interrupt om het stuurprogramma op de hoogte te stellen van de wijziging in de hardwareconfiguratie. Het stuurprogramma reageert bijvoorbeeld op de invoeging van een stekker in de hoofdtelefoonaansluiting door een KS-filter te maken om het audiosubdevice voor de hoofdtelefoon weer te geven. Het stuurprogramma wijst hardwareresources toe aan het filter (bijvoorbeeld hoofdtelefoons vereisen mogelijk een volumeregeling en een digitaal-naar-analoog converter of DAC) en registreert het filter als een audioapparaat. Wanneer de gebruiker de hoofdtelefoon loskoppelt, reageert het stuurprogramma door de resources vrij te maken, het filter te verwijderen en uit het register te verwijderen.

Dit gedrag zorgt ervoor dat wanneer een audiotoepassing controleert welke audioapparaten zijn geregistreerd, alleen de apparaten worden gevonden die momenteel zijn aangesloten. Als een apparaat niet is aangesloten, wordt het niet weergegeven in het register.

In Windows Vista, Windows Server 2003 met Service Pack 1 (SP1) en Windows XP met Service Pack 2 (SP2), ondersteunt PortCls de IUnregisterSubdevice - en IUnregisterPhysicalConnection-interfaces . Stuurprogramma's voor audioadapters gebruiken deze twee interfaces om audiosubdevices te verwijderen die niet meer in gebruik zijn. Eerdere versies van Windows, waaronder Windows Server 2003 en Windows XP, bieden geen ondersteuning voor deze interfaces. In deze eerdere versies van Windows kunnen subdevices worden gemaakt, maar niet verwijderd. Als een subapparaat eenmaal is gemaakt, bestaat deze voor de levensduur van het stuurprogrammaobject van de adapter.

De interface IUnregisterSubdevice bevat één methode die het adapterstuurprogramma kan gebruiken om een subdevice op te heffen die het stuurprogramma heeft geregistreerd via een eerdere aanroep naar de PcRegisterSubdevice-routine :

IUnregisterSubdevice::UnregisterSubdevice

De interface IUnregisterPhysicalConnection bevat drie methoden die het adapterstuurprogramma kan gebruiken om de registratie van fysieke verbindingen tussen subdevices ongedaan te maken:

IUnregisterPhysicalConnection::UnregisterPhysicalConnection

IUnregisterPhysicalConnection::UnregisterPhysicalConnectionFromExternal

IUnregisterPhysicalConnection::UnregisterPhysicalConnectionToExternal

Deze methoden verwijderen verbindingen die het stuurprogramma heeft geregistreerd via eerdere aanroepen naar de PcRegisterPhysicalConnection, PcRegisterPhysicalConnectionFromExternal en PcRegisterPhysicalConnectionToExternal-routines . PortCls slaat de informatie van een PcRegisterPhysicalConnectionXxx-aanroep op, zodat het poortstuurprogramma vervolgens de informatie kan gebruiken om te reageren op de KSPROPERTY_PIN_PHYSICALCONNECTION eigenschapsaanvragen. Wanneer u een subdevice verwijdert uit de topologie van een adapter, moet het stuurprogramma de registratie van de fysieke verbindingen van de subdevice met dat gedeelte van de topologie ongedaan maken. Het ongedaan maken van de registratie van de fysieke verbindingen van de subdevice kan geheugenlekken veroorzaken. PortCls ondersteunt de PcRegisterXxx-routines in Windows 2000 en hoger.

In de volgende onderwerpen in deze sectie wordt beschreven hoe u stuurprogrammaondersteuning voor adapters met dynamische topologieën implementeert:

Dynamische topologieën beheren

Stuurprogrammaondersteuning voor dynamische subdevices

Beschrijvingen van jacks voor dynamische audiosubdevices