структура 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) |