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

另请参阅

FLT_CALLBACK_DATA

FLT_IS_IRP_OPERATION

FltCancelIo

FltClearCancelCompletion

FltQueueDeferredIoWorkItem