_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が設定されている場合に取得する記述子の言語 ID を指定します。 DescriptorType の他の値については、このメンバーを 0 に設定する必要があります。
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 を含む) |