_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;
};
Angehörige
Hdr
Zeigen Sie auf eine _URB_HEADER Struktur, die die URB-Headerinformationen angibt. Hdr.Function- muss eine der folgenden Sein:
Hdr.Length- muss sizeof(_URB_CONTROL_DESCRIPTOR_REQUEST)
entsprechen.
Reserved
Reserviert. Nicht verwenden.
Reserved0
Reserviert. Nicht verwenden.
TransferBufferLength
Gibt die Länge des in TransferBuffer angegebenen Puffers in Bytes an oder wird in TransferBufferMDL-beschrieben. Der Hostcontrollertreiber gibt die Anzahl der Bytes zurück, die an die Pipe in diesem Element gesendet oder 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 NULL- ist, wenn ein Puffer in TransferBuffer-bereitgestellt wird. Diese MDL muss aus nicht seitengebundenen Pools zugewiesen werden.
UrbLink
Reserviert. Nicht verwenden.
hca
Reserviert. Nicht verwenden.
Reserved1
Reserviert. Nicht verwenden.
Index
Gibt den gerätedefinierten Index des Deskriptors an, der abgerufen oder festgelegt wird.
DescriptorType
Gibt an, welche Art von Beschreibung 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 abzurufenden Deskriptors an, wenn USB_STRING_DESCRIPTOR_TYPE in DescriptorType-festgelegt wird. Dieses Element muss für einen anderen Wert in DescriptorTypeauf Null festgelegt werden.
Reserved2
Reserviert. Nicht verwenden.
Bemerkungen
Treiber können die UsbBuildGetDescriptorRequest Dienstroutine verwenden, um diese URB zu formatieren. Wenn der Aufrufer einen Puffer zu klein übergibt, um alle Daten zu speichern, schneidet der Bustreiber die Daten ab, damit sie ohne Fehler in den Puffer passen.
Wenn der Aufrufer die Gerätebeschreibung 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 klassenspezifische oder gerätespezifische Deskriptoren zurück. Das System stellt die USBD_ParseConfigurationDescriptorEx und USBD_ParseDescriptors Dienstroutinen bereit, um einzelne Deskriptoren innerhalb des Puffers zu finden.
Wenn der Aufrufer einen Zeichenfolgendeskriptor anfordert, gibt der Bustreiber eine USB_STRING_DESCRIPTOR Struktur zurück. Die Zeichenfolge selbst befindet sich in der Variablenlänge bString- Member 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 (include Usb.h) |