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 操作已取消。
若要为 I/O 操作指定取消例程,请调用 FltSetCancelCompletion。
若要清除为 I/O 操作设置的取消例程,请调用 FltClearCancelCompletion。
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
标头 | fltkernel.h (包括 FltKernel.h) |
Library | FltMgr.lib |
IRQL | <= DISPATCH_LEVEL |