estructura USB_ENDPOINT_DESCRIPTOR (usbspec.h)

Los controladores de cliente USB usan la estructura USB_ENDPOINT_DESCRIPTOR para recuperar un descriptor de punto de conexión definido por USB. Los miembros de esta estructura se describen en la especificación Universal Serial Bus 3.1 disponible en la biblioteca de documentos USB. Consulte la sección 9.6.6.

Sintaxis

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

Miembros

bLength

Especifica la longitud, en bytes, de este descriptor.

bDescriptorType

Especifica el tipo de descriptor. Debe establecerse en USB_ENDPOINT_DESCRIPTOR_TYPE.

bEndpointAddress

Especifica la dirección del punto de conexión definido por USB. Los cuatro bits de orden bajo especifican el número de punto de conexión. El bit de orden superior especifica la dirección del flujo de datos en este punto de conexión: 1 para entrada y 0 para salida.

bmAttributes

Los dos bits de orden bajo especifican el tipo de punto de conexión, uno de USB_ENDPOINT_TYPE_CONTROL, USB_ENDPOINT_TYPE_ISOCHRONOUS, USB_ENDPOINT_TYPE_BULK o USB_ENDPOINT_TYPE_INTERRUPT.

wMaxPacketSize

Especifica el tamaño máximo de paquete que se puede enviar desde o a este punto de conexión.

bInterval

El valor bInterval contiene el intervalo de sondeo de los puntos de conexión de interrupción e isócrono. En el caso de otros tipos de punto de conexión, este valor debe omitirse. Este valor refleja la configuración del dispositivo en el firmware. Los controladores no pueden cambiarlo.

El intervalo de sondeo, junto con la velocidad del dispositivo y el tipo de controlador host, determinan la frecuencia con la que el controlador debe iniciar una interrupción o una transferencia isócrónica. El valor de bInterval no representa una cantidad fija de tiempo. Es un valor relativo y la frecuencia de sondeo real también dependerá de si el dispositivo y el controlador del host USB funcionan a baja, completa o alta velocidad.

Si el controlador host o el dispositivo funcionan a baja velocidad, el período de tiempo entre transferencias de interrupción (también conocido como "período de sondeo") se mide en unidades de 1 milisegundos y el período está relacionado con el valor de bInterval como se indica en la tabla siguiente:

Valor de bInterval Período de sondeo (fotogramas de 1 milisegundos) Interrupción
De 0 a 15 8 Compatible.
De 16 a 35 16 Compatible.
De 36 a 255 32 Compatible.
> 255 Los intervalos de sondeo > 255 están prohibidos por la especificación USB.
 

En el caso de los dispositivos y controladores host que pueden funcionar a toda velocidad, el período se mide en unidades de 1 milisegundos y el período está relacionado con el valor de bInterval , como se indica en la tabla siguiente:

Valor de bInterval Período de sondeo (fotogramas de 1 milisegundos) Interrupción Isócrono
1 1 Compatible. Compatible.
De 2 a 3 2 Compatible. Compatible.
De 4 a 7 4 Compatible. Compatible.
8 a 15 8 Compatible. Compatible.
De 16 a 31 16 Compatible. No compatible.
De 32 a 255 32 Compatible. No compatible.
> 255 Los intervalos de sondeo > 255 están prohibidos por la especificación USB.
 

En el caso de los dispositivos y controladores host que pueden funcionar a alta velocidad, el período se mide en unidades de microframes. Hay ocho microframes en cada fotograma de 1 milisegundos. El punto está relacionado con el valor de bInterval por la fórmula Period = 2 ** (bInterval - 1), como se indica en la tabla siguiente:

Valor de bInterval Período de sondeo (microframes) Interrupción Isócrono
1 1 Compatible. Compatible.
2 2 Compatible. Compatible.
3 4 Compatible. Compatible.
4 8 Compatible. Compatible.
5 16 Compatible. No compatible.
6 32 Compatible. No compatible.
De 7 a 255 32 Compatible. No compatible.
> 255 La especificación USB prohíbe los intervalos de sondeo > 255.
 

Las asignaciones de las tablas anteriores entre períodos e intervalos de sondeo son válidas en los sistemas operativos Windows 2000 y versiones posteriores.

Requisitos

Requisito Valor
Header usbspec.h (incluye Usb100.h)

Consulte también

Estructuras USB

UsbBuildGetDescriptorRequest

_URB_CONTROL_DESCRIPTOR_REQUEST