次の方法で共有


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 呼び出します。

必要条件

要件 価値
ターゲット プラットフォーム 万国
ヘッダー fltkernel.h (FltKernel.h を含む)
ライブラリ FltMgr.lib
IRQL <= DISPATCH_LEVEL

関連項目

FLT_CALLBACK_DATA

FLT_IS_IRP_OPERATION

FltClearCancelCompletion する

FltPerformAsynchronousIo

FltReadFile

FltSetCancelCompletion

FltWriteFile