次の方法で共有


HDAUDIO_BUS_INTERFACE DDI オブジェクトの取得

次の表は、 HDAUDIO_BUS_INTERFACE 構造体と、この構造体が定義する HD Audio DDI のバージョンのコンテキスト オブジェクトを取得するために、ファンクション ドライバーが IRP_MN_QUERY_INTERFACE IOCTL に書き込む入力パラメーター値を示しています。

パラメーター

CONST GUID *InterfaceType

GUID_HDAUDIO_BUS_INTERFACE

USHORT サイズ

sizeof(HDAUDIO_BUS_INTERFACE)

USHORT バージョン

0x0100

PINTERFACE インターフェイス

HDAUDIO_BUS_INTERFACE 構造体へのポインター

PVOID InterfaceSpecificData

NULL

関数ドライバーは、 HDAUDIO_BUS_INTERFACE 構造体の記憶域を割り当て、IOCTL 内のこの構造体へのポインターを含みます。 前の表では、 HDAUDIO_BUS_INTERFACE 構造体へのポインターは、タイプ INTERFACE の構造体へのポインターである PINTERFACE 型にキャストされます。 HDAUDIO_BUS_INTERFACE の最初の 5 つのメンバーの名前と型は、 INTERFACE の 5 つのメンバーの名前と型と一致します。 HDAUDIO_BUS_INTERFACE には、DDI ルーチンへの関数ポインターである追加のメンバーが含まれています。 ファンクション ドライバーから IOCTL を受け取った場合、HD オーディオ バス ドライバーは、 HDAUDIO_BUS_INTERFACE 構造体全体を埋めます。

次の表に、HD Audio バス ドライバーが HDAUDIO_BUS_INTERFACE 構造体の最初の 5 つのメンバーに書き込む値を示します。

メンバー

USHORT サイズ

sizeof(HDAUDIO_BUS_INTERFACE)

USHORT バージョン

0x0100

PVOID コンテキスト

すべての DDI ルーチンに最初の呼び出しパラメーターとして渡す必要があるコンテキスト情報

PINTERFACE_REFERENCE InterfaceReference

コンテキスト オブジェクトの参照カウントをインクリメントするルーチンへのポインタ

PINTERFACE_DEREFERENCE InterfaceDereference

コンテキスト オブジェクトの参照カウントをデクリメントするルーチンへのポインタ

前の表では、 コンテクスト メンバーは、クライアントが IOCTL から取得するベースライン HD オーディオ DDI の特定のインスタンスに固有の情報を含むコンテキスト オブジェクトを指しています。 DDI のいずれかのルーチンを呼び出す場合、クライアント ファンクション ドライバーは常に コンテクスト ポインター値を最初の呼び出しパラメーターとして指定する必要があります。 コンテキスト情報はクライアントに対して不透明です。 HD オーディオ バス ドライバーは、クライアントごとに異なるコンテキスト オブジェクトを作成します。 コンテキスト オブジェクトが不要になった場合、クライアントは、前の表に示す InterfaceDereference ルーチンを呼び出してコンテキスト オブジェクトを解放します。 必要に応じて、クライアントは InterfaceReference ルーチンを呼び出してオブジェクトへの追加参照を作成できますが、クライアントは必要なくなったときにこれらの参照を解放する必要があります。