WdfRequestIsCanceled 函式 (wdfrequest.h)
[適用於 KMDF 和 UMDF]
WdfRequestIsCanceled 方法會判斷 I/O 管理員是否嘗試取消指定的 I/O 要求。
語法
BOOLEAN WdfRequestIsCanceled(
[in] WDFREQUEST Request
);
參數
[in] Request
架構要求物件的句柄。
傳回值
如果 I/O 管理員嘗試取消指定的 I/O 要求,WdfRequestIsCanceled 會傳回 TRUE。 即使呼叫驅動程式沒有擁有要求,這個方法仍可能會傳回 TRUE 。 如果驅動程式沒有擁有要求,它不應該呼叫 WdfRequestIsCanceled。 請參閱中的其他資訊。
WdfRequestIsCanceled 會 基於下列其中一個原因傳回 FALSE :
- I/O 管理員尚未嘗試取消要求。
- 呼叫驅動程序沒有擁有要求。
- 呼叫驅動程式已呼叫 WdfRequestMarkCancelable 或 WdfRequestMarkCancelableEx 方法。
如果驅動程式提供無效的物件句柄,就會發生錯誤檢查。
備註
如果您的驅動程式尚未呼叫 WdfRequestMarkCancelable 或 WdfRequestMarkCancelableEx 來註冊 EvtRequestCancel 回呼函式,但如果您想要讓驅動程式判斷 I/O 管理員是否已嘗試取消 I/O 要求,則驅動程式可以呼叫 WdfRequestIsCanceled。
如果驅動程式已呼叫 WdfRequestMarkCancelable 或 WdfRequestMarkCancelableEx,它必須先呼叫 WdfRequestUnmarkCancelable ,再呼叫 WdfRequestIsCanceled。
只有在驅動程式擁有 I/O 要求時,驅動程式才能呼叫要求 WdfRequestIsCanceled。
如果 WdfRequestIsCanceled 傳回 TRUE,您的驅動程式應該藉由呼叫具有 status 參數的 WdfRequestComplete 來取消要求STATUS_CANCELLED。 如果驅動程式嘗試完成它不擁有的要求,驅動程式可能會導致系統當機。
如需 WdfRequestIsCanceled 的詳細資訊,請參閱 取消 I/O 要求
範例
如果 WdfRequestIsCanceled 傳回 TRUE,下列程式代碼範例會呼叫 WdfRequestComplete。
if (WdfRequestIsCanceled(request)) {
WdfRequestComplete(
request,
STATUS_CANCELLED
);
}
規格需求
需求 | 值 |
---|---|
目標平台 | Universal |
最小 KMDF 版本 | 1.0 |
最低UMDF版本 | 2.0 |
標頭 | wdfrequest.h (包含 Wdf.h) |
程式庫 | Wdf01000.sys (KMDF) ;WUDFx02000.dll (UMDF) |
IRQL | <=DISPATCH_LEVEL |
DDI 合規性規則 | DriverCreate (kmdf) , KmdfIrql (kmdf) , KmdfIrql2 (kmdf) , KmdfIrqlExplicit (kmdf) , ReqIsCancOnCancReq (kmdf) |