WdfRequestFormatRequestUsingCurrentType 函数 (wdfrequest.h)

[适用于 KMDF 和 UMDF]

WdfRequestFormatRequestUsingCurrentType 方法设置指定的 I/O 请求的格式,以便驱动程序可以将其转发到驱动程序的本地 I/O 目标(未经修改)。

语法

void WdfRequestFormatRequestUsingCurrentType(
  [in] WDFREQUEST Request
);

参数

[in] Request

驱动程序从其 I/O 队列之一接收的框架请求对象的句柄。

返回值

备注

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

当驱动程序 收到 I/O 请求时,有时你会希望驱动程序将未修改的请求转发到其本地 I/O 目标。 若要转发此类请求,驱动程序必须:

  1. 调用 WdfRequestFormatRequestUsingCurrentType 设置请求对象的格式,以便框架可以将请求传递到驱动程序的本地 I/O 目标。
  2. 调用 WdfRequestSend 将请求发送到 I/O 目标。
有关 WdfRequestFormatRequestUsingCurrentType 的详细信息,请参阅 转发 I/O 请求

示例

下面的代码示例是一个 EvtIoDefault 回调函数,它将收到的每个 I/O 请求转发到设备的本地 I/O 目标,而无需修改。

VOID
MyEvtIoDefault(
    WDFQUEUE Queue,
    WDFREQUEST Request
    )
{
    WDF_REQUEST_SEND_OPTIONS options;
    NTSTATUS status;
    WDF_REQUEST_PARAMETERS params;
    BOOLEAN ret;

    WDF_REQUEST_PARAMETERS_INIT(&params);

    WdfRequestGetParameters(
                            Request,
                            &params
                            );

    WdfRequestFormatRequestUsingCurrentType(Request);

    WDF_REQUEST_SEND_OPTIONS_INIT(
                                  &options,
                                  WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET
                                  );

    ret = WdfRequestSend (
                          Request,
                          WdfDeviceGetIoTarget(WdfIoQueueGetDevice(Queue)),
                          &options
                          );
    if (!ret) {
        status = WdfRequestGetStatus(Request);
        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) InvalidReqAccess (kmdf) InvalidReqAccessLocal (kmdf) KmdfIrql (kmdf) KmdfIrql2 (kmdf) 、 KmdfIrqlExplicit (kmdf) , RequestFormattedValid (kmdf)

另请参阅

WdfRequestSend

WdfRequestWdmFormatUsingStackLocation