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 作業已經取消。
若要指定 I/O 作業的取消例程,請呼叫 FltSetCancelCompletion。
若要清除針對 I/O 作業設定的取消例程,請呼叫 FltClearCancelCompletion。
規格需求
需求 | 值 |
---|---|
目標平台 | Universal |
標頭 | fltkernel.h (包括 FltKernel.h) |
程式庫 | FltMgr.lib |
IRQL | <= DISPATCH_LEVEL |