WDF_REQUEST_COMPLETION_PARAMS结构(wdfrequest.h)

[适用于 KMDF 和 UMDF]

WDF_REQUEST_COMPLETION_PARAMS 结构包含与 I/O 请求完成关联的参数。

语法

typedef struct _WDF_REQUEST_COMPLETION_PARAMS {
  ULONG            Size;
  WDF_REQUEST_TYPE Type;
  IO_STATUS_BLOCK  IoStatus;
  union {
    struct {
      WDFMEMORY Buffer;
      size_t    Length;
      size_t    Offset;
    } Write;
    struct {
      WDFMEMORY Buffer;
      size_t    Length;
      size_t    Offset;
    } Read;
    struct {
      ULONG  IoControlCode;
      struct {
        WDFMEMORY Buffer;
        size_t    Offset;
      } Input;
      struct {
        WDFMEMORY Buffer;
        size_t    Offset;
        size_t    Length;
      } Output;
    } Ioctl;
    struct {
      union {
        PVOID     Ptr;
        ULONG_PTR Value;
      } Argument1;
      union {
        PVOID     Ptr;
        ULONG_PTR Value;
      } Argument2;
      union {
        PVOID     Ptr;
        ULONG_PTR Value;
      } Argument3;
      union {
        PVOID     Ptr;
        ULONG_PTR Value;
      } Argument4;
    } Others;
    struct {
      PWDF_USB_REQUEST_COMPLETION_PARAMS Completion;
    } Usb;
  } Parameters;
} WDF_REQUEST_COMPLETION_PARAMS, *PWDF_REQUEST_COMPLETION_PARAMS;

成员

Size

此结构的大小(以字节为单位)。

Type

标识请求类型的 WDF_REQUEST_TYPE 值。

IoStatus

请求的 IO_STATUS_BLOCK 结构。

Parameters

请求的特定于请求的值。

Parameters.Write

Parameters.Write.Buffer

框架内存对象的句柄。 此对象标识驱动程序在格式化请求时指定的缓冲区,并将其发送到 I/O 目标。

Parameters.Write.Length

传输的长度(以字节为单位)。

Parameters.Write.Offset

数据传输的缓冲区中的起始地址。

Parameters.Read

Parameters.Read.Buffer

框架内存对象的句柄。 此对象标识驱动程序在格式化请求时指定的缓冲区,并将其发送到 I/O 目标。

Parameters.Read.Length

传输的长度(以字节为单位)。

Parameters.Read.Offset

数据传输的缓冲区中的起始地址。

Parameters.Ioctl

Parameters.Ioctl.IoControlCode

Parameters.Ioctl.Input

Parameters.Ioctl.Input.Buffer

框架内存对象的句柄。 此对象标识驱动程序在格式化请求时指定的输入缓冲区,并将其发送到 I/O 目标。

Parameters.Ioctl.Input.Offset

数据传输的缓冲区中的起始地址。

Parameters.Ioctl.Output

Parameters.Ioctl.Output.Buffer

框架内存对象的句柄。 此对象标识驱动程序在格式化请求时指定的输出缓冲区,并将其发送到 I/O 目标。

Parameters.Ioctl.Output.Offset

数据传输的缓冲区中的起始地址。

Parameters.Ioctl.Output.Length

传输的长度(以字节为单位)。

Parameters.Others

Parameters.Others.Argument1

此成员的使用由驱动程序堆栈定义。 请参阅“备注”。

Parameters.Others.Argument1.Ptr

Parameters.Others.Argument1.Value

Parameters.Others.Argument2

此成员的使用由驱动程序堆栈定义。

Parameters.Others.Argument2.Ptr

Parameters.Others.Argument2.Value

Parameters.Others.Argument3

此成员的使用由驱动程序堆栈定义。

Parameters.Others.Argument3.Ptr

Parameters.Others.Argument3.Value

Parameters.Others.Argument4

此成员的使用由驱动程序堆栈定义。

Parameters.Others.Argument4.Ptr

Parameters.Others.Argument4.Value

Parameters.Usb

对于 USB 设备,此成员包含指向 WDF_USB_REQUEST_COMPLETION_PARAMS 结构的指针。

Parameters.Usb.Completion

言论

WDF_REQUEST_COMPLETION_PARAMS 结构用作 WdfRequestGetCompletionParams 方法和驱动程序的 CompletionRoutine 回调函数的输入。

在这两种情况下,仅当驱动程序通过调用 WdfIoTargetFormatXxx 方法之一来格式化请求时,完成参数结构才包含有效信息。 例如,请参阅 WdfIoTargetFormatRequestForRead

在调用 WdfRequestGetCompletionParams 以检索请求的 I/O 完成信息之前,驱动程序必须先调用 WDF_REQUEST_COMPLETION_PARAMS_INIT 来初始化 WDF_REQUEST_COMPLETION_PARAMS 结构。

Parameters.Others.Argument 成员是驱动程序通常会向下传递堆栈的自定义参数(可以在请求完成后返回)。 它们用于非标准驱动程序堆栈依赖数据。 例如,USB 驱动程序在 向 USB 堆栈发送 IOCTL_INTERNAL_USB_SUBMIT_URB 请求时,在 parameters.Others.Argument1 中指定指向 URB 的指针。 同样,蓝牙驱动程序在收到 IOCTL_INTERNAL_BTH_SUBMIT_BRB时,在 Parameters.Others.Argument1 中指定指向 BRB(蓝牙请求块)的指针。

要求

要求 价值
最低 KMDF 版本 1.0
最低 UMDF 版本 2.0
标头 wdfrequest.h (包括 Wdf.h)

另请参阅

CompletionRoutine

IO_STATUS_BLOCK

WDF_REQUEST_COMPLETION_PARAMS_INIT

WDF_REQUEST_TYPE

WdfRequestGetCompletionParams