次の方法で共有


PVIDEO_HW_QUERY_INTERFACE コールバック関数 (video.h)

HwVidQueryInterface は、子デバイスが呼び出すことができるミニポート ドライバーによって実装された機能インターフェイスを返します。

構文

PVIDEO_HW_QUERY_INTERFACE PvideoHwQueryInterface;

VP_STATUS PvideoHwQueryInterface(
  PVOID HwDeviceExtension,
  PQUERY_INTERFACE QueryInterface
)
{...}

パラメーター

HwDeviceExtension

ミニポート ドライバーのアダプターごとの記憶域へのポインター。 詳細については、「 デバイス拡張機能」を参照してください。

QueryInterface

ミニポート ドライバーがサポートするインターフェイスに関する情報を返す必要がある QUERY_INTERFACE 構造体へのポインター。

戻り値

HwVidQueryInterface は成功時にNO_ERRORを返す必要があります。それ以外の場合は、適切なエラー コードを返す必要があります。 たとえば、操作を完了するためにメモリを割り当てることができない場合、ミニポート ドライバーはERROR_OUTOFMEMORYを返す必要があります。

注釈

HwVidQueryInterface は、ビデオ ミニポート ドライバーと子デバイスのドライバーの間の通信メカニズムを公開します。 このようなメカニズムを公開するミニポート ドライバーは、この関数を実装する必要があります。

ビデオ ポートは、IRP_MN_QUERY_INTERFACE要求を受信すると HwVidQueryInterface を呼び出します。 ミニポート ドライバーが呼び出しに失敗した場合、ビデオ ポート ドライバーは、ミニポート ドライバーのデバイスの親に要求を渡します。

HwVidQueryInterface は、QueryInterface-Interface> が指す INTERFACE 構造体のメンバーを次のように入力する必要があります。

  • [サイズ] を INTERFACE 構造体のバイト数に設定します。 この値は 、QueryInterface->Size で指定されたバイト数を超えることはできません。
  • [バージョン] を、ミニポート ドライバーによって返されるインターフェイスのバージョンに設定します。 ミニポート ドライバーは、QueryInterface-> バージョンで子ドライバーによって要求されたバージョンと最も一致する必要があります。
  • インターフェイスのミニポート ドライバー定義コンテキストを指すコンテキストを設定します。 通常、ミニポート ドライバーは、HwDeviceExtension によって識別されるデバイス拡張機能を指すコンテキストを設定します。
  • このインターフェイスのミニポート ドライバーによって実装された参照および逆参照ルーチンを指す InterfaceReferenceInterfaceDereference を初期化します。
  • 公開されているインターフェイスの適切なルーチンを指す追加のインターフェイス固有のメンバーをすべて初期化します。
インターフェイスを返すミニポート ドライバーは、 QueryInterface->Interface.InterfaceReference を呼び出すことによってインターフェイスを参照します。 インターフェイスを要求する子ドライバーは、 ドライバーが QueryInterface->Interface.InterfaceDereference を呼び出すことによってインターフェイスを必要としなくなった場合に逆参照を行います。 子ドライバーがインターフェイスを別のコンポーネントに渡す場合、子は別の参照を取り出す役割を担い、もう一方のコンポーネントはインターフェイスへのアクセスが不要になったときに追加の参照を削除します。 参照を使用すると、親は、子デバイスでインターフェイスが引き続き必要な場合と、その結果、親がインターフェイスに関連付けられたリソースを解放できるタイミングを判断できます。

子デバイスのドライバーは、ビデオ ポート ドライバーの知識なしで いつでも HwVidQueryInterface によって公開される関数を介してミニポート ドライバーに呼び出すことができます。 したがって、ミニポート ドライバーは、 HwVidQueryInterface によって公開されるすべての関数で、ビデオ ポート ドライバーによって維持されるデバイス ロックを取得して解放することによって、それ自体へのアクセスを同期する必要があります。

子デバイスは 、HwVidGetVideoChildDescriptor によって列挙されます。

HwVidQueryInterface をページング可能にする必要があります。

要件

要件
対象プラットフォーム デスクトップ
Header video.h (Video.h を含む)

こちらもご覧ください

HwVidGetVideoChildDescriptor

QUERY_INTERFACE

VideoPortAcquireDeviceLock

VideoPortReleaseDeviceLock