WdfRequestGetStatus 函式 (wdfrequest.h)
[適用於 KMDF 和 UMDF]
WdfRequestGetStatus 方法會傳回 I/O 要求的狀態。
語法
NTSTATUS WdfRequestGetStatus(
[in] WDFREQUEST Request
);
參數
[in] Request
架構要求物件的句柄。
傳回值
WdfRequestGetStatus 會傳回 NTSTATUS 值。 如需可傳回哪些值的詳細資訊,請參閱下列一節。
如果驅動程式提供無效的物件句柄,就會發生錯誤檢查。
備註
WdfRequestGetStatus 方法會傳回下列其中一個:
- 如果驅動程式呼叫 WdfRequestSend 成功, WdfRequestGetStatus 會傳回驅動程式所設定的狀態值,該驅動程式會呼叫 WdfRequestComplete 來完成指定的要求。 驅動程式通常會從 CompletionRoutine 回呼函式內呼叫 WdfRequestGetStatus。
- 如果驅動程式呼叫 WdfRequestSend 失敗, WdfRequestGetStatus 會傳回架構已設定描述失敗的狀態值。 驅動程式可以在呼叫 WdfRequestSend 之後立即呼叫 WdfRequestGetStatus。
如需要求完成的詳細資訊,請參閱 完成 I/O 要求。
範例
下列程式代碼範例來自 KbFiltr 範例驅動程式。 本範例會將 I/O 要求傳送至 I/O 目標。 如果 WdfRequestSend 失敗,此範例會使用 WdfRequestGetStatus 傳回值做為 WdfRequestComplete 的輸入。
VOID
KbFilter_ForwardRequest(
IN WDFREQUEST Request,
IN WDFIOTARGET Target
)
{
WDF_REQUEST_SEND_OPTIONS options;
BOOLEAN ret;
NTSTATUS status;
WDF_REQUEST_SEND_OPTIONS_INIT(
&options,
WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET
);
ret = WdfRequestSend(
Request,
Target,
&options
);
if (ret == FALSE) {
status = WdfRequestGetStatus (Request);
DebugPrint(("WdfRequestSend failed: 0x%x\n", status));
WdfRequestComplete(
Request,
status
);
}
return;
}
規格需求
需求 | 值 |
---|---|
目標平台 | 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) , RequestGetStatusValid (kmdf) |