Abrufen eines HDAUDIO_BUS_INTERFACE_V2 DDI-Objekts
Die folgende Tabelle zeigt die Eingabeparameterwerte, die der Funktionstreiber in die IRP_MN_QUERY_INTERFACE IOCTL schreibt, um eine HDAUDIO_BUS_INTERFACE_V2-Struktur und ein Kontextobjekt für die Version des HD Audio DDI abzurufen, die diese Struktur definiert.
Parameter | Wert |
---|---|
CONST GUID *InterfaceType |
GUID_HDAUDIO_BUS_INTERFACE_V2 |
USHORT-Größe |
sizeof(HDAUDIO_BUS_INTERFACE_V2) |
USHORT-Version |
0x0100 |
PINTERFACE-Schnittstelle |
Zeiger auf HDAUDIO_BUS_INTERFACE_V2-Struktur |
PVOID InterfaceSpecificData |
NULL |
Der Funktionstreiber ordnet den Speicher für die HDAUDIO_BUS_INTERFACE_V2-Struktur zu und schließt einen Zeiger auf diese Struktur in die IOCTL ein. In der vorherigen Tabelle wird der Zeiger auf die HDAUDIO_BUS_INTERFACE_V2-Struktur in den Typ PINTERFACE umgewandelt, der ein Zeiger auf eine Struktur vom Typ INTERFACE ist. Die Namen und Typen der ersten fünf Member von HDAUDIO_BUS_INTERFACE_V2 stimmen mit denen der fünf Member von INTERFACE überein. HDAUDIO_BUS_INTERFACE_V2 enthält zusätzliche Member, die Funktionszeiger auf die DDI-Routinen sind. Als Reaktion auf den Empfang der IOCTL vom Funktionstreiber füllt der HD-Audiobustreiber die HDAUDIO_BUS_INTERFACE_V2-Struktur auf.
In der folgenden Tabelle sind die Werte aufgeführt, die der HD Audio Bus-Treiber in die ersten fünf Member der HDAUDIO_BUS_INTERFACE_V2-Struktur schreibt.
Member | Wert |
---|---|
USHORT-Größe |
sizeof(HDAUDIO_BUS_INTERFACE_V2) |
USHORT-Version |
0x0100 |
PVOID-Kontext |
Kontextinformationen, die als erster Aufrufparameter an jede DDI-Routine übergeben werden müssen. |
PINTERFACE_REFERENCE InterfaceReference |
Ein Zeiger auf eine Routine, die die Verweisanzahl des Kontextobjekts inkrementiert. |
PINTERFACE_DEREFERENCE InterfaceDereference |
Ein Zeiger auf eine Routine, die die Verweisanzahl des Kontextobjekts verringert. |
In der vorherigen Tabelle zeigt der Context-Member auf ein Kontextobjekt, das Informationen enthält, die spezifisch für die jeweilige instance der Baseline hd Audio DDI sind. Der Client ruft diese geplante HD-Audio-DDI von der IOCTL ab. Wenn der Clientfunktionstreiber eine der Routinen im DDI aufruft, muss er immer den Kontextmemberwert als ersten Aufrufparameter angeben. Die Kontextinformationen sind für den Client nicht transparent. Der HD Audio Bus-Treiber erstellt für jeden Client ein anderes Kontextobjekt. Wenn das Kontextobjekt nicht mehr benötigt wird, gibt der Client das Kontextobjekt frei, indem er die in der vorherigen Tabelle gezeigte InterfaceDereference-Routine aufruft. Wenn dies erforderlich ist, kann ein Client zusätzliche Verweise auf das Objekt erstellen, indem er die InterfaceDereference-Routine aufruft, aber der Client ist für die Freigabe dieser Verweise verantwortlich, wenn er sie nicht mehr benötigt.