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