FltCancelIo 函式 (fltkernel.h)

FltCancelIo 例程會取消 I/O 作業。

語法

BOOLEAN FLTAPI FltCancelIo(
  [in] PFLT_CALLBACK_DATA CallbackData
);

參數

[in] CallbackData

I/O 作業的回呼數據 (FLT_CALLBACK_DATA) 結構的指標。

傳回值

如果已成功取消 I/O 作業,FltCancelIo 會傳回 TRUE。 否則會傳回 FALSE

備註

透過呼叫 FltPerformAsynchronousIo 之類的例程來起始 I/O 作業的迷你篩選驅動程式,可以呼叫 FltCancelIo 來取消作業。 此作業必須是 IRP 型 I/O 作業,目前不得張貼到迷你篩選驅動程式自己的工作佇列,而且該作業必須尚未完成。

如果 IRP 有取消例程, FltCancelIo 會設定 IRP 的取消位,並呼叫取消例程。

如果 IRP 沒有取消例程,因此 IRP 無法取消, FltCancelIo 會設定 IRP 的取消位並傳回 FALSE。 當 IRP 變成可取消時,應該在稍後取消。

如果未起始 IRP 型 I/O 作業的迷你篩選驅動程式呼叫 FltCancelIo,則結果無法預測。 例如,即使已設定取消位,IRP 仍可能會使用成功的NTSTATUS程式代碼來完成。

如果下列任一條件成立,FltCancelIo 會傳回 FALSE

  • 作業不是 IRP 型 I/O 作業。
  • I/O 作業未指定取消例程。
  • I/O 作業已經取消。
若要判斷指定的回呼數據結構是否代表 IRP 型 I/O 作業,請使用 FLT_IS_IRP_OPERATION 宏。

若要指定 I/O 作業的取消例程,請呼叫 FltSetCancelCompletion

若要清除針對 I/O 作業設定的取消例程,請呼叫 FltClearCancelCompletion

規格需求

需求
目標平台 Universal
標頭 fltkernel.h (包括 FltKernel.h)
程式庫 FltMgr.lib
IRQL <= DISPATCH_LEVEL

另請參閱

FLT_CALLBACK_DATA

FLT_IS_IRP_OPERATION

FltClearCancelCompletion

FltPerformAsynchronousIo

FltReadFile

FltSetCancelCompletion

FltWriteFile