FltCompletePendedPreOperation 関数 (fltkernel.h)
FltCompletePendedPreOperation は、ミニフィルター ドライバーのプリ操作コールバック (PFLT_PRE_OPERATION_CALLBACK) ルーチンにペンドされた I/O 操作の処理を再開します。
構文
VOID FLTAPI FltCompletePendedPreOperation(
PFLT_CALLBACK_DATA CallbackData,
[in] FLT_PREOP_CALLBACK_STATUS CallbackStatus,
[in, optional] PVOID Context
);
パラメーター
CallbackData
I/O 操作のコールバック データ (FLT_CALLBACK_DATA) 構造体へのポインター。 このパラメーターは必須であり、NULL にすることはできません。
[in] CallbackStatus
この I/O 操作に対してミニフィルター ドライバーが返す状態の値。 FLT_PREOP_PENDING、FLT_PREOP_SYNCHRONIZE、またはFLT_PREOP_DISALLOW_FASTIOすることはできません。 次のいずれかのFLT_PREOP_CALLBACK_STATUS値である必要があります。 これらの値の効果の詳細については、 PFLT_PRE_OPERATION_CALLBACKのリファレンス エントリの「解説」セクションを参照してください。
値 | 意味 |
---|---|
FLT_PREOP_COMPLETE | ミニフィルター ドライバーが I/O 操作を完了しています。 フィルター マネージャーは、呼び出し元またはファイル システムの下のミニフィルター ドライバーに I/O 操作を送信しません。 フィルター マネージャーは、呼び出し元より上のミニフィルター ドライバーの postoperation コールバック (PFLT_POST_OPERATION_CALLBACK) ルーチンのみを呼び出します。 |
FLT_PREOP_SUCCESS_NO_CALLBACK | ミニフィルター ドライバーは、フィルター マネージャーに I/O 操作の制御を返しています。 フィルター マネージャーは、I/O の完了時に対応する操作後コールバックが存在する場合は呼び出しません。 |
FLT_PREOP_SUCCESS_WITH_CALLBACK | ミニフィルター ドライバーは、フィルター マネージャーに I/O 操作の制御を返しています。 フィルター マネージャーは、I/O の完了時に対応する操作後コールバックを呼び出します。 |
[in, optional] Context
CallbackStatus にFLT_PREOP_SUCCESS_WITH_CALLBACKが指定されている場合、このパラメーターは、対応する操作後コールバック ルーチンに渡される省略可能なコンテキスト ポインターです。 CallbackStatus にFLT_PREOP_COMPLETEまたはFLT_PREOP_SUCCESS_NO_CALLBACKが指定されている場合、このパラメーターは NULL である必要があります。
戻り値
なし
解説
ミニフィルター ドライバーの事前操作コールバック (PFLT_PRE_OPERATION_CALLBACK) ルーチンが I/O 操作を作業キューにポストし、FLT_PREOP_PENDINGを返すと、フィルター マネージャーは操作の処理を停止します。 操作が最終的にデキューされて処理されると、ミニフィルター ドライバーは FltCompletePendedPreOperation を呼び出してフィルター マネージャーに操作を返し、ミニフィルター ドライバーで指定された CallbackStatus の指示に基づく処理を再開する必要があります。
CallbackStatus パラメーターがFLT_PREOP_COMPLETEされている場合は、IRQL <= DISPATCH_LEVELで FltCompletePendedPreOperation を呼び出すことができます。 それ以外の場合、 FltCompletePendedPreOperation の呼び出し元は IRQL <= APC_LEVELで実行されている必要があります。
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
Header | fltkernel.h (Fltkernel.h を含む) |
Library | FltMgr.lib |
IRQL | 「解説」を参照してください。 |