_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 を含む)

こちらもご覧ください

Urb

USB 構造体

USB_CONFIGURATION_DESCRIPTOR

USB_DEVICE_DESCRIPTOR

USB_ENDPOINT_DESCRIPTOR

USB_INTERFACE_DESCRIPTOR

USB_STRING_DESCRIPTOR

_URB_HEADER