共用方式為


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之後立即呼叫 WdfRequestSend ,無論呼叫 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;
}

要求

要求 價值
目標平臺 普遍
最低 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