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


структура _URB_CONTROL_VENDOR_OR_CLASS_REQUEST (usb.h)

Структура _URB_CONTROL_VENDOR_OR_CLASS_REQUEST используется драйверами USB-клиента для выдачи команды поставщика или класса устройству, интерфейсу, конечной точке или другому определенному устройству целевому объекту.

Синтаксис

struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST {
  struct _URB_HEADER   Hdr;
  PVOID                Reserved;
  ULONG                TransferFlags;
  ULONG                TransferBufferLength;
  PVOID                TransferBuffer;
  PMDL                 TransferBufferMDL;
  struct _URB          *UrbLink;
  struct _URB_HCD_AREA hca;
  UCHAR                RequestTypeReservedBits;
  UCHAR                Request;
  USHORT               Value;
  USHORT               Index;
  USHORT               Reserved1;
};

Члены

Hdr

Указатель на структуру _URB_HEADER, указывающую сведения о заголовке URB. функции Hdr.Function должна быть одной из URB_FUNCTION_CLASS_XXX или URB_FUNCTION_VENDOR_XXX GET_STATUS, а Hdr.Length должна быть sizeof(_URB_CONTROL_VENDOR_OR_CLASS_REQUEST).

Reserved

TransferFlags

Указывает ноль, один или сочетание следующих флагов:

Ценность Значение
USBD_TRANSFER_DIRECTION_IN
Устанавливается для запроса данных с устройства. Чтобы передать данные на устройство, этот флаг должен быть снят. Флаг должен быть задан, если канал является каналом прерывания передачи.
USBD_SHORT_TRANSFER_OK
Устанавливается, чтобы контроллер узла не возвращал ошибку при получении пакета от устройства, которое меньше максимального размера пакета для конечной точки. Максимальный размер пакета для конечной точки сообщается в bMaxPacketSize0 член структуры USB_DEVICE_DESCRIPTOR (дескриптор устройства) для конечной точки управления по умолчанию. Для конечной точки управления, отличной от по умолчанию, максимальный размер пакета устанавливается в wMaxPacketSize член структуры USB_ENDPOINT_DESCRIPTOR (дескриптор конечной точки).

Когда контроллер узла получает пакет, длина которого короче wMaxPacketSize в конечной точке элемента управления, поведение выполняется следующим образом в зависимости от типа контроллера узла:

  • На контроллерах узла EHCI контроллер узла немедленно переходит к этапу состояния передачи элемента управления. Передача завершается успешно, независимо от того, задана ли USBD_SHORT_TRANSFER_OK.
  • В контроллерах узла UHCI и OHCI, если USBD_SHORT_TRANSFER_OK задано, контроллер узла переходит к этапу состояния. Если USBD_SHORT_TRANSFER_OK не задано, контроллер узла отказывается от этапов передачи данных и состояния элемента управления, а передача завершается ошибкой.

Этот флаг не должен быть задан, если USBD_TRANSFER_DIRECTION_IN также не задан.

TransferBufferLength

Указывает длину буфера, указанного в TransferBuffer или описанном в TransferBufferMDL. Драйвер контроллера узла возвращает количество байтов, отправленных или считываемых из канала в этом элементе.

TransferBuffer

Указатель на буфер резидента для передачи или null, если MDL предоставляется в TransferBufferMDL. Содержимое этого буфера зависит от значения TransferFlags. Если USBD_TRANSFER_DIRECTION_IN указан этот буфер, он будет содержать данные, считываемые с устройства при возврате от драйвера контроллера узла. В противном случае этот буфер содержит данные, предоставленные драйвером для передачи на устройство.

TransferBufferMDL

Указатель на MDL, описывающий буфер резидента или значение NULL, если буфер предоставляется в TransferBuffer. Содержимое буфера зависит от значения TransferFlags. Если указан USBD_TRANSFER_DIRECTION_IN, описанный буфер будет содержать данные, считываемые с устройства при возврате от драйвера контроллера узла. В противном случае буфер содержит предоставленные драйвером данные для передачи на устройство. Этот MDL-файл должен быть выделен из непагрегированного пула.

UrbLink

Скрытный. Не используйте.

hca

Скрытный. Не используйте.

RequestTypeReservedBits

Скрытный. Не используйте.

Request

Указывает код запроса, определенный USB или поставщиком для устройства, интерфейса, конечной точки или другого целевого объекта, определенного устройством.

Value

Задает значение, относящееся к запросу, которое становится частью пакета установки, определяемого USB для целевого объекта. Это значение определяется создателем кода, используемого в запроса.

Index

Указывает определяемый устройством индекс, возвращаемый успешным запросом конфигурации, если запрос предназначен для конечной точки или интерфейса. В противном случае индекса должно быть равно нулю.

Reserved1

Скрытный. Не используйте.

Замечания

Драйверы могут использовать формат подпрограммы службы UsbBuildVendorRequest.

Зарезервированные элементы этой структуры должны рассматриваться как непрозрачные и зарезервированы для использования системы.

Требования

Требование Ценность
заголовка usb.h (включая usb.h)

См. также

URB

СТРУКТУРЫ USB

_URB_HEADER