Compartilhar via


estrutura USB_ENDPOINT_DESCRIPTOR (usbspec.h)

A estrutura USB_ENDPOINT_DESCRIPTOR é usada por drivers cliente USB para recuperar um descritor de ponto de extremidade definido por USB. Os membros dessa estrutura são descritos na Especificação do Barramento Serial Universal 3.1 disponível em 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 e 0 para fora.

bmAttributes

Os dois bits de ordem baixa especificam o tipo de ponto de extremidade, um de 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 isocronos 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, determinam a frequência com que o driver deve iniciar uma interrupção ou uma transferência isocrona. O valor em bInterval não representa um período fixo 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 de host ou o dispositivo opera em baixa velocidade, o período de tempo entre transferências de interrupção (também conhecido como "ponto") de sondagem é 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) Interromper
0 a 15 8 Suportado.
16 a 35 16 Suportado.
36 a 255 32 Suportado.
> 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) Interromper Isócrono
1 1 Suportado. Suportado.
2 a 3 2 Suportado. Suportado.
4 a 7 4 Suportado. Suportado.
8 a 15 8 Suportado. Suportado.
16 a 31 16 Suportado. Não há suporte.
32 a 255 32 Suportado. 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 milissegundos. 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) Interromper Isócrono
1 1 Suportado. Suportado.
2 2 Suportado. Suportado.
3 4 Suportado. Suportado.
4 8 Suportado. Suportado.
5 16 Suportado. Não há suporte.
6 32 Suportado. Não há suporte.
7 a 255 32 Suportado. 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 em sistemas operacionais Windows 2000 e posteriores.

Requisitos

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

Consulte também

estruturas USB

UsbBuildGetDescriptorRequest

_URB_CONTROL_DESCRIPTOR_REQUEST