USB_ENDPOINT_DESCRIPTOR-Struktur (usbspec.h)

Die USB_ENDPOINT_DESCRIPTOR-Struktur wird von USB-Clienttreibern verwendet, um einen usb-definierten Endpunktdeskriptor abzurufen. Die Elemente dieser Struktur werden in der Universal Serial Bus 3.1-Spezifikation beschrieben, die in der USB-Dokumentbibliothek verfügbar ist. Siehe Abschnitt 9.6.6.

Syntax

typedef struct _USB_ENDPOINT_DESCRIPTOR {
  UCHAR  bLength;
  UCHAR  bDescriptorType;
  UCHAR  bEndpointAddress;
  UCHAR  bmAttributes;
  USHORT wMaxPacketSize;
  UCHAR  bInterval;
} USB_ENDPOINT_DESCRIPTOR, *PUSB_ENDPOINT_DESCRIPTOR;

Member

bLength

Gibt die Länge dieses Deskriptors in Bytes an.

bDescriptorType

Gibt den Deskriptortyp an. Muss auf USB_ENDPOINT_DESCRIPTOR_TYPE festgelegt werden.

bEndpointAddress

Gibt die USB-definierte Endpunktadresse an. Die vier Bits mit niedriger Reihenfolge geben die Endpunktnummer an. Das hochgeordnete Bit gibt die Richtung des Datenflusses auf diesem Endpunkt an: 1 for in, 0 for out.

bmAttributes

Die beiden Bits mit niedriger Reihenfolge geben den Endpunkttyp an, einer von USB_ENDPOINT_TYPE_CONTROL, USB_ENDPOINT_TYPE_ISOCHRONOUS, USB_ENDPOINT_TYPE_BULK oder USB_ENDPOINT_TYPE_INTERRUPT.

wMaxPacketSize

Gibt die maximale Paketgröße an, die von oder an diesen Endpunkt gesendet werden kann.

bInterval

Der bInterval-Wert enthält das Abrufintervall für Interrupt- und isochrone Endpunkte. Bei anderen Endpunkttypen sollte dieser Wert ignoriert werden. Dieser Wert spiegelt die Konfiguration des Geräts in der Firmware wider. Treiber können sie nicht ändern.

Das Abrufintervall bestimmt zusammen mit der Geschwindigkeit des Geräts und dem Typ des Hostcontrollers die Häufigkeit, mit der der Treiber einen Interrupt oder eine isochrone Übertragung initiieren soll. Der Wert in bInterval stellt keinen festen Zeitraum dar. Es handelt sich um einen relativen Wert, und die tatsächliche Abrufhäufigkeit hängt auch davon ab, ob das Gerät und der USB-Hostcontroller mit niedriger, voller oder hoher Geschwindigkeit arbeiten.

Wenn entweder der Hostcontroller oder das Gerät mit niedriger Geschwindigkeit arbeitet, wird der Zeitraum zwischen Unterbrechungsübertragungen (auch als Abrufzeit bezeichnet) in Einheiten von 1 Millisekundenframes gemessen, und der Zeitraum hängt mit dem Wert in bInterval zusammen, wie in der folgenden Tabelle angegeben:

Wert von bInterval Abfragezeitraum (1 Millisekundenrahmen) Interrupt
0 bis 15 8 Unterstützt.
16 bis 35 16 Unterstützt.
36 bis 255 32 Unterstützt.
> 255 Abrufintervalle > 255 sind durch die USB-Spezifikation verboten.
 

Bei Geräten und Hostcontrollern, die mit voller Geschwindigkeit arbeiten können, wird der Zeitraum in Einheiten von 1 Millisekundenframes gemessen, und der Zeitraum hängt mit dem Wert in bInterval zusammen, wie in der folgenden Tabelle angegeben:

Wert von bInterval Abfragezeitraum (1 Millisekundenrahmen) Interrupt Isochronen
1 1 Unterstützt. Unterstützt.
2 bis 3 2 Unterstützt. Unterstützt.
4 bis 7 4 Unterstützt. Unterstützt.
8 bis 15 8 Unterstützt. Unterstützt.
16 bis 31 16 Unterstützt. Wird nicht unterstützt.
32 bis 255 32 Unterstützt. Wird nicht unterstützt.
> 255 Abrufintervalle > 255 sind durch die USB-Spezifikation verboten.
 

Bei Geräten und Hostcontrollern, die mit hoher Geschwindigkeit arbeiten können, wird der Zeitraum in Einheiten von Microframes gemessen. Es gibt acht Mikroframes in jedem 1 Millisekunden-Frame. Die Periode ist mit dem Wert in bInterval durch die Formel Period = 2 ** (bInterval - 1) verknüpft, wie in der folgenden Tabelle angegeben:

Wert von bInterval Abfragezeitraum (Microframes) Interrupt Isochronen
1 1 Unterstützt. Unterstützt.
2 2 Unterstützt. Unterstützt.
3 4 Unterstützt. Unterstützt.
4 8 Unterstützt. Unterstützt.
5 16 Unterstützt. Wird nicht unterstützt.
6 32 Unterstützt. Wird nicht unterstützt.
7 bis 255 32 Unterstützt. Wird nicht unterstützt.
> 255 Abrufintervalle > 255 sind durch die USB-Spezifikation verboten.
 

Die Zuordnungen in den vorherigen Tabellen zwischen Perioden und Abrufintervallen sind unter Windows 2000 und höheren Betriebssystemen gültig.

Anforderungen

Anforderung Wert
Header usbspec.h (einschließlich Usb100.h)

Weitere Informationen

USB-Strukturen

UsbBuildGetDescriptorRequest

_URB_CONTROL_DESCRIPTOR_REQUEST