次の方法で共有


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 操作は既に取り消されています。
特定のコールバック データ構造が IRP ベースの I/O 操作を表すかどうかを確認するには、FLT_IS_IRP_OPERATION マクロを使用します。

I/O 操作のキャンセル ルーチンを指定するには、 FltSetCancelCompletion を呼び出します。

I/O 操作に対して設定されたキャンセル ルーチンをクリアするには、 FltClearCancelCompletion を呼び出します。

要件

要件
対象プラットフォーム ユニバーサル
Header fltkernel.h (FltKernel.h を含む)
Library FltMgr.lib
IRQL <= DISPATCH_LEVEL

こちらもご覧ください

FLT_CALLBACK_DATA

FLT_IS_IRP_OPERATION

FltClearCancelCompletion

FltPerformAsynchronousIo

FltReadFile

FltSetCancelCompletion

FltWriteFile