Obtention d’un objet DDI HDAUDIO_BUS_INTERFACE_BDL

Comme expliqué précédemment, le pilote de fonction pour un codec audio ou modem obtient une référence comptée à un objet avec un DDI Audio HD en envoyant un IRP_MN_QUERY_INTERFACE IOCTL au pilote de bus Audio HD.

Le tableau suivant montre les valeurs de paramètre d’entrée que le pilote de fonction écrit dans l’IOCTL pour obtenir une structure HDAUDIO_BUS_INTERFACE_BDL et un objet de contexte pour la version de la DDI audio HD définie par cette structure.

Paramètre Valeur

GUID CONST *InterfaceType

GUID_HDAUDIO_BUS_INTERFACE_BDL

Taille USHORT

sizeof(HDAUDIO_BUS_INTERFACE_BDL)

Version USHORT

0x0100

Interface PINTERFACE

Pointeur vers HDAUDIO_BUS_INTERFACE_BDL structure

PVOID InterfaceSpecificData

NULL

Le pilote de fonction alloue le stockage pour la structure HDAUDIO_BUS_INTERFACE_BDL et inclut un pointeur vers cette structure dans le IOCTL. Dans le tableau précédent, le pointeur vers la structure HDAUDIO_BUS_INTERFACE_BDL est converti en type PINTERFACE, qui est un pointeur vers une structure de type INTERFACE. Les noms et les types des cinq premiers membres de HDAUDIO_BUS_INTERFACE_BDL correspondent à ceux des cinq membres d’INTERFACE. HDAUDIO_BUS_INTERFACE_BDL contient des membres supplémentaires qui sont des pointeurs de fonction vers les routines DDI. En réponse à la réception de l’IOCTL à partir du pilote de fonction, le pilote de bus AUDIO HD remplit l’intégralité de la structure HDAUDIO_BUS_INTERFACE_BDL .

Le tableau suivant montre les valeurs que le pilote de bus Audio HD écrit dans les cinq premiers membres de la structure HDAUDIO_BUS_INTERFACE_BDL .

Membre Valeur

Taille USHORT

sizeof(HDAUDIO_BUS_INTERFACE_BDL)

Version USHORT

0x0100

Contexte PVOID

Informations de contexte qui doivent être passées comme premier paramètre d’appel à chaque routine DDI

PINTERFACE_REFERENCE InterfaceReference

Pointeur vers une routine qui incrémente le nombre de références de l’objet de contexte

PINTERFACE_DEREFERENCE InterfaceDereference

Pointeur vers une routine qui décrémente le nombre de références de l’objet de contexte

Dans le tableau précédent, le membre Context pointe vers un objet de contexte qui contient des informations spécifiques à l’instance spécifique de la version HDAUDIO_BUS_INTERFACE_BDL de la DDI que le client obtient auprès de l’IOCTL. Comme expliqué précédemment, lors de l’appel de l’une des routines dans la DDI, le pilote de fonction client doit toujours spécifier la valeur du pointeur de contexte comme premier paramètre d’appel.