_URB_CONTROL_DESCRIPTOR_REQUEST 结构 (usb.h)
USB 客户端驱动程序使用 _URB_CONTROL_DESCRIPTOR_REQUEST 结构在 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 标头信息的 _URB_HEADER 结构的指针。 Hdr.Function 必须是以下项之一:
Hdr.Length 必须等于 sizeof(_URB_CONTROL_DESCRIPTOR_REQUEST)
。
Reserved
保留。 请勿使用。
Reserved0
保留。 请勿使用。
TransferBufferLength
指定 TransferBuffer 中指定的缓冲区或 TransferBufferMDL 中所述的缓冲区的长度(以字节为单位)。 主控制器驱动程序返回在此成员的管道中发送到管道或从管道读取的字节数。
TransferBuffer
指向传输的常驻缓冲区的指针;如果在 TransferBufferMDL 中提供了 MDL,则为 NULL。
TransferBufferMDL
指向描述常驻缓冲区的 MDL 的指针;如果 TransferBuffer 中提供了缓冲区,则为 NULL。 必须从非分页池中分配此 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
指定在 DescriptorType 中设置USB_STRING_DESCRIPTOR_TYPE时要检索 的描述符的语言 ID。 对于 DescriptorType 中的任何其他值,此成员必须设置为零。
Reserved2
保留。 请勿使用。
注解
驱动程序可以使用 UsbBuildGetDescriptorRequest 服务例程来格式化此 URB。 如果调用方传递的缓冲区太小而无法保存所有数据,则总线驱动程序会截断数据,使其适合缓冲区中,而不会出错。
当调用方请求设备描述符时,总线驱动程序将返回 USB_DEVICE_DESCRIPTOR 数据结构。
当调用方请求配置描述符时,总线驱动程序以 USB_CONFIGURATION_DESCRIPTOR 结构返回配置描述符,后跟该配置的接口和终结点描述符。 驱动程序可以访问接口和终结点描述符作为 USB_INTERFACE_DESCRIPTOR 和 USB_ENDPOINT_DESCRIPTOR 结构。 总线驱动程序还会返回任何特定于类或特定于设备的描述符。 系统提供 USBD_ParseConfigurationDescriptorEx 和 USBD_ParseDescriptors 服务例程来查找缓冲区中的单个描述符。
当调用方请求字符串描述符时,总线驱动程序将返回 USB_STRING_DESCRIPTOR 结构。 字符串本身位于字符串描述符的可变长度 bString 成员中。
此结构的保留成员必须被视为不透明成员,并保留供系统使用。
要求
要求 | 值 |
---|---|
Header | usb.h (包括 Usb.h) |