Partager via


Sous-éléments audio dynamiques

Certains adaptateurs audio peuvent modifier dynamiquement leurs topologies internes au moment de l’exécution. En utilisant les fonctionnalités fournies par le système dans le pilote système PortCls (Portcls.sys), les pilotes d’adaptateur peuvent fournir une prise en charge logicielle du matériel audio configurable dynamiquement.

Par exemple, la spécification Intel High Definition Audio utilise le terme codec audio pour faire référence à une carte audio intégrée qui se connecte à un contrôleur audio haute définition (HD Audio) via une interface de liaison audio HD. Un codec audio classique prend en charge la détection de présence de prise : lorsqu’un connecteur est inséré dans ou retiré d’une prise jack, le matériel génère une interruption pour avertir le driver de la modification de la configuration matérielle. Par exemple, le pilote répond à l’insertion d’un plug-in dans la prise casque en créant un filtre KS pour représenter le sous-élément audio du casque. Le pilote affecte des ressources matérielles au filtre (par exemple, les casques peuvent nécessiter un contrôle de volume et un convertisseur numérique à analogique, ou DAC) et inscrit le filtre en tant que périphérique audio. Lorsque l’utilisateur déconnecte le casque, le pilote répond en libérant les ressources, en supprimant le filtre et en le supprimant du Registre.

Ce comportement garantit que lorsqu’une application audio vérifie quels appareils audio sont inscrits, il trouve uniquement les appareils actuellement branchés. Si un appareil est déconnecté, il n’apparaît pas dans le Registre.

Dans Windows Vista, Windows Server 2003 avec Service Pack 1 (SP1) et Windows XP avec Service Pack 2 (SP2), PortCls prend en charge les interfaces IUnregisterSubdevice et IUnregisterPhysicalConnection . Les pilotes de carte audio utilisent ces deux interfaces pour supprimer des sous-éléments audio qui ne sont plus utilisés. Les versions antérieures de Windows, y compris Windows Server 2003 et Windows XP, ne prennent pas en charge ces interfaces. Dans ces versions antérieures de Windows, les sous-éléments peuvent être créés, mais pas supprimés, une fois qu’un sous-élément est créé, il existe pour la durée de vie de l’objet de pilote d’adaptateur.

L’interface IUnregisterSubdevice contient une méthode unique que le pilote de l’adaptateur peut utiliser pour « annuler l’inscription » d’un sous-élément inscrit par le biais d’un appel précédent à la routine PcRegisterSubdevice :

IUnregisterSubdevice ::UnregisterSubdevice

L’interface IUnregisterPhysicalConnection contient trois méthodes que le pilote de l’adaptateur peut utiliser pour annuler l’inscription des connexions physiques entre les sous-éléments :

IUnregisterPhysicalConnection ::UnregisterPhysicalConnection

IUnregisterPhysicalConnection ::UnregisterPhysicalConnectionFromExternal

IUnregisterPhysicalConnection ::UnregisterPhysicalConnectionToExternal

Ces méthodes suppriment les connexions que le pilote a enregistrées via des appels précédents aux routines PcRegisterPhysicalConnection, PcRegisterPhysicalConnectionFromExternal et PcRegisterPhysicalConnectionToExternal . PortCls stocke les informations à partir d’un appel PcRegisterPhysicalConnectionXxx afin que le pilote de port puisse ensuite utiliser les informations pour répondre aux demandes de propriété KSPROPERTY_PIN_PHYSICALCONNECTION . Lors de la suppression d’un sous-élément de la topologie d’un adaptateur, le pilote doit annuler l’inscription des connexions physiques du sous-composant à cette partie de la topologie. L’échec de l’inscription des connexions physiques du sous-composant peut entraîner des fuites de mémoire. PortCls prend en charge les routines PcRegisterXxx dans Windows 2000 et versions ultérieures.

Les rubriques suivantes de cette section décrivent comment implémenter la prise en charge des pilotes pour les adaptateurs avec des topologies dynamiques :

Gestion des topologies dynamiques

Prise en charge des pilotes pour les sous-dispositifs dynamiques

Descriptions des ports jack pour les sous-dispositifs audio dynamiques