_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_DESCRIPTORUSB_ENDPOINT_DESCRIPTOR 結構。 總線驅動程式也會傳回任何類別特定或裝置特定的描述元。 系統會提供 USBD_ParseConfigurationDescriptorExUSBD_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