fltCancelIo 函数 (fltkernel.h)

FltCancelIo 例程取消 I/O 操作。

语法

BOOLEAN FLTAPI FltCancelIo(
  [in] PFLT_CALLBACK_DATA CallbackData
);

参数

[in] CallbackData

指向 I/O 操作的回调数据 (FLT_CALLBACK_DATA) 结构的指针。

返回值

如果成功取消 I/O 操作,则 FltCancelIo 返回 TRUE。 否则,它将返回 FALSE

注解

通过调用例程(如 FltPerformAsynchronousIo )启动 I/O 操作的微筛选器驱动程序可以通过调用 FltCancelIo 来取消操作。 该操作必须是基于 IRP 的 I/O 操作,当前不得发布到微筛选器驱动程序自己的工作队列,并且不得已完成。

如果 IRP 具有取消例程, 则 FltCancelIo 将设置 IRP 的取消位并调用取消例程。

如果 IRP 没有取消例程,因此 IRP 不可取消, 则 FltCancelIo 将设置 IRP 的取消位并返回 FALSE。 当 IRP 变为可取消时,应将其取消。

如果未启动基于 IRP 的 I/O 操作的微筛选器驱动程序调用 FltCancelIo,则结果不可预知。 例如,即使设置了取消位,IRP 也可能使用成功的 NTSTATUS 代码完成。

如果满足以下任一条件,则 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)
Library FltMgr.lib
IRQL <= DISPATCH_LEVEL

另请参阅

FLT_CALLBACK_DATA

FLT_IS_IRP_OPERATION

FltClearCancelCompletion

FltPerformAsynchronousIo

FltReadFile

FltSetCancelCompletion

FltWriteFile