Share via


Abrufen eines HDAUDIO_BUS_INTERFACE DDI-Objekts

Die folgende Tabelle zeigt die Eingabeparameterwerte, die der Funktionstreiber in die IRP_MN_QUERY_INTERFACE IOCTL schreibt, um eine HDAUDIO_BUS_INTERFACE-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

USHORT-Größe

sizeof(HDAUDIO_BUS_INTERFACE)

USHORT-Version

0x0100

PINTERFACE-Schnittstelle

Zeiger auf HDAUDIO_BUS_INTERFACE Struktur

PVOID-SchnittstelleSpecificData

NULL

Der Funktionstreiber weist den Speicher für die HDAUDIO_BUS_INTERFACE-Struktur zu und enthält einen Zeiger auf diese Struktur in der IOCTL. In der obigen Tabelle wird der Zeiger auf die HDAUDIO_BUS_INTERFACE-Struktur in den Typ PINTERFACE umgewandelt, bei dem es sich um einen Zeiger auf eine Struktur vom Typ INTERFACE handelt. Die Namen und Typen der ersten fünf Member von HDAUDIO_BUS_INTERFACE entsprechen denen der fünf Member von INTERFACE. HDAUDIO_BUS_INTERFACE enthält zusätzliche Member, die Funktionszeiger auf die DDI-Routinen sind. Als Reaktion auf den Empfang des IOCTL vom Funktionstreiber füllt der HD Audio-Bustreiber die gesamte HDAUDIO_BUS_INTERFACE-Struktur aus.

Die folgende Tabelle zeigt die Werte, die der HD Audio-Bustreiber in die ersten fünf Member der HDAUDIO_BUS_INTERFACE-Struktur schreibt.

Member Wert

USHORT-Größe

sizeof(HDAUDIO_BUS_INTERFACE)

USHORT-Version

0x0100

PVOID-Kontext

Kontextinformationen, die als erster Aufrufparameter an jede DDI-Routine übergeben werden müssen

PINTERFACE_REFERENCE InterfaceReference

Zeiger auf eine Routine, die die Verweisanzahl des Kontextobjekts erhöht

PINTERFACE_DEREFERENCE InterfaceDereference

Zeiger auf eine Routine, die die Verweisanzahl des Kontextobjekts verringert

In der obigen Tabelle verweist das Context-Element auf ein Kontextobjekt, das Informationen enthält, die für den jeweiligen instance des HD Audio-Baseline-DDI spezifisch sind, den der Client aus dem IOCTL erhält. Beim Aufrufen einer der Routinen im DDI muss der Clientfunktionstreiber immer den Context-Zeigerwert als ersten Aufrufparameter angeben. Die Kontextinformationen sind für den Client undurchsichtig. Der HD Audio-Bustreiber erstellt für jeden Client ein anderes Kontextobjekt. Wenn das Kontextobjekt nicht mehr erforderlich ist, gibt der Client das Kontextobjekt frei, indem er die In der vorherigen Tabelle gezeigte InterfaceDereference-Routine aufruft. Bei Bedarf kann ein Client zusätzliche Verweise auf das -Objekt erstellen, indem er die InterfaceReference-Routine aufruft, aber der Client ist für die Freigabe dieser Verweise verantwortlich, wenn er sie nicht mehr benötigt.