FltSetCancelCompletion 函式 (fltkernel.h)

迷你篩選驅動程式會呼叫 FltSetCancelCompletion ,以指定要在指定的 I/O 作業取消時呼叫的取消例程。

語法

NTSTATUS FLTAPI FltSetCancelCompletion(
  [in] PFLT_CALLBACK_DATA              CallbackData,
  [in] PFLT_COMPLETE_CANCELED_CALLBACK CanceledCallback
);

參數

[in] CallbackData

回呼數據的指標 (FLT_CALLBACK_DATA I/O 作業) 結構。 此作業必須是 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 作業指定取消例程。

Minifilter 驅動程式通常會在呼叫 FltQueueDeferredIoWorkItem 以將作業張貼到工作佇列之前,立即呼叫 I/O 作業的 FltSetCancelCompletion

請勿針對任何 I/O 作業呼叫 FltSetCancelCompletion ,以使用 FltCbdqXxx 例程張貼至取消安全回呼數據佇列。

篩選管理員會呼叫 CanceledCallback 例程,而不保留系統取消微調鎖定或執行任何其他同步處理。 任何必要的同步處理都必須由迷你篩選驅動程式本身提供。

若要取消 I/O 作業,請呼叫 FltCancelIo

規格需求

需求
目標平台 Universal
標頭 fltkernel.h (包含 Fltkernel.h)
程式庫 FltMgr.lib
Dll Fltmgr.sys
IRQL <= DISPATCH_LEVEL

另請參閱

FLT_CALLBACK_DATA

FLT_IS_IRP_OPERATION

FltCancelIo

FltClearCancelCompletion

FltQueueDeferredIoWorkItem