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

另请参阅

FLT_CALLBACK_DATA

FLT_IS_IRP_OPERATION

FltCancelIo

FltClearCancelCompletion

FltQueueDeferredIoWorkItem