WdfRequestGetStatus 函数 (wdfrequest.h)

[适用于 KMDF 和 UMDF]

WdfRequestGetStatus 方法返回 I/O 请求的状态。

语法

NTSTATUS WdfRequestGetStatus(
  [in] WDFREQUEST Request
);

参数

[in] Request

框架请求对象的句柄。

返回值

WdfRequestGetStatus 返回 NTSTATUS 值。 有关可以返回的值的详细信息,请参阅以下“备注”部分。

如果驱动程序提供无效的对象句柄,则会发生 bug 检查。

注解

WdfRequestGetStatus 方法返回下列值之一:

  • 如果驱动程序对 WdfRequestSend 的调用成功, WdfRequestGetStatus 将返回由调用 WdfRequestComplete 以完成指定请求的驱动程序设置的状态值。 驱动程序通常从 CompletionRoutine 回调函数中调用 WdfRequestGetStatus
  • 如果驱动程序调用 WdfRequestSend 失败, WdfRequestGetStatus 将返回框架为描述失败而设置的状态值。 驱动程序可以在调用 WdfRequestSend 后立即调用 WdfRequestGetStatus
如果驱动程序在调用 WdfRequestSend 时为请求设置了WDF_REQUEST_SEND_OPTION_SYNCHRONOUS标志,则无论对 WdfRequestSend 的调用是成功还是失败,驱动程序都可以在调用 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;
}

要求

要求
目标平台 通用
最低 KMDF 版本 1.0
最低 UMDF 版本 2.0
标头 wdfrequest.h (包括 Wdf.h)
Library Wdf01000.sys (KMDF) ;WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
DDI 符合性规则 DriverCreate (kmdf) KmdfIrql (kmdf) KmdfIrql2 (kmdf) 、 KmdfIrqlExplicit (kmdf) 、 RequestGetStatusValid (kmdf)

另请参阅

CompletionRoutine

WdfRequestComplete

WdfRequestSend