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