Obtention d’un objet DDI HDAUDIO_BUS_INTERFACE_V2

Le tableau suivant montre les valeurs de paramètre d’entrée que le pilote de fonction écrit dans le IRP_MN_QUERY_INTERFACE IOCTL pour obtenir une structure HDAUDIO_BUS_INTERFACE_V2 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_V2

Taille USHORT

sizeof(HDAUDIO_BUS_INTERFACE_V2)

Version USHORT

0x0100

Interface PINTERFACE

Pointeur vers HDAUDIO_BUS_INTERFACE_V2 structure

PVOID InterfaceSpecificData

NULL

Le pilote de fonction alloue le stockage pour la structure HDAUDIO_BUS_INTERFACE_V2 et inclut un pointeur vers cette structure dans le IOCTL. Dans le tableau précédent, le pointeur vers la structure HDAUDIO_BUS_INTERFACE_V2 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_V2 correspondent à ceux des cinq membres d’INTERFACE. HDAUDIO_BUS_INTERFACE_V2 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 la structure HDAUDIO_BUS_INTERFACE_V2 .

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_V2 .

Membre Valeur

Taille USHORT

sizeof(HDAUDIO_BUS_INTERFACE_V2)

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 à la instance particulière de la base de données AUDIO HD de base. Le client obtient cette DDI audio HD de base à partir du IOCTL. Lorsque le pilote de fonction client appelle l’une des routines dans la DDI, il doit toujours spécifier la valeur de membre context 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 nécessaire, 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 InterfaceDereference , mais le client est responsable de la publication de ces références lorsqu’il n’en a plus besoin.