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) |