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) |