USB_ENDPOINT_DESCRIPTOR结构(usbspec.h)
USB 客户端驱动程序使用 USB_ENDPOINT_DESCRIPTOR 结构来检索 USB 定义的终结点描述符。 此结构的成员在 USB 文档库提供的通用串行总线 3.1 规范中介绍。 请参阅 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 表示 out。
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 | USB 规范禁止 > 255 的轮询间隔。 |
对于可以全速运行的设备和主机控制器,周期以 1 毫秒帧为单位进行测量,该时间段与 bInterval 中的值相关,如下表所示:
bInterval 的值 | 轮询周期(1 毫秒帧) | 中断 | 等时的 |
---|---|---|---|
1 | 1 | 支持。 | 支持。 |
2 到 3 | 2 | 支持。 | 支持。 |
4 到 7 | 4 | 支持。 | 支持。 |
8 到 15 | 8 | 支持。 | 支持。 |
16 到 31 | 16 | 支持。 | 不支持。 |
32 到 255 | 32 | 支持。 | 不支持。 |
> 255 | USB 规范禁止 > 255 的轮询间隔。 |
对于可以高速运行的设备和主机控制器,周期以微帧为单位进行测量。 每 1 毫秒帧有 8 个微帧。 句点与公式 Period = 2 ** (bInterval - 1) bInterval 中的值相关,如下表所示:
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) |