_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時,要擷取之描述元的語言標識碼。 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) |