HDAUDIO_BUS_INTERFACE_BDL DDI オブジェクトの取得
前に説明したように、オーディオまたはモデム コーデックのファンクション ドライバーは、HD オーディオ バス ドライバーに IRP_MN_QUERY_INTERFACE を送信することによって、HD オーディオ DDI を持つオブジェクトへのカウントされた参照を取得します。
次の表は、HDAUDIO_BUS_INTERFACE_BDL 構造体と、この構造体が定義する HD Audio DDI のバージョンのコンテキスト オブジェクトを取得するために、ファンクション ドライバーが IOCTL に書き込む入力パラメーター値を示しています。
パラメーター | 値 |
---|---|
CONST GUID *InterfaceType |
GUID_HDAUDIO_BUS_INTERFACE_BDL |
USHORT サイズ |
sizeof(HDAUDIO_BUS_INTERFACE_BDL) |
USHORT バージョン |
0x0100 |
PINTERFACE インターフェイス |
HDAUDIO_BUS_INTERFACE_BDL 構造体へのポインター |
PVOID InterfaceSpecificData |
NULL |
関数ドライバーは、HDAUDIO_BUS_INTERFACE_BDL 構造体の記憶域を割り当て、IOCTL 内のこの構造体へのポインターを含みます。 前の表では、 HDAUDIO_BUS_INTERFACE_BDL構造体へのポインターは、タイプ INTERFACE の構造体へのポインターである PINTERFACE 型にキャストされます。 HDAUDIO_BUS_INTERFACE_BDL の最初の 5 つのメンバーの名前と型は、INTERFACE の 5 つのメンバーの名前と型と一致します。 HDAUDIO_BUS_INTERFACE_BDL には、DDI ルーチンへの関数ポインターである追加メンバーが含まれています。 ファンクション ドライバーからの IOCTL の受信に応答して、HD Audio バス ドライバーは HDAUDIO_BUS_INTERFACE_BDL 構造全体にデータを書き込みます。
次の表に、HD Audio バス ドライバーが HDAUDIO_BUS_INTERFACE_BDL 構造体の最初の 5 つのメンバーに書き込む値を示します。
メンバー | 値 |
---|---|
USHORT サイズ |
sizeof(HDAUDIO_BUS_INTERFACE_BDL) |
USHORT バージョン |
0x0100 |
PVOID コンテキスト |
最初の呼び出しパラメータとしてすべての DDI ルーチンに渡す必要があるコンテキスト情報 |
PINTERFACE_REFERENCE InterfaceReference |
コンテキスト オブジェクトの参照カウントをインクリメントするルーチンへのポインタ |
PINTERFACE_DEREFERENCE InterfaceDereference |
コンテキスト オブジェクトの参照カウントをデクリメントするルーチンへのポインタ |
前の表では、Context メンバーは、クライアントが IOCTL から取得する DDI のHDAUDIO_BUS_INTERFACE_BDLバージョンの特定のインスタンスに固有の情報を含むコンテキスト オブジェクトを指しています。 前に説明したように、DDI のルーチンを呼び出すとき、クライアント ファンクション ドライバーは常に Context ポインター値を最初の呼び出しパラメーターとして指定する必要があります。