struttura USB_ENDPOINT_DESCRIPTOR (usbspec.h)

La struttura USB_ENDPOINT_DESCRIPTOR viene usata dai driver client USB per recuperare un descrittore di endpoint definito da USB. I membri di questa struttura sono descritti nella specifica Universal Serial Bus 3.1 disponibile nella raccolta documenti USB. Vedere la sezione 9.6.6.

Sintassi

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

Members

bLength

Specifica la lunghezza, in byte, di questo descrittore.

bDescriptorType

Specifica il tipo di descrittore. Deve essere impostato su USB_ENDPOINT_DESCRIPTOR_TYPE.

bEndpointAddress

Specifica l'indirizzo endpoint definito da USB. I quattro bit di ordine basso specificano il numero di endpoint. Il bit di ordine elevato specifica la direzione del flusso di dati in questo endpoint: 1 per in, 0 per out.

bmAttributes

I due bit di ordine basso specificano il tipo di endpoint, uno dei USB_ENDPOINT_TYPE_CONTROL, USB_ENDPOINT_TYPE_ISOCHRONOUS, USB_ENDPOINT_TYPE_BULK o USB_ENDPOINT_TYPE_INTERRUPT.

wMaxPacketSize

Specifica le dimensioni massime dei pacchetti che possono essere inviate da o a questo endpoint.

bInterval

Il valore bInterval contiene l'intervallo di polling per gli endpoint interrupt e isocroni. Per altri tipi di endpoint, questo valore deve essere ignorato. Questo valore riflette la configurazione del dispositivo nel firmware. I driver non possono modificarli.

L'intervallo di polling, insieme alla velocità del dispositivo e al tipo di controller host, determina la frequenza con cui il driver deve avviare un'interruzione o un trasferimento isocrono. Il valore in bInterval non rappresenta un periodo di tempo fisso. Si tratta di un valore relativo e la frequenza di polling effettiva dipenderà anche dal fatto che il dispositivo e il controller host USB funzionino a bassa, piena o ad alta velocità.

Se il controller host o il dispositivo opera a bassa velocità, il periodo di tempo tra i trasferimenti di interrupt (noto anche come "periodo di polling") viene misurato in unità di 1 millisecondo fotogrammi e il periodo è correlato al valore in bInterval , come indicato nella tabella seguente:

Valore di bInterval Periodo di polling (fotogrammi di 1 millisecondi) Interrompere
da 0 a 15 8 Supportata.
Da 16 a 35 16 Supportata.
Da 36 a 255 32 Supportata.
> 255 Gli intervalli di polling > 255 non sono consentiti dalla specifica USB.
 

Per i dispositivi e i controller host che possono funzionare a tutta velocità, il periodo viene misurato in unità di 1 millisecondi di fotogrammi e il periodo è correlato al valore in bInterval , come indicato nella tabella seguente:

Valore di bInterval Periodo di polling (fotogrammi di 1 millisecondi) Interrompere Isocroni
1 1 Supportata. Supportata.
da 2 a 3 2 Supportata. Supportata.
da 4 a 7 4 Supportata. Supportata.
da 8 a 15 8 Supportata. Supportata.
Da 16 a 31 16 Supportata. Non supportato.
Da 32 a 255 32 Supportata. Non supportato.
> 255 Gli intervalli di polling > 255 non sono consentiti dalla specifica USB.
 

Per i dispositivi e i controller host che possono operare ad alta velocità, il periodo viene misurato in unità di microframe. Sono presenti otto microframe in ogni fotogramma di 1 millisecondo. Il punto è correlato al valore in bInterval dalla formula Period = 2 ** (bInterval - 1), come indicato nella tabella seguente:

Valore di bInterval Periodo di polling (microframe) Interrompere Isocroni
1 1 Supportata. Supportata.
2 2 Supportata. Supportata.
3 4 Supportata. Supportata.
4 8 Supportata. Supportata.
5 16 Supportata. Non supportato.
6 32 Supportata. Non supportato.
da 7 a 255 32 Supportata. Non supportato.
> 255 Gli intervalli di polling > 255 non sono consentiti dalla specifica USB.
 

I mapping nelle tabelle precedenti tra periodi e intervalli di polling sono validi nei sistemi operativi Windows 2000 e versioni successive.

Requisiti

Requisito Valore
Intestazione usbspec.h (include Usb100.h)

Vedi anche

Strutture USB

UsbBuildGetDescriptorRequest

_URB_CONTROL_DESCRIPTOR_REQUEST