Поделиться через


структура USB_ENDPOINT_DESCRIPTOR (usbspec.h)

Структура USB_ENDPOINT_DESCRIPTOR используется драйверами USB-клиента для получения дескриптора конечной точки, определяемой USB. Члены этой структуры описаны в спецификации универсальной последовательной шины 3.1, доступной в библиотеке документов USB. См. раздел 9.6.6.

Синтаксис

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

Члены

bLength

Указывает длину дескриптора в байтах.

bDescriptorType

Указывает тип дескриптора. Необходимо задать значение USB_ENDPOINT_DESCRIPTOR_TYPE.

bEndpointAddress

Указывает адрес конечной точки, определяемый USB. Четыре бита с низким порядком указывают номер конечной точки. Бит высокого порядка указывает направление потока данных на этой конечной точке: 1 для, 0 для исходящих.

bmAttributes

Два бита с низким порядком указывают тип конечной точки, одну из USB_ENDPOINT_TYPE_CONTROL, USB_ENDPOINT_TYPE_ISOCHRONOUS, USB_ENDPOINT_TYPE_BULK или USB_ENDPOINT_TYPE_INTERRUPT.

wMaxPacketSize

Указывает максимальный размер пакета, который можно отправить из этой конечной точки или из нее.

bInterval

Значение bInterval содержит интервал опроса для прерываний и изохронных конечных точек. Для других типов конечной точки это значение следует игнорировать. Это значение отражает конфигурацию устройства в встроенном ПО. Драйверы не могут изменить его.

Интервал опроса вместе со скоростью устройства и типом контроллера узла определяет частоту, с которой драйвер должен инициировать прерывание или изохронную передачу. Значение в bInterval не представляет фиксированного количества времени. Это относительное значение, и фактическая частота опроса также зависит от того, работает ли устройство и контроллер USB-узла на низкой, полной или высокой скорости.

Если контроллер узла или устройство работает с низкой скоростью, период времени между передачей прерываний (также известный как период опроса) измеряется в единицах 1 миллисекунда кадров, а период связан со значением в bInterval, как указано в следующей таблице:

Значение bInterval Период опроса (1 миллисекунда кадров) Прерывать
От 0 до 15 8 Поддержанный.
От 16 до 35 16 Поддержанный.
От 36 до 255 32 Поддержанный.
> 255 Интервалы опроса > 255 запрещены спецификацией USB.
 

Для устройств и контроллеров узлов, которые могут работать в полной скорости, период измеряется в единицах в 1 миллисекундах кадров, а период связан со значением в bInterval, как указано в следующей таблице:

Значение bInterval Период опроса (1 миллисекунда кадров) Прерывать Изохронный
1 1 Поддержанный. Поддержанный.
От 2 до 3 2 Поддержанный. Поддержанный.
От 4 до 7 4 Поддержанный. Поддержанный.
От 8 до 15 8 Поддержанный. Поддержанный.
От 16 до 31 16 Поддержанный. Не поддерживается.
От 32 до 255 32 Поддержанный. Не поддерживается.
> 255 Интервалы опроса > 255 запрещены спецификацией USB.
 

Для устройств и контроллеров узлов, которые могут работать с высокой скоростью, период измеряется в единицах микрофреймов. В каждом 1 миллисекундах есть восемь микрофреймов. Период связан со значением в bInterval по формуле Period = 2 ** (bInterval – 1), как указано в следующей таблице:

Значение bInterval Период опроса (микрофреймы) Прерывать Изохронный
1 1 Поддержанный. Поддержанный.
2 2 Поддержанный. Поддержанный.
3 4 Поддержанный. Поддержанный.
4 8 Поддержанный. Поддержанный.
5 16 Поддержанный. Не поддерживается.
6 32 Поддержанный. Не поддерживается.
От 7 до 255 32 Поддержанный. Не поддерживается.
> 255 Интервалы опроса > 255 запрещены спецификацией USB.
 

Сопоставления в предыдущих таблицах между периодами и интервалами опроса допустимы в операционных системах Windows 2000 и более поздних версий.

Требования

Требование Ценность
заголовка usbspec.h (include Usb100.h)

См. также

СТРУКТУРЫ USB

UsbBuildGetDescriptorRequest

_URB_CONTROL_DESCRIPTOR_REQUEST