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