estrutura USB_ENDPOINT_DESCRIPTOR (usbspec.h)

A estrutura USB_ENDPOINT_DESCRIPTOR é usada por drivers de cliente USB para recuperar um descritor de ponto de extremidade definido por USB. Os membros dessa estrutura são descritos na Especificação universal do Barramento Serial 3.1 disponível na Biblioteca de Documentos USB. Consulte a seção 9.6.6.

Sintaxe

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

Membros

bLength

Especifica o comprimento, em bytes, desse descritor.

bDescriptorType

Especifica o tipo de descritor. Deve ser definido como USB_ENDPOINT_DESCRIPTOR_TYPE.

bEndpointAddress

Especifica o endereço do ponto de extremidade definido por USB. Os quatro bits de ordem baixa especificam o número do ponto de extremidade. O bit de alta ordem especifica a direção do fluxo de dados neste ponto de extremidade: 1 para entrada, 0 para fora.

bmAttributes

Os dois bits de baixa ordem especificam o tipo de ponto de extremidade, um dos USB_ENDPOINT_TYPE_CONTROL, USB_ENDPOINT_TYPE_ISOCHRONOUS, USB_ENDPOINT_TYPE_BULK ou USB_ENDPOINT_TYPE_INTERRUPT.

wMaxPacketSize

Especifica o tamanho máximo do pacote que pode ser enviado de ou para esse ponto de extremidade.

bInterval

O valor bInterval contém o intervalo de sondagem para pontos de extremidade isócronos e de interrupção. Para outros tipos de ponto de extremidade, esse valor deve ser ignorado. Esse valor reflete a configuração do dispositivo no firmware. Os drivers não podem alterá-lo.

O intervalo de sondagem, juntamente com a velocidade do dispositivo e o tipo de controlador de host, determina a frequência com que o driver deve iniciar uma interrupção ou uma transferência isócrona. O valor em bInterval não representa uma quantidade fixa de tempo. É um valor relativo e a frequência de sondagem real também dependerá se o dispositivo e o controlador de host USB operam em velocidade baixa, completa ou alta.

Se o controlador host ou o dispositivo operar em baixa velocidade, o período de tempo entre as transferências de interrupção (também conhecido como "período" de sondagem) será medido em unidades de 1 milissegundos, e o período estará relacionado ao valor em bInterval , conforme indicado na tabela a seguir:

Valor de bInterval Período de sondagem (quadros de 1 milissegundos) Interrupção
0 a 15 8 Com suporte.
16 a 35 16 Com suporte.
36 a 255 32 Com suporte.
> 255 Intervalos de sondagem > 255 são proibidos pela especificação USB.
 

Para dispositivos e controladores de host que podem operar a toda velocidade, o período é medido em unidades de 1 milissegundos de quadros e o período está relacionado ao valor em bInterval , conforme indicado na tabela a seguir:

Valor de bInterval Período de sondagem (quadros de 1 milissegundos) Interrupção Isócrono
1 1 Com suporte. Com suporte.
2 a 3 2 Com suporte. Com suporte.
4 a 7 4 Com suporte. Com suporte.
8 a 15 8 Com suporte. Com suporte.
16 a 31 16 Com suporte. Não há suporte.
32 a 255 32 Com suporte. Não há suporte.
> 255 Intervalos de sondagem > 255 são proibidos pela especificação USB.
 

Para dispositivos e controladores de host que podem operar em alta velocidade, o período é medido em unidades de microframes. Há oito microframes em cada quadro de 1 milissegundo. O período está relacionado ao valor em bInterval pela fórmula Period = 2 ** (bInterval - 1), conforme indicado na tabela a seguir:

Valor de bInterval Período de sondagem (microframes) Interrupção Isócrono
1 1 Com suporte. Com suporte.
2 2 Com suporte. Com suporte.
3 4 Com suporte. Com suporte.
4 8 Com suporte. Com suporte.
5 16 Com suporte. Não há suporte.
6 32 Com suporte. Não há suporte.
7 a 255 32 Com suporte. Não há suporte.
> 255 Intervalos de sondagem > 255 são proibidos pela especificação USB.
 

Os mapeamentos nas tabelas anteriores entre períodos e intervalos de sondagem são válidos nos sistemas operacionais Windows 2000 e posteriores.

Requisitos

Requisito Valor
Cabeçalho usbspec.h (inclua Usb100.h)

Confira também

Estruturas USB

UsbBuildGetDescriptorRequest

_URB_CONTROL_DESCRIPTOR_REQUEST