fltSetCancelCompletion 函数 (fltkernel.h)
微筛选器驱动程序调用 FltSetCancelCompletion 来指定要在取消给定 I/O 操作时调用的取消例程。
语法
NTSTATUS FLTAPI FltSetCancelCompletion(
[in] PFLT_CALLBACK_DATA CallbackData,
[in] PFLT_COMPLETE_CANCELED_CALLBACK CanceledCallback
);
参数
[in] CallbackData
指向 I/O 操作的回调数据 (FLT_CALLBACK_DATA) 结构的指针。 该操作必须是基于 IRP 的 I/O 操作,并且不能是分页 I/O 操作。 若要确定给定的回调数据结构是否表示基于 IRP 的 I/O 操作,请使用 FLT_IS_IRP_OPERATION 宏。 此参数是必需的,不能为 NULL。
[in] CanceledCallback
指向调用方提供的取消例程的指针。 如果取消 CallbackData 表示的 I/O 操作,筛选器管理器将调用此例程。
此例程的声明如下:
typedef VOID
(*PFLT_COMPLETE_CANCELED_CALLBACK) (
IN PFLT_CALLBACK_DATA CallbackData
);
CallbackData
指向 I/O 操作FLT_CALLBACK_DATA结构的指针。
返回值
FltSetCancelCompletion 返回STATUS_SUCCESS或相应的 NTSTATUS 值。
注解
FltSetCancelCompletion 为要发布到工作队列的基于 IRP 的 I/O 操作指定取消例程。
微筛选器驱动程序通常立即调用 FltSetCancelCompletion 执行 I/O 操作,然后调用 FltQueueDeferredIoWorkItem 将操作发布到工作队列。
不要对使用 FltCbdqXxx 例程发布到取消安全回调数据队列的任何 I/O 操作调用 FltSetCancelCompletion。
筛选器管理器调用 CanceledCallback 例程,而不持有系统取消旋转锁或执行任何其他同步。 任何必需的同步都必须由微筛选器驱动程序本身提供。
若要取消 I/O 操作,请调用 FltCancelIo。
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
标头 | fltkernel.h (包括 Fltkernel.h) |
Library | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | <= DISPATCH_LEVEL |