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

Структура _URB_CONTROL_DESCRIPTOR_REQUEST используется драйверами USB-клиента для получения или настройки дескрипторов на USB-устройстве.

Синтаксис

struct _URB_CONTROL_DESCRIPTOR_REQUEST {
  struct _URB_HEADER   Hdr;
  PVOID                Reserved;
  ULONG                Reserved0;
  ULONG                TransferBufferLength;
  PVOID                TransferBuffer;
  PMDL                 TransferBufferMDL;
  struct _URB          *UrbLink;
  struct _URB_HCD_AREA hca;
  USHORT               Reserved1;
  UCHAR                Index;
  UCHAR                DescriptorType;
  USHORT               LanguageId;
  USHORT               Reserved2;
};

Члены

Hdr

Указатель на структуру _URB_HEADER , указывающую сведения о заголовке URB. Hdr.Function должен иметь один из следующих вариантов:

Hdr.Length должен быть равен sizeof(_URB_CONTROL_DESCRIPTOR_REQUEST).

Reserved

Зарезервировано. Не используется.

Reserved0

Зарезервировано. Не используется.

TransferBufferLength

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

TransferBuffer

Указатель на постоянный буфер для передачи или имеет значение NULL , если MDL предоставляется в TransferBufferMDL.

TransferBufferMDL

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

UrbLink

Зарезервировано. Не используется.

hca

Зарезервировано. Не используется.

Reserved1

Зарезервировано. Не используется.

Index

Указывает определяемый устройством индекс извлекаемого или устанавливаемого дескриптора.

DescriptorType

Указывает, какой тип дескриптора извлекается или задается. Необходимо указать одно из следующих значений:

константная usbspec.h Значение Версия USB
USB_DEVICE_DESCRIPTOR_TYPE 0x01 USB 1.1
USB_CONFIGURATION_DESCRIPTOR_TYPE 0x02 USB 1.1
USB_STRING_DESCRIPTOR_TYPE 0x03 USB 1.1
USB_INTERFACE_DESCRIPTOR_TYPE 0x04 USB 1.1
USB_ENDPOINT_DESCRIPTOR_TYPE 0x05 USB 1.1
USB_DEVICE_QUALIFIER_DESCRIPTOR_TYPE 0x06 USB 2.0
USB_OTHER_SPEED_CONFIGURATION_DESCRIPTOR_TYPE 0x07 USB 2.0
USB_INTERFACE_POWER_DESCRIPTOR_TYPE 0x08 USB 2.0
USB_OTG_DESCRIPTOR_TYPE 0x09 USB 3.0
USB_DEBUG_DESCRIPTOR_TYPE 0x0a USB 3.0
USB_INTERFACE_ASSOCIATION_DESCRIPTOR_TYPE 0x0b USB 3.0
USB_BOS_DESCRIPTOR_TYPE 0x0f USB 3.0
USB_DEVICE_CAPABILITY_DESCRIPTOR_TYPE 0x10 USB 3.0
USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR_TYPE 0x30 USB 3.0
USB_20_HUB_DESCRIPTOR_TYPE 0x29 USB 1.1
USB 2.0
USB_30_HUB_DESCRIPTOR_TYPE 0x2a USB 3.0
USB_SUPERSPEEDPLUS_ISOCH_ENDPOINT_COMPANION_DESCRIPTOR_TYPE 0x31 USB 3.1

LanguageId

Указывает идентификатор языка дескриптора, извлекаемого при установке USB_STRING_DESCRIPTOR_TYPE в descriptorType. Для любого другого значения в DescriptorType этому члену должно быть присвоено значение 0.

Reserved2

Зарезервировано. Не используется.

Комментарии

Драйверы могут использовать подпрограмму службы UsbBuildGetDescriptorRequest для форматирования этого URB. Если вызывающий объект передает буфер слишком мало для хранения всех данных, драйвер шины усекает данные, чтобы поместиться в буфер без ошибок.

Когда вызывающий объект запрашивает дескриптор устройства, водитель автобуса возвращает USB_DEVICE_DESCRIPTOR структуру данных.

Когда вызывающий объект запрашивает дескриптор конфигурации, драйвер шины возвращает дескриптор конфигурации в USB_CONFIGURATION_DESCRIPTOR структуре, за которым следуют дескрипторы интерфейса и конечных точек для этой конфигурации. Драйвер может обращаться к дескрипторам интерфейса и конечных точек в виде USB_INTERFACE_DESCRIPTOR и USB_ENDPOINT_DESCRIPTOR структур. Драйвер шины также возвращает дескрипторы класса или устройства. Система предоставляет USBD_ParseConfigurationDescriptorEx и USBD_ParseDescriptors подпрограммы службы для поиска отдельных дескрипторов в буфере.

Когда вызывающий объект запрашивает дескриптор строки, водитель автобуса возвращает структуру USB_STRING_DESCRIPTOR . Сама строка находится в элементе bString переменной длины дескриптора строки.

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

Требования

Требование Значение
Заголовок usb.h (включая Usb.h)

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

URB

Структуры USB

USB_CONFIGURATION_DESCRIPTOR

USB_DEVICE_DESCRIPTOR

USB_ENDPOINT_DESCRIPTOR

USB_INTERFACE_DESCRIPTOR

USB_STRING_DESCRIPTOR

_URB_HEADER