Partager via


structure USB_ENDPOINT_DESCRIPTOR (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 à bibliothèque de documents USB. Consultez 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 de faible ordre spécifient le numéro de point de terminaison. Le bit à ordre élevé spécifie la direction du flux de données sur ce point de terminaison : 1 pour in, 0 pour sortie.

bmAttributes

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

wMaxPacketSize

Spécifie la taille maximale des paquets qui peut être envoyée depuis ou vers ce point de terminaison.

bInterval

La valeur bInterval contient l’intervalle d’interrogation des points de terminaison d’interruption et isochrones. 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 avec laquelle le pilote doit lancer une interruption ou un transfert isochrone. La valeur de bInterval ne représente pas une durée fixe. Il s’agit d’une valeur relative, et la fréquence d’interrogation réelle dépend également du fonctionnement de l’appareil et du contrôleur hôte USB à faible, pleine ou haute vitesse.

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

Valeur de bInterval Période d’interrogation (images de 1 millisecondes) Interrompre
0 à 15 8 Supporté.
16 à 35 16 Supporté.
36 à 255 32 Supporté.
> 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 de 1 millisecondes 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 millisecondes) Interrompre Isochrone
1 1 Supporté. Supporté.
2 à 3 2 Supporté. Supporté.
4 à 7 4 Supporté. Supporté.
8 à 15 8 Supporté. Supporté.
16 à 31 16 Supporté. Non pris en charge.
32 à 255 32 Supporté. 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é le tableau suivant :

Valeur de bInterval Période d’interrogation (microframes) Interrompre Isochrone
1 1 Supporté. Supporté.
2 2 Supporté. Supporté.
3 4 Supporté. Supporté.
4 8 Supporté. Supporté.
5 16 Supporté. Non pris en charge.
6 32 Supporté. Non pris en charge.
7 à 255 32 Supporté. 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 versions ultérieures.

Exigences

Exigence Valeur
d’en-tête usbspec.h (include Usb100.h)

Voir aussi

structures USB

usbBuildGetDescriptorRequest

_URB_CONTROL_DESCRIPTOR_REQUEST