Partager via


Sous-appareils audio dynamiques

Certaines cartes 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 audio Haute Définition Intel utilise le terme codec audio pour faire référence à un adaptateur audio intégré qui se connecte à un contrôleur audio haute définition (audio HD) via une interface HD Audio Link. Un codec audio classique prend en charge la détection de présence de prise : lorsqu’une prise est insérée ou supprimée d’une prise, le matériel génère une interruption pour informer le pilote de la modification de la configuration matérielle. Par exemple, le pilote répond à l’insertion d’une fiche dans la prise casque en créant un filtre KS pour représenter le sous-appareil audio du casque. Le pilote affecte des ressources matérielles au filtre (par exemple, le casque peut 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ébranche 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 périphériques audio sont inscrits, elle trouve uniquement les appareils actuellement connectés. Si un appareil est débranché, 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 d’adaptateur audio utilisent ces deux interfaces pour supprimer les sous-appareils audio qui ne sont plus utilisés. Les versions antérieures de Windows, notamment Windows Server 2003 et Windows XP, ne prennent pas en charge ces interfaces. Dans ces versions antérieures de Windows, les sous-appareils peuvent être créés, mais pas supprimés: une fois qu’un sous-appareil est créé, il existe pendant la durée de vie de l’objet pilote de l’adaptateur.

L’interface IUnregisterSubdevice contient une méthode unique que le pilote de l’adaptateur peut utiliser pour « annuler l’inscription » d’un sous-appareil que le pilote a inscrit via 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-appareils :

IUnregisterPhysicalConnection::UnregisterPhysicalConnection

IUnregisterPhysicalConnection::UnregisterPhysicalConnectionFromExternal

IUnregisterPhysicalConnection::UnregisterPhysicalConnectionToExternal

Ces méthodes suppriment les connexions que le pilote a inscrites via des appels précédents aux routines PcRegisterPhysicalConnection, PcRegisterPhysicalConnectionFromExternal et PcRegisterPhysicalConnectionToExternal . PortCls stocke les informations 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-appareil de la topologie d’un adaptateur, le pilote doit annuler l’inscription des connexions physiques du sous-appareil à cette partie de la topologie. L’échec de l’annulation de l’inscription des connexions physiques du sous-appareil 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-appareils dynamiques

Descriptions jack pour les sous-appareils audio dynamiques