次の方法で共有


PFNKSPINIRP コールバック関数 (ks.h)

AVStream ミニドライバーのルーチンは、ピンのアクティビティが実行され、これらの IRP を受信すると呼び出されます。

構文

PFNKSPINIRP Pfnkspinirp;

NTSTATUS Pfnkspinirp(
  [in] PKSPIN Pin,
  [in] PIRP Irp
)
{...}

パラメーター

[in] Pin

作成された KSPIN へのポインター。

[in] Irp

Pinの IRP へのポインター。

戻り値

ルーチンが成功した場合、操作は成功することが保証されます。 STATUS_SUCCESSまたはSTATUS_PENDINGを返します。

備考

IRP 形容
IRP_MJ_CREATE 通常、このルーチンは、ピンに関連付けられているコンテキストとリソースを初期化するミニドライバーによって使用されます。 ミニドライバーは、KSPIN_DISPATCH 構造体の Create メンバーで、このルーチンのアドレスを指定します。 このルーチンは、ピンの作成時に呼び出されます。 このルーチンが呼び出される時点で、ファイル オブジェクトには関連するコンテキストがあり、KS オブジェクト ヘッダーが割り当てられています。 通常、この関数は、ピンに関連付けられているコンテキストとリソースを初期化するミニドライバーによって提供されます。 この関数では、フィルター 制御ミューテックスが保持されます。 この関数は IRQL = PASSIVE_LEVEL で呼び出されます。 このルーチンは省略可能です。 ルーチンが成功した場合、作成操作は成功することが保証されます。 STATUS_SUCCESSまたはSTATUS_PENDINGを返します。 ミニドライバーがSTATUS_PENDINGを返した場合、AVStream はすぐに IRP_MJ_CREATE を完了しません。 ただし、STATUS_PENDINGを返す前に、ミニドライバーは IoMarkIrpPending 呼び出す必要があります。 作成の処理が完了したら、ミニドライバーは IRP の状態コードを設定し、KsCompletePendingRequestを呼び出す必要があります。
IRP_MJ_CLOSE ミニドライバーは、その KSPIN_DISPATCH 構造体の Close メンバーで、このルーチンのアドレスを指定します。 ルーチンが呼び出される時点で、ピンに登録されているイベントはすべて解放されていますが、それ以外の場合はオブジェクトはそのままです。 この関数では、フィルター 制御ミューテックスが保持されます。 ミューテックスの詳細については、AVStream のミューテックスを参照してください。 このルーチンは省略可能です。

必要条件

要件 価値
ターゲット プラットフォーム デスクトップ
ヘッダー ks.h (Ks.h を含む)
IRQL PASSIVE_LEVEL (「解説」セクションを参照)

関連項目

IoMarkIrpPending

KSPIN_DISPATCH

KsCompletePendingRequest