Partager via


USB_ENDPOINT_DESCRIPTOR structure (usbspec.h)

La structure USB_ENDPOINT_DESCRIPTOR est utilisée par les pilotes clients USB pour récupérer un descripteur de point de terminaison défini par USB. Les membres de cette structure sont décrits dans la spécification Universal Serial Bus 3.1 disponible dans la bibliothèque de documents USB. Voir la section 9.6.6.

Syntaxe

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

Membres

bLength

Spécifie la longueur, en octets, de ce descripteur.

bDescriptorType

Spécifie le type de descripteur. Doit être défini sur USB_ENDPOINT_DESCRIPTOR_TYPE.

bEndpointAddress

Spécifie l’adresse de point de terminaison définie par USB. Les quatre bits d’ordre inférieur spécifient le numéro de point de terminaison. Le bit d’ordre élevé spécifie la direction du flux de données sur ce point de terminaison : 1 pour in, 0 pour out.

bmAttributes

Les deux bits d’ordre inférieur spécifient le type de point de terminaison, l’un des USB_ENDPOINT_TYPE_CONTROL, USB_ENDPOINT_TYPE_ISOCHRONOUS, USB_ENDPOINT_TYPE_BULK ou USB_ENDPOINT_TYPE_INTERRUPT.

wMaxPacketSize

Spécifie la taille maximale des paquets pouvant être envoyés depuis ou vers ce point de terminaison.

bInterval

La valeur bInterval contient l’intervalle d’interrogation pour les points de terminaison d’interruption et d’isochrone. Pour les autres types de point de terminaison, cette valeur doit être ignorée. Cette valeur reflète la configuration de l’appareil dans le microprogramme. Les pilotes ne peuvent pas le modifier.

L’intervalle d’interrogation, ainsi que la vitesse de l’appareil et le type de contrôleur hôte, déterminent la fréquence à laquelle le pilote doit initier une interruption ou un transfert isochrone. La valeur dans bInterval ne représente pas une durée fixe. Il s’agit d’une valeur relative, et la fréquence d’interrogation réelle varie également selon que l’appareil et le contrôleur hôte USB fonctionnent à basse, pleine ou haute vitesse.

Si le contrôleur hôte ou l’appareil fonctionne à faible vitesse, la période entre les transferts d’interruptions (également appelée « période ») est mesurée en unités d’images de 1 milliseconde, et la période est liée à la valeur dans bInterval , comme indiqué dans le tableau suivant :

Valeur de bInterval Période d’interrogation (images de 1 milliseconde) Interruption
0 à 15 8 Pris en charge.
16 à 35 16 Pris en charge.
36 à 255 32 Pris en charge.
255 > Les intervalles d’interrogation > 255 sont interdits par la spécification USB.
 

Pour les appareils et les contrôleurs hôtes qui peuvent fonctionner à pleine vitesse, la période est mesurée en unités d’images de 1 milliseconde, et la période est liée à la valeur dans bInterval , comme indiqué dans le tableau suivant :

Valeur de bInterval Période d’interrogation (images de 1 milliseconde) Interruption Isochrone
1 1 Pris en charge. Pris en charge.
2 à 3 2 Pris en charge. Pris en charge.
4 à 7 4 Pris en charge. Pris en charge.
8 à 15 8 Pris en charge. Pris en charge.
16 à 31 16 Pris en charge. Non pris en charge.
32 à 255 32 Pris en charge. Non pris en charge.
255 > Les intervalles d’interrogation > 255 sont interdits par la spécification USB.
 

Pour les appareils et les contrôleurs hôtes qui peuvent fonctionner à grande vitesse, la période est mesurée en unités de microframes. Il existe huit microframes dans chaque image de 1 milliseconde. La période est liée à la valeur dans bInterval par la formule Period = 2 ** (bInterval - 1), comme indiqué dans le tableau suivant :

Valeur de bInterval Période d’interrogation (microframes) Interruption Isochrone
1 1 Pris en charge. Pris en charge.
2 2 Pris en charge. Pris en charge.
3 4 Pris en charge. Pris en charge.
4 8 Pris en charge. Pris en charge.
5 16 Pris en charge. Non pris en charge.
6 32 Pris en charge. Non pris en charge.
7 à 255 32 Pris en charge. Non pris en charge.
> 255 Les intervalles d’interrogation > 255 sont interdits par la spécification USB.
 

Les mappages dans les tables précédentes entre les périodes et les intervalles d’interrogation sont valides dans les systèmes d’exploitation Windows 2000 et ultérieurs.

Configuration requise

Condition requise Valeur
En-tête usbspec.h (inclure Usb100.h)

Voir aussi

USB Structures

UsbBuildGetDescriptorRequest

_URB_CONTROL_DESCRIPTOR_REQUEST