Partager via


Cibles ACX et synchronisation des pilotes

Cette rubrique fournit un résumé des cibles ACX (Audio Class eXtensions) et de la synchronisation des pilotes.

Pour des informations générales sur l'ACX, voir Vue d'ensemble des extensions de classe audio ACX et Résumé des objets ACX. Pour plus d'informations sur les IRP, reportez-vous à la section IRP de paquets de requêtes d'E/S ACX.

Cibles ACX

L'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 qui facilite la communication entre deux piles différentes.

Les pilotes utilisent AcxTargetCircuit pour communiquer avec un circuit distant exposé par une pile différente. AcxTargetCircuit est implémenté en utilisant un WdfIoTarget.

Les pilotes utilisent AcxTargetPin pour communiquer avec la broche d'un circuit distant exposée par une pile différente. AcxTargetPin est implémenté en utilisant un WdfIoTarget pour envoyer des messages à l’entité de la broche distante.

Les pilotes utilisent AcxTargetStream pour communiquer avec le flux d'un circuit distant exposé par une pile différente. AcxTargetStream est implémenté en utilisant un WdfIoTarget pour créer un flux distant et changer l’état du flux distant.

Les pilotes utilisent AcxTargetElement pour communiquer avec l'élément d'un circuit distant exposé par une pile différente. AcxTargetElement est implémenté en utilisant un WdfIoTarget pour envoyer des messages à l’entité de l’élément distant.

Les pilotes utilisent AcxTargetFactoryCircuit pour communiquer avec une instance de fabrique de circuit distant. AcxTargetFactoryCircuit est implémenté en utilisant un WdfTarget pour envoyer des messages à la fabrique de circuits distante.

Pour interagir avec le circuit distant, chacun des types ACX énumérés ci-dessus est pris en charge :

  • properties
  • méthodes
  • événements

Tous ces types sont construits sur les types d'objets WdfIoTarget.

Ce diagramme illustre l'architecture cible ACX et l'héritage des objets WDF Driver et Device.

Diagramme illustrant l'architecture cible ACX avec WDFDRIVER, WDFDEVICE, ACXTARGET, ACXSTREAM, ACXSTREAMFACTORY, ACXTARGETELEMENT et ACXTARGETPIN.

Synchronisation et sérialisation des pilotes ACX

Le terme synchronisation est un terme général, et il est utilisé pour faire référence aux opérations nécessaires pour partager les ressources (mémoire, E/S, etc.) entre plusieurs clients concurrents.

Le terme sérialisation est utilisé pour faire référence à un type de synchronisation pour un type d'objet (requêtes 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 capacités de synchronisation de WDF :

  • L'utilisation de comptes de référence et le modèle d'objet hiérarchique.
  • Contrôle de flux configurable par le pilote pour les files d'attente d'E/S.
  • Verrouillage de la présentation des objets pour les objets d'appareil et les files d'attente d'E/S.
  • Sérialisation automatique des plug-in et des rappels d'alimentation.

Pour une description détaillée de la synchronisation et de la sérialisation, voir Utilisation de la synchronisation automatique. Pour une explication plus complète, consultez le livre Developing Drivers with Windows Driver Foundation de Microsoft Press.

WDF prend en charge les portées de synchronisation suivantes :

  • Aucune portée (valeur par défaut dans KMDF).
  • Périmètre de l'appareil, WDF acquiert le verrou de présentation de l'objet de l'appareil pour sérialiser les opérations.

La file d'attente ACX par défaut est une file d'attente passive et sérielle sans verrouillage. Le pilote doit terminer l'opération d'E/S avant que la suivante ne soit délivrée.

ACX ne prend pas en charge l'option de portée de la 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 portées de synchronisation différentes.

ACX ne supporte pas la sérialisation de l'étendue de l'appareil. Par défaut, ACX sérialise les requêtes en utilisant une file d'attente d'E/S série sans verrouillage. Chaque circuit et objet de flux a sa propre file d'attente dédiée. Pour plus d'informations sur les systèmes d'exploitation en série, veuillez consulter la rubrique ACX Streaming.

Si un pilote détient un verrou, il ne doit jamais appeler (explicitement ou implicitement) un code hors de son contrôle tant que le verrou n'est pas libéré.

Pour référence historique, le PortCls original utilise une portée de synchronisation comme la synchronisation de la portée de l'appareil WDF, où toutes les E/S pour tous les sous-dispositifs audio créés sur cet appareil passent par le même verrou de sérialisation. Ce type de sérialisation était, et est toujours, 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 verrou différent pour les requêtes d'E/S de position de flux.

Voir aussi

Vue d’ensemble des extensions de classe audio ACX

Résumé des objets ACX

Informations sur la version de l'ACX

Documentation de référence de l’ACX

Communications entre pilotes multi-piles ACX