FltSetCancelCompletion 関数 (fltkernel.h)
ミニフィルター ドライバーは 、FltSetCancelCompletion を呼び出して、特定の I/O 操作が取り消された場合に呼び出されるキャンセル ルーチンを指定します。
構文
NTSTATUS FLTAPI FltSetCancelCompletion(
[in] PFLT_CALLBACK_DATA CallbackData,
[in] PFLT_COMPLETE_CANCELED_CALLBACK CanceledCallback
);
パラメーター
[in] CallbackData
I/O 操作のコールバック データ (FLT_CALLBACK_DATA) 構造体へのポインター。 操作は IRP ベースの I/O 操作である必要があり、ページング I/O 操作である必要があります。 指定されたコールバック データ構造が IRP ベースの I/O 操作を表すかどうかを確認するには、 FLT_IS_IRP_OPERATION マクロを使用します。 このパラメーターは必須であり、 NULL にすることはできません。
[in] CanceledCallback
呼び出し元から提供されたキャンセル ルーチンへのポインター。 CallbackData で表される I/O 操作が取り消された場合、フィルター マネージャーはこのルーチンを呼び出します。
このルーチンは、次のように宣言されています。
typedef VOID
(*PFLT_COMPLETE_CANCELED_CALLBACK) (
IN PFLT_CALLBACK_DATA CallbackData
);
CallbackData
I/O 操作のFLT_CALLBACK_DATA構造体へのポインター。
戻り値
FltSetCancelCompletion は、STATUS_SUCCESSまたは適切な NTSTATUS 値を返します。
注釈
FltSetCancelCompletion は、作業キューにポストされる IRP ベースの I/O 操作のキャンセル ルーチンを指定します。
ミニフィルター ドライバーは通常、作業キューに操作をポストする FltQueueDeferredIoWorkItem を呼び出す直前に、I/O 操作の FltSetCancelCompletion を呼び出します。
FltCbdqXxx ルーチンを使用して、キャンセル セーフなコールバック データ キューにポストされる I/O 操作に対して FltSetCancelCompletion を呼び出さないでください。
フィルター マネージャーは、システムのキャンセル スピン ロックを保持したり、他の同期を実行したりせずに CanceledCallback ルーチンを呼び出します。 必要な同期は、ミニフィルター ドライバー自体によって指定する必要があります。
I/O 操作を取り消すには、 FltCancelIo を呼び出します。
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
Header | fltkernel.h (Fltkernel.h を含む) |
Library | FltMgr.lib |
[DLL] | Fltmgr.sys |
IRQL | <= DISPATCH_LEVEL |