_URB_CONTROL_DESCRIPTOR_REQUEST-Struktur (usb.h)

Die _URB_CONTROL_DESCRIPTOR_REQUEST-Struktur wird von USB-Clienttreibern verwendet, um Deskriptoren auf einem USB-Gerät abzurufen oder festzulegen.

Syntax

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;
};

Member

Hdr

Zeiger auf eine _URB_HEADER-Struktur , die die URB-Headerinformationen angibt. Hdr.Function muss eine der folgenden Sein:

Hdr.Length muss gleich sizeof(_URB_CONTROL_DESCRIPTOR_REQUEST)sein.

Reserved

Reserviert. Darf nicht verwendet werden.

Reserved0

Reserviert. Darf nicht verwendet werden.

TransferBufferLength

Gibt die Länge des Puffers in Bytes an, der in TransferBuffer angegeben oder in TransferBufferMDL beschrieben wird. Der Hostcontrollertreiber gibt die Anzahl der Bytes zurück, die an die Pipe in diesem Element gesendet oder aus dieser gelesen werden.

TransferBuffer

Zeiger auf einen residenten Puffer für die Übertragung oder ist NULL , wenn eine MDL in TransferBufferMDL bereitgestellt wird.

TransferBufferMDL

Zeiger auf eine MDL, die einen residenten Puffer beschreibt, oder ist NULL , wenn ein Puffer in TransferBuffer bereitgestellt wird. Diese MDL muss aus einem nicht auslagerten Pool zugeordnet werden.

UrbLink

Reserviert. Darf nicht verwendet werden.

hca

Reserviert. Darf nicht verwendet werden.

Reserved1

Reserviert. Darf nicht verwendet werden.

Index

Gibt den gerätedefinierten Index des Deskriptors an, der abgerufen oder festgelegt wird.

DescriptorType

Gibt an, welcher Deskriptortyp abgerufen oder festgelegt wird. Einer der folgenden Werte muss angegeben werden:

usbspec.h-Konstante Wert USB-Version
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

Gibt die Sprach-ID des Deskriptors an, der abgerufen werden soll, wenn USB_STRING_DESCRIPTOR_TYPE in DescriptorType festgelegt ist. Dieser Member muss für jeden anderen Wert in DescriptorType auf Null festgelegt werden.

Reserved2

Reserviert. Darf nicht verwendet werden.

Hinweise

Treiber können die UsbBuildGetDescriptorRequest-Dienstroutine verwenden, um diese URB zu formatieren. Wenn der Aufrufer einen Puffer übergibt, der zu klein ist, um alle Daten aufzunehmen, schneidet der Bustreiber die Daten ab, um in den Puffer ohne Fehler zu passen.

Wenn der Aufrufer den Gerätedeskriptor anfordert, gibt der Bustreiber eine USB_DEVICE_DESCRIPTOR Datenstruktur zurück.

Wenn der Aufrufer einen Konfigurationsdeskriptor anfordert, gibt der Bustreiber den Konfigurationsdeskriptor in einer USB_CONFIGURATION_DESCRIPTOR-Struktur zurück, gefolgt von den Schnittstellen- und Endpunktdeskriptoren für diese Konfiguration. Der Treiber kann auf die Schnittstellen- und Endpunktdeskriptoren als USB_INTERFACE_DESCRIPTOR - und USB_ENDPOINT_DESCRIPTOR-Strukturen zugreifen. Der Bustreiber gibt auch alle klassenspezifischen oder gerätespezifischen Deskriptoren zurück. Das System stellt die USBD_ParseConfigurationDescriptorEx und USBD_ParseDescriptors Dienstroutinen bereit, um einzelne Deskriptoren im Puffer zu finden.

Wenn der Aufrufer einen Zeichenfolgendeskriptor anfordert, gibt der Bustreiber eine USB_STRING_DESCRIPTOR-Struktur zurück. Die Zeichenfolge selbst befindet sich im bString-Member mit variabler Länge des Zeichenfolgendeskriptors.

Die reservierten Member dieser Struktur müssen als undurchsichtig behandelt werden und sind für die Systemverwendung reserviert.

Anforderungen

Anforderung Wert
Header usb.h (usb.h einschließen)

Weitere Informationen

URB

USB-Strukturen

USB_CONFIGURATION_DESCRIPTOR

USB_DEVICE_DESCRIPTOR

USB_ENDPOINT_DESCRIPTOR

USB_INTERFACE_DESCRIPTOR

USB_STRING_DESCRIPTOR

_URB_HEADER