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


структура 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 Спецификация USB запрещает интервалы опроса > 255.
 

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

Требования

Требование Значение
Заголовок usbspec.h (включая Usb100.h)

См. также раздел

Структуры USB

UsbBuildGetDescriptorRequest

_URB_CONTROL_DESCRIPTOR_REQUEST