Obtention d’un objet DDI HDAUDIO_BUS_INTERFACE

Le tableau suivant montre les valeurs des paramètres d’entrée que le pilote de fonction écrit dans le IRP_MN_QUERY_INTERFACE IOCTL pour obtenir une structure HDAUDIO_BUS_INTERFACE et un objet de contexte pour la version du DDI audio HD défini par cette structure.

Paramètre Valeur

GUID CONST *InterfaceType

GUID_HDAUDIO_BUS_INTERFACE

Taille USHORT

sizeof(HDAUDIO_BUS_INTERFACE)

Version USHORT

0x0100

Interface PINTERFACE

Pointeur vers HDAUDIO_BUS_INTERFACE structure

Interface PVOIDSpecificData

NULL

Le pilote de fonction alloue le stockage pour la structure HDAUDIO_BUS_INTERFACE et inclut un pointeur vers cette structure dans le IOCTL. Dans le tableau précédent, le pointeur vers la structure HDAUDIO_BUS_INTERFACE est casté 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 correspondent à ceux des cinq membres d’INTERFACE. HDAUDIO_BUS_INTERFACE contient des membres supplémentaires qui sont des pointeurs de fonction vers les routines DDI. En réponse à la réception du IOCTL à partir du pilote de fonction, le pilote de bus Audio HD remplit l’ensemble de la structure HDAUDIO_BUS_INTERFACE .

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 .

Membre Valeur

Taille USHORT

sizeof(HDAUDIO_BUS_INTERFACE)

Version USHORT

0x0100

Contexte PVOID

Informations de contexte qui doivent être passées en tant que 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 à la instance particulière du DDI audio HD de base que le client obtient auprès du IOCTL. Lors de l’appel d’une des routines dans le DDI, le pilote de fonction client doit toujours spécifier la valeur du pointeur de contexte comme premier paramètre d’appel. Les informations de contexte sont opaques pour le client. Le pilote de bus Audio HD crée un objet de contexte différent pour chaque client. Lorsque l’objet de contexte n’est plus requis, le client libère l’objet de contexte en appelant la routine InterfaceDereference indiquée dans le tableau précédent. Si nécessaire, un client peut créer des références supplémentaires à l’objet en appelant la routine InterfaceReference , mais le client est responsable de la publication de ces références lorsqu’il n’en a plus besoin.