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。
有关请求完成的详细信息,请参阅 完成 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) |