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作指定取消例程。
微型筛选器驱动程序通常会在调用 FltQueueDeferredIoWorkItem 将作发布到工作队列之前立即调用 FltSetCancelCompletion 进行 I/O作。
不要使用 FltCbdqXxx 例程调用要发布到取消安全回调数据队列的任何 I/O作 FltSetCancelCompletion。
筛选器管理器调用 CanceledCallback 例程,而无需保留系统取消旋转锁或执行任何其他同步。 任何必需的同步都必须由微型筛选器驱动程序本身提供。
若要取消 I/O作,请调用 FltCancelIo。
要求
要求 | 价值 |
---|---|
目标平台 | 普遍 |
标头 | fltkernel.h (包括 Fltkernel.h) |
库 | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | <= DISPATCH_LEVEL |