PFNKSFILTERIRP コールバック関数 (ks.h)
AVStream ミニドライバーの AVStrMiniFilterCreate ルーチンは、フィルターが IRP を受け取ったときに呼び出されます。
構文
PFNKSFILTERIRP Pfnksfilterirp;
NTSTATUS Pfnksfilterirp(
[in] PKSFILTER Filter,
[in] PIRP Irp
)
{...}
パラメーター
[in] Filter
KSFILTERへのポインター。
[in] Irp
フィルターの IRP へのポインター。
戻り値
ルーチンが成功した場合は、STATUS_SUCCESSまたはエラー コードを返します。
備考
IRP | 形容 |
---|---|
IRP_MJ_CREATE | 通常、このルーチンは、フィルターに関連付けられているコンテキストとリソースを初期化するミニドライバーによって使用されます。 ミニドライバーは、その KSFILTER_DISPATCH 構造体の Create メンバーで、このルーチンのアドレスを指定します。 ルーチンが呼び出される時点で、ファイル オブジェクトには関連するコンテキストがあり、KS オブジェクト ヘッダーが割り当てられています。 このルーチンは、IRQL = PASSIVE_LEVELで呼び出され、デバイス ミューテックスが保持されます。 ルーチンが成功した場合、作成操作は成功することが保証されます。 STATUS_SUCCESS返すか、フィルターの作成の試行から返されたエラー コードを返します。 STATUS_PENDINGは法的リターン コードでもあります。 ミニドライバーがSTATUS_PENDINGを返した場合、AVStream はすぐに IRP_MJ_CREATE を完了しません。 STATUS_PENDINGを返す前に、ミニドライバーは IoMarkIrpPending 呼び出す必要があります。 作成の処理が完了したら、ミニドライバーは IRP の状態コードを設定し、KsCompletePendingRequest を呼び出す必要があります。 このルーチンは省略可能です。 |
IRP_MJ_CLOSE | ミニドライバーは、KSFILTER_DISPATCH 構造体の Close メンバーで、このルーチンのアドレスを指定します。 ルーチンが呼び出された時点で、フィルターに登録されているイベントはすべて解放されますが、それ以外の場合はオブジェクトはそのままです。 このルーチンは、IRQL = PASSIVE_LEVELで呼び出され、デバイス ミューテックスが保持されます。 ミューテックスの詳細については、AVStream のミューテックスのを参照してください。 このルーチンは省略可能です。 STATUS_SUCCESSまたはSTATUS_PENDINGを返します。 ミニドライバーがSTATUS_PENDINGを返した場合、AVStream はすぐに IRP_MJ_CLOSE を完了しません。 ただし、STATUS_PENDINGを返す前に、ミニドライバーは IoMarkIrpPending 呼び出す必要があります。 閉じるの処理が完了したら、ミニドライバーは IRP の状態コードを設定し、KsCompletePendingRequest を呼び出す必要があります。 |
必要条件
要件 | 価値 |
---|---|
ターゲット プラットフォーム の | デスクトップ |
ヘッダー | ks.h (Ks.h を含む) |
IRQL | PASSIVE_LEVEL (「解説」セクションを参照) |