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


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

См. также

URB

СТРУКТУРЫ USB

USB_CONFIGURATION_DESCRIPTOR

USB_DEVICE_DESCRIPTOR

USB_ENDPOINT_DESCRIPTOR

USB_INTERFACE_DESCRIPTOR

USB_STRING_DESCRIPTOR

_URB_HEADER