_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 標頭資訊的 _URB_HEADER 結構的指標。 Hdr.Function 必須是下列其中一項:
Hdr.Length 必須等於 sizeof(_URB_CONTROL_DESCRIPTOR_REQUEST)
。
Reserved
保留。 請勿使用。
Reserved0
保留。 請勿使用。
TransferBufferLength
指定 TransferBuffer 中指定的緩衝區長度,以位元組為單位,或 TransferBufferMDL中所述。 主機控制器驅動程式會傳回傳送至這個成員管道或從管道讀取的位元組數目。
TransferBuffer
傳送的常駐緩衝區指標,如果 MDL 是在 transferBufferMDL中提供,則為 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) |