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