Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cette section fournit un résumé des cibles de l'Audio Class eXtensions (ACX) et de la synchronisation des pilotes.
Pour obtenir des informations générales sur ACX, consultez la vue d’ensemble des extensions de classe audio ACX et résumé des objets ACX. Pour plus d’informations sur les IRPs, consultez les IRPs de demande d’E/S ACX.
Cibles ACX
ACX utilise WdfIoTarget pour faciliter les communications entre les objets ACX, les circuits, les broches, les flux, les éléments et les usines de circuits. WdfIoTarget est une abstraction WDF existante pour faciliter la communication entre deux piles différentes.
Les pilotes utilisent AcxTargetCircuit communiquer avec un circuit distant exposé par une autre pile. AcxTargetCircuit est implémenté à l’aide d’un WdfIoTarget.
Les pilotes utilisent AcxTargetPin communiquer avec la broche d’un circuit distant exposée par une autre pile. AcxTargetPin est implémenté à l’aide d’un WdfIoTarget pour envoyer des messages à l’entité de broche distante.
Les pilotes utilisent AcxTargetStream pour communiquer avec le flux d’un circuit distant exposé par une autre pile. AcxTargetStream est implémenté à l’aide d’un WdfIoTarget pour créer un flux distant et modifier l’état du flux distant.
Les pilotes utilisent AcxTargetElement communiquer avec l’élément d’un circuit distant exposé par une autre pile. AcxTargetElement est implémenté à l’aide d’un WdfIoTarget pour envoyer des messages à l’entité d’élément distant.
Les pilotes utilisent AcxTargetFactoryCircuit communiquer avec une instance de fabrique de circuit distant. AcxTargetFactoryCircuit est implémenté à l’aide d’un WdfTarget pour envoyer des messages à la fabrique de circuit distant.
Pour interagir avec le circuit distant, chacun des types ACX répertoriés ci-dessus prend en charge :
- Propriétés
- méthodes
- événements
Tous ces types sont basés sur les types d’objets WdfIoTarget .
Ce diagramme montre l’architecture cible ACX et l’héritage des objets WDF Driver and Device.
Synchronisation et sérialisation du pilote ACX
Le terme synchronisation est un terme général, et il est utilisé pour faire référence aux opérations nécessaires au partage de ressources (mémoire, E/S, etc.) entre plusieurs clients simultanés.
Le terme sérialisation est utilisé pour faire référence à un type de synchronisation pour un seul type d'objet (demandes d’E/S, rappels, etc.).
Les pilotes ACX sont des pilotes WDF, ce qui signifie que la synchronisation des pilotes ACX est basée sur les fonctionnalités de synchronisation de WDF :
- Utilisation du nombre de références et du modèle objet hiérarchique.
- Contrôle de flux configurable par pilote pour les files d’attente d’E/S.
- Verrou de présentation d’objets pour les objets de périphérique et les files d’attente d’E/S.
- Sérialisation automatique des rappels Plug-and-Play et d'alimentation.
Pour obtenir une description détaillée de la synchronisation et de la sérialisation, consultez Utilisation de la synchronisation automatique. Pour obtenir une explication plus complète, consultez le livre de Microsoft Press Developing Drivers with Windows Driver Foundation.
WDF prend en charge les étendues de synchronisation suivantes :
- Aucune étendue (valeur par défaut dans KMDF).
- Portée du périphérique, WDF acquiert le verrou de présentation de l'objet périphérique pour assurer la sérialisation des opérations.
La file d’attente ACX par défaut est une file d’attente passive et série sans verrouillage. Le pilote doit effectuer l'opération d'E/S avant l'exécution suivante.
ACX ne prend pas en charge l’option d’étendue de file d’attente. Avec cette option, le pilote sérialise les E/S sur une file d’attente spécifique. Différentes files d’attente peuvent avoir des étendues de synchronisation différentes.
ACX ne prend pas en charge la sérialisation de la portée du dispositif. Par défaut, ACX sérialise les demandes à l’aide d’une file d’attente d’E/S série sans verrouillage. Chaque circuit et objet de flux possèdent sa propre file d’attente dédiée. Pour plus d’informations sur la diffusion en continu d’E/S, consultez la rubrique ACX Streaming.
Si un pilote détient un verrou, il ne doit jamais appeler (explicitement ou implicitement) du code en dehors de son contrôle jusqu’à ce que le verrou soit libéré.
Pour référence historique, le PortCls d’origine utilise un périmètre de synchronisation similaire à celui du dispositif WDF, où toutes les E/S pour les sous-dispositifs audio créés sur cet appareil passent par le même verrou de sérialisation. Ce type de sérialisation a été, et c’est encore la cause de divers problèmes. Dans les versions ultérieures de Windows 10 (version 1511 - TH2), PortCls a été mis à jour pour utiliser un verrouillage différent pour les demandes d'entrée/sortie de positionnement de flux.
Voir aussi
Vue d’ensemble des extensions de classe audio ACX
Documentation de référence relative à l’interface de ligne de commande