Freigeben über


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.