Abrufen eines HDAUDIO_BUS_INTERFACE_BDL DDI-Objekts
Wie bereits erläutert, ruft der Funktionstreiber für einen Audio- oder Modemcodec einen gezählten Verweis auf ein Objekt mit einem HD Audio DDI ab, indem ein IRP_MN_QUERY_INTERFACE IOCTL an den HD Audio-Bustreiber gesendet wird.
Die folgende Tabelle zeigt die Eingabeparameterwerte, die der Funktionstreiber in das IOCTL schreibt, um eine HDAUDIO_BUS_INTERFACE_BDL-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_BDL |
USHORT-Größe |
sizeof(HDAUDIO_BUS_INTERFACE_BDL) |
USHORT-Version |
0x0100 |
PINTERFACE-Schnittstelle |
Zeiger auf HDAUDIO_BUS_INTERFACE_BDL Struktur |
PVOID-SchnittstelleSpecificData |
NULL |
Der Funktionstreiber weist den Speicher für die HDAUDIO_BUS_INTERFACE_BDL-Struktur zu und enthält einen Zeiger auf diese Struktur in der IOCTL. In der vorherigen Tabelle wird der Zeiger auf die HDAUDIO_BUS_INTERFACE_BDL-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_BDL entsprechen denen der fünf Member von INTERFACE. HDAUDIO_BUS_INTERFACE_BDL 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_BDL-Struktur aus.
Die folgende Tabelle zeigt die Werte, die der HD Audio-Bustreiber in die ersten fünf Member der HDAUDIO_BUS_INTERFACE_BDL-Struktur schreibt.
Member | Wert |
---|---|
USHORT-Größe |
sizeof(HDAUDIO_BUS_INTERFACE_BDL) |
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 die jeweilige instance der HDAUDIO_BUS_INTERFACE_BDL Version des DDI spezifisch sind, die der Client von der IOCTL erhält. Wie bereits erläutert, muss der Clientfunktionstreiber beim Aufrufen einer der Routinen im DDI immer den Context-Zeigerwert als ersten Aufrufparameter angeben.