共用方式為


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
如果驅動程式在呼叫 WdfRequestSend 時設定要求的WDF_REQUEST_SEND_OPTION_SYNCHRONOUS旗標,則驅動程式可以在呼叫 WdfRequestSend 之後立即呼叫 WdfRequestStatus,無論 WdfRequestSend 的呼叫成功或失敗。

如需要求完成的詳細資訊,請參閱 完成 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)

另請參閱

CompletionRoutine

WdfRequestComplete

WdfRequestSend