Поделиться через


структура 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)

См. также раздел

CompletionRoutine

IO_STATUS_BLOCK

WDF_REQUEST_COMPLETION_PARAMS_INIT

WDF_REQUEST_TYPE

WdfRequestGetCompletionParams