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 代表 in,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毫秒框架有八個微框架。 句點與 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) |