FltCancelIo 関数 (fltkernel.h)
FltCancelIo ルーチンは、I/O 操作を取り消します。
構文
BOOLEAN FLTAPI FltCancelIo(
[in] PFLT_CALLBACK_DATA CallbackData
);
パラメーター
[in] CallbackData
I/O 操作のコールバック データ (FLT_CALLBACK_DATA) 構造体へのポインター。
戻り値
FltCancelIo は、I/O 操作が正常に取り消された場合に TRUE を 返します。 それ以外の場合は、 FALSE を返します。
注釈
FltPerformAsynchronousIo などのルーチンを呼び出して I/O 操作を開始するミニフィルター ドライバーは、FltCancelIo を呼び出すことによって操作を取り消すことができます。 操作は IRP ベースの I/O 操作である必要があります。ミニフィルター ドライバーの独自の作業キューに現在ポストされていない必要があり、完了していない必要があります。
IRP にキャンセル ルーチンがある場合、 FltCancelIo は IRP のキャンセル ビットを設定し、キャンセル ルーチンを呼び出します。
IRP にキャンセル ルーチンがないため、IRP が取り消し可能でない場合、 FltCancelIo は IRP のキャンセル ビットを設定し、 FALSE を返します。 IRP は、取り消し可能になったときに後で取り消す必要があります。
IRP ベースの I/O 操作を開始しなかったミニフィルター ドライバーが FltCancelIo を呼び出した場合、結果は予測できません。 たとえば、取り消しビットが設定されていても、成功した NTSTATUS コードで IRP が完了する可能性があります。
FltCancelIo は、次のいずれかの条件が満たされている場合に FALSE を 返します。
- 操作は IRP ベースの I/O 操作ではありません。
- I/O 操作に取り消しルーチンは指定されません。
- I/O 操作は既に取り消されています。
I/O 操作のキャンセル ルーチンを指定するには、 FltSetCancelCompletion を呼び出します。
I/O 操作に対して設定されたキャンセル ルーチンをクリアするには、 FltClearCancelCompletion を呼び出します。
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
Header | fltkernel.h (FltKernel.h を含む) |
Library | FltMgr.lib |
IRQL | <= DISPATCH_LEVEL |