Terminologie audio WDM
Cette section décrit les différences de terminologie entre l’architecture de pilote audio WDM (Microsoft Windows Driver Model) et l’architecture générique du pilote windows en couches. L’architecture de pilote générique est illustrée par les pilotes de port/miniport SCSI (voir Architecture du pilote de stockage).
Les termes définis par les architectures de pilote audio générique et WDM sont similaires, mais ils présentent des différences importantes, comme décrit ci-dessous.
Pilote Miniport (générique)
Le pilote miniport (générique) est le pilote spécifique au matériel d’un adaptateur qui réside sur un bus système (par exemple, PCI ou ISA). Ce pilote a un point d’entrée unique, DriverEntry, et inscrit une table de fonctions avec un pilote de port. Cette table de fonctions sert d’interface de bord supérieur du pilote miniport.
Le pilote miniport se trouve sous le pilote de port dans la pile des pilotes. Autrement dit, tous les appels au pilote miniport sont effectués à partir du pilote de port et tous les appels en dehors du pilote miniport sont à l’interface de bord inférieur du pilote de port.
La figure suivante illustre la signification des termes pile, interface de bord supérieur et interface à bord inférieur , car ils sont utilisés dans ce contexte. Le bloc représentant le pilote de port est empilé au-dessus du bloc représentant le pilote miniport. Par conséquent, le pilote miniport se trouve sous le pilote de port dans la « pile ».
Les pilotes de port et de miniport communiquent via les interfaces logicielles qu’ils exposent les uns aux autres. Dans la figure précédente, ces interfaces sont associées au bord inférieur du bloc représentant le pilote de port et au bord supérieur du bloc représentant le pilote miniport. Cette représentation est la source des termes « interface de bord inférieur » et « interface de bord supérieur ».
Pilote de port (générique)
Le pilote de port (générique) entoure un pilote miniport.
Pilote de port :
Implémente les filtres de streaming WDM.
Fournit une interface commune au reste du système d’exploitation.
Gère les demandes d’E/S à partir du système et les rediffuse en tant qu’appels dans la table de fonctions du pilote miniport.
Fournit au pilote miniport une bibliothèque de fonctions de prise en charge (interface de bord inférieur du pilote de port).
Le pilote de port masque un grand nombre des détails du système d’exploitation du pilote miniport, et le pilote miniport masque les spécificités du matériel sous-jacent du pilote de port. L’implémentation du pilote de port peut subir des modifications pour différentes versions du système d’exploitation, mais l’interface du pilote de port avec le pilote miniport reste plus ou moins inchangée, ce qui permet au pilote miniport d’être largement indépendant de la plateforme.
Minidriver (générique)
Le minidriver (générique) représente un composant matériel sur un bus. Le minidriver utilise le pilote de bus pour communiquer avec l’appareil physique via le bus, et il lie le pilote de bus et un ou plusieurs pilotes de classe.
Les pilotes de classe aident le minidriver à présenter l’appareil physique aux clients en tant que type de périphérique logique. Dans les environnements WDM, un minidriver reçoit généralement les demandes au format IRP de la part des pilotes de classe et envoie des requêtes dans le formulaire IRP à un pilote de bus.
Un minidriver peut également avoir à communiquer avec plusieurs pilotes de classe. Un exemple de minidriver qui se lie à plusieurs pilotes de classe est un minidriver pour un lecteur de CD-ROM sur un bus IEEE 1394. Il peut être lié à un pilote de système de fichiers afin que le lecteur soit accessible à partir du système de fichiers. Toutefois, il est également lié à un pilote système Redbook afin que l’audio puisse être diffusé en continu à partir de DISQUES.
Pilote de bus (générique)
Le pilote de bus (générique) permet aux minidrivers d’accéder à un bus physique. La couche d’abstraction matérielle Microsoft Windows (HAL) est parfois appelée pilote de bus système , car elle fournit l’accès au bus système. Pour plus d’informations, consultez Pilotes de bus.
Pilote de classe (générique)
Le pilote de classe (générique) implémente un comportement commun à une classe d’appareils similaires.
Pilote de classe :
Élimine la duplication des fonctionnalités dans les pilotes spécifiques au matériel.
N’est pas spécifique au bus.
N’a pas connaissance des problèmes de ressources (par exemple, DMA et interruptions).
Pilote Miniport (AUDIO WDM)
Le pilote miniport (audio WDM) implémente une interface spécifique à une fonction pour une fonction sur un adaptateur audio carte qui réside sur un bus système. Un pilote miniport est un composant d’un pilote d’adaptateur. Il n’est pas reconnu comme pilote par le système d’exploitation. À cet égard, un pilote miniport audio diffère d’un pilote miniport générique.
Contrairement aux pilotes miniport génériques, les pilotes de miniport audio n’implémentent pas DriverEntry, ne sont pas enregistrés et ne s’appuient pas entièrement sur leurs pilotes de port respectifs pour la prise en charge. Plusieurs pilotes de miniport audio qui traitent plusieurs fonctions peuvent être liés à un seul pilote d’adaptateur (et associés à un seul objet de périphérique).
Pilote d’adaptateur (audio WDM)
Le pilote d’adaptateur (audio WDM) sert de conteneur pour tous les pilotes miniport associés à un adaptateur donné. Ce pilote d’adaptateur est reconnu comme pilote par le système d’exploitation et est contenu dans son propre fichier .sys.
Le pilote de l’adaptateur audio se compose d’un ensemble de pilotes miniport et d’un code supplémentaire qui résout les problèmes d’initialisation. Par exemple, un pilote d’adaptateur implémente un point d’entrée DriverEntry .
Pilote de port (audio WDM)
Le pilote de port (audio WDM) implémente un filtre KS pour le compte d’un pilote miniport et fonctionne dans le contexte d’un pilote de classe de port. Le pilote de port expose le code spécifique à la fonction du pilote miniport sous la forme d’un filtre KS au système et est chargé d’implémenter des fonctionnalités indépendantes de l’adaptateur.
Contrairement au pilote de port générique, le pilote de port audio partage l’objet de périphérique et est donc instancié différemment. Un pilote de port audio ressemble également davantage à un pilote de classe générique qu’à un pilote de port générique en ce qu’il implémente le comportement attendu d’une classe de périphériques (il n’est pas indépendant du bus).
Pilote de classe de port (audio WDM)
Le pilote de classe de port (audio WDM) sert de conteneur pour une collection de pilotes de port, chacun d’entre eux fournissant la prise en charge d’un type différent de fonction matérielle audio. La figure suivante montre les relations entre la classe de port audio et les pilotes d’adaptateur.
Un pilote d’adaptateur gère un adaptateur carte pouvant contenir plusieurs fonctions matérielles différentes. Comme indiqué dans la figure précédente, le pilote d’adaptateur contient un pilote miniport pour gérer chaque type de fonction matérielle. De même, le pilote de classe de port est conçu pour assurer la prise en charge des cartes adaptateurs avec plusieurs fonctions matérielles. Le pilote de classe de port fournit un pilote de port pour chacun des types de fonctions bien définis qu’il prend en charge. Le pilote d’adaptateur lie son pilote miniport pour une fonction particulière au pilote de port correspondant pour ce type de fonction. Le pilote de port de chaque fonction gère la communication avec les clients audio WDM qui utilisent la fonction. Le pilote miniport contient tout le code spécifique au matériel pour la gestion de cette fonction.
Le pilote de classe de port (audio WDM) fonctionne principalement comme un conteneur pour plusieurs sous-appareils associés à un seul objet d’appareil. Les pilotes de bus créent un seul objet de périphérique physique (PDO) pour chaque nœud Plug-and-Play (PnP) qu’ils énumèrent.
Dans le cas d’une carte audio, un seul nœud PnP contient souvent plusieurs fonctions audio. Pour exposer les différentes fonctions associées à un nœud en tant que périphériques distincts, vous devez généralement écrire un pilote de bus pour l’adaptateur. Le pilote de bus énumère les fonctions matérielles et crée les PPO correspondantes. Dans ce scénario, un ou plusieurs pilotes spécifiques à une fonction doivent être liés aux PPO et négocier avec le pilote de bus l’accès aux ressources partagées sur l’adaptateur.
Le pilote de classe de port utilise la capacité du pilote de diffusion en continu du noyau à exposer différents aspects d’un objet de périphérique unique afin que le système d’exploitation reconnaisse l’appareil comme un ensemble de sous-appareils distincts.
Une chaîne de référence est ajoutée au nom de l’appareil pour spécifier le sous-appareil souhaité. Le pilote de diffusion en continu du noyau distribue les IRP de création en fonction de cette chaîne de référence. Une fois qu’un objet fichier est créé, le pilote de diffusion en continu du noyau fournit la distribution des runtimes d’intégration ciblés sur l’objet de fichier qui représente le sous-appareil. En outre, le pilote de classe de port implémente un modèle COM pour empaqueter des sous-appareils.
Un pilote d’adaptateur instancie un pilote de port et un pilote miniport et les lie ensemble en passant un pointeur au pilote miniport en tant que paramètre à la fonction d’initialisation du pilote de port (voir l’exemple de code dans Création de sous-appareil). La pile de pilotes port/miniport résultante constitue un filtre KS qui représente l’un des types de sous-appareil pris en charge par le pilote de classe de port.
La fonction PcRegisterSubdevice du pilote de classe de port enregistre le sous-appareil, qui est perçu comme un appareil par le reste du système. Le pilote de port reçoit des IRP de création ciblant l’objet de périphérique, mais uniquement pour les IRP spécifiés par la chaîne de référence sous laquelle le sous-appareil est inscrit. Le pilote de port reçoit également les runtimes d’intégration ciblant les objets de fichier associés au sous-appareil. Le pilote de port est responsable du comportement du sous-appareil en tant que filtre KS et de la communication appropriée avec le pilote miniport.
Pour plus d’informations sur la conception de pilotes pour les cartes audio multifonctions, consultez Périphériques audio multifonctions.