структура WDF_REQUEST_COMPLETION_PARAMS (wdfrequest.h)
[Применимо к KMDF и UMDF]
Структура WDF_REQUEST_COMPLETION_PARAMS содержит параметры, связанные с завершением запроса ввода-вывода.
Синтаксис
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
Дескриптор объекта памяти платформы. Этот объект идентифицирует буфер, указанный драйвером при форматировании запроса и отправке его в целевой объект ввода-вывода.
Parameters.Write.Length
Длина передачи в байтах.
Parameters.Write.Offset
Начальный адрес в буфере для передачи данных.
Parameters.Read
Parameters.Read.Buffer
Дескриптор объекта памяти платформы. Этот объект идентифицирует буфер, указанный драйвером при форматировании запроса и отправке его в целевой объект ввода-вывода.
Parameters.Read.Length
Длина передачи в байтах.
Parameters.Read.Offset
Начальный адрес в буфере для передачи данных.
Parameters.Ioctl
Parameters.Ioctl.IoControlCode
Parameters.Ioctl.Input
Parameters.Ioctl.Input.Buffer
Дескриптор объекта памяти платформы. Этот объект определяет входной буфер, указанный драйвером при форматировании запроса и отправке его в целевой объект ввода-вывода.
Parameters.Ioctl.Input.Offset
Начальный адрес в буфере для передачи данных.
Parameters.Ioctl.Output
Parameters.Ioctl.Output.Buffer
Дескриптор объекта памяти платформы. Этот объект идентифицирует выходные буферы, указанные драйвером при форматировании запроса и его отправке в целевой объект ввода-вывода.
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 для получения сведений о завершении ввода-вывода для запроса, драйвер должен сначала вызвать WDF_REQUEST_COMPLETION_PARAMS_INIT для инициализации структуры WDF_REQUEST_COMPLETION_PARAMS .
Члены Parameters.Others.Argument — это настраиваемые аргументы, которые драйвер обычно передает в стек (и может вернуться после завершения запроса). Они используются для нестандартных данных, зависящих от стека драйверов. Например, USB-драйвер указывает указатель на URB в Parameters.Others.Argument1 при отправке запроса IOCTL_INTERNAL_USB_SUBMIT_URB в USB-стек. Аналогичным образом драйвер Bluetooth указывает указатель на BRB (блок запросов Bluetooth) в Parameters.Others.Argument1 при получении IOCTL_INTERNAL_BTH_SUBMIT_BRB.
Требования
Требование | Значение |
---|---|
Минимальная версия KMDF | 1,0 |
Минимальная версия UMDF | 2,0 |
Верхняя часть | wdfrequest.h (включая Wdf.h) |