共用方式為


USBD_PIPE_INFORMATION結構 (usb.h)

USBD_PIPE_INFORMATION 結構是由 USB 用戶端驅動程式用來保存來自特定介面之管道的相關信息。

語法

typedef struct _USBD_PIPE_INFORMATION {
  USHORT           MaximumPacketSize;
  UCHAR            EndpointAddress;
  UCHAR            Interval;
  USBD_PIPE_TYPE   PipeType;
  USBD_PIPE_HANDLE PipeHandle;
  ULONG            MaximumTransferSize;
  ULONG            PipeFlags;
} USBD_PIPE_INFORMATION, *PUSBD_PIPE_INFORMATION;

成員

MaximumPacketSize

指定這個管道處理的最大封包大小,以位元組為單位。 此值必須小於或等於端點描述元中 wMaxPacketSize 的值。 如果未在 PipeFlags 成員中設定USBD_PF_CHANGE_MAX_PACKET旗標,USB 堆疊會忽略此值。

對於高速非時態端點,收到的 MaximumPacketSize 值包含可在其他交易中傳輸的位元組數目,如果端點支持這些位元組。 如需詳細資訊,請參閱。

EndpointAddress

指定此管道的總線位址。

Interval

包含輪詢間隔,以對應端點描述元 (USB_ENDPOINT_DESCRIPTOR) 中的 bInterval 字段表示。 這個值只適用於中斷和不時針管道。 對於其他類型的管道,應該忽略此值。 它會反映裝置在韌體中的組態。 驅動程式無法變更。

輪詢間隔以及裝置的速度和主機控制器類型,決定驅動程式應該起始傳輸的頻率。 Interval 中的值不代表固定的時間量。 它是相對值,而實際的輪詢頻率也會取決於裝置和USB主機控制器在低、完整或高速運作。

如果主機控制器或裝置以低速運作,傳輸之間的時間週期(也稱為「輪詢期間」)是以 1 毫秒畫面為單位來測量,而期間與 Interval 中的值相關,如下表所示:

間隔 輪詢期間 (1 毫秒畫面) 中斷 等時的
0 到 15 8 支援。 不支援。
16 到 35 16 支援。 不支援。
36 到 255 32 支援。 不支援。
 

對於可以全速運作的裝置和主機控制器,期間是以 1 毫秒畫面為單位來測量。 若為全速等時傳輸,Interval 值和輪詢期間一律為 1。 該值表示數據可以在每一個畫面中傳輸。 針對全速中斷傳輸,輪詢期間衍生自 Interval 值。 下表指出中斷和不時點端點的支援值。

間隔 輪詢期間 (1 毫秒畫面) 中斷 等時的
1 1 支援。 支援。
2 到 3 2 支援。 不支援。
4 到 7 4 支援。 不支援。
8 到 15 8 支援。 不支援。
16 到 31 16 支援。 不支援。
32 到 255 32 支援。 不支援。
 

對於可以高速運作的裝置和主機控制器,期間是以微框架單位來測量。 輪詢期間是使用公式 Polling period = 2 ** (Interval - 1)衍生自 Interval 值。 下表指出匯出值:

間隔 輪詢期間 (微框架) 中斷 等時的
1 1 支援。 支援。
2 2 支援。 支援。
3 4 支援。 支援。
4 8 支援。 支援。
5 16 支援。 不支援。
6 到 255 32 支援。 不支援。
 

高速非時速傳輸的支持輪詢期為 1、2、4 和 8。 如果客戶端驅動程式提交URB_FUNCTION_ISOCH_TRANSFER要求,要求具有大於8的輪詢期間,則要求會因為狀態USBD_STATUS_INVALID_PARAMETER而失敗。 如需隨機傳輸的相關信息,請參閱 如何將數據傳輸至USB異時針端點

在期間和輪詢間隔之間的上述數據表中,對應在 Windows 2000 和更新版本的 Windows作系統Microsoft有效。

PipeType

指定此管道使用的傳輸類型。 這些值定義於 USBD_PIPE_TYPE 列舉中。

PipeHandle

指定大量或中斷管道的不透明句柄。 當用戶端驅動程式選取具有類型為 URB 的裝置組態 URB_FUNCTION_SELECT_CONFIGURATION時,或當用戶端驅動程式變更具有類型為 URB 且類型為 URB_FUNCTION_SELECT_INTERFACE 的介面設定時,主機控制器驅動程式會傳回此句柄。

MaximumTransferSize

指定此管道上傳輸要求的大小上限,以位元組為單位。 在 Windows Server 2003、Windows XP 和更新版本的作系統中,不會使用此成員,而且不包含有效的數據。

如需不同 Windows 版本中每種 USB 端點傳輸大小上限的相關信息,請參閱 USB 傳輸和封包大小

Note For WinUSB,請勿使用 MaximumTransferSize 來判斷 USB 傳輸的大小上限。 請改用 WinUsb_GetPipePolicy擷取MAXIMUM_TRANSFER_SIZE值。
 

PipeFlags

包含管線旗標的位 OR,驅動程式可用來指定管道的特定可設定特性。 驅動程式會在選取具有函式類型為URB_FUNCTION_SELECT_CONFIGURATION之 URB 要求的 USB 裝置組態時,指定這些管道特性。

下表說明每個管道旗標的意義:

旗標名稱 意義
USBD_PF_CHANGE_MAX_PACKET 表示驅動程式正在覆寫端點封包大小上限,其值在 maximumPacketSize 中指定。 此值必須小於或等於管道端點描述元中指定的預設最大值。

言論

此結構包含從裝置介面描述元擷取之端點的資訊。 如需如何從介面描述元取得 USBD_PIPE_INFORMATION 中資訊的說明,請參閱 如何選取 USB 裝置的設定

MaximumPacketSize 值衍生自端點描述元 wMaxPacketSize 位元的第一個 11 位,指出主機控制器可以在單一交易中傳送或接收的位元組數目上限。

一般而言,對於高速傳輸,主機控制器會傳送或接收每個微框架一筆交易。 不過,高速、高頻寬不時或中斷端點可透過其他交易支援較高的數據速率。 這可讓主控制器在單一微框架中傳輸最多 3072 個字節。 該端點類型所支持的額外交易數目是由 wMaxPacketS ize12..11 位表示(最小有效位為 0)。 該數位可以是 0、1 或 2。 如果 12..11 指出 0,端點不支援每個微框架的額外交易。 如果數位為 1,則主機控制器可以傳送額外的交易(每微框架總共有兩筆交易):2 表示另外兩筆交易(每個微框架總共有三筆交易)。

MaximumPacketSize 中接收的值,表示主機控制器可以在一個微框架中從端點傳送或接收的位元組總數。 如果端點支持這些位元組,則值會包含其他交易中的位元元組數目。 例如,請考慮下列隨機端點特性:

  • wMaxPacketSize 為 1,024
  • 12..11 指出 2
  • 間隔 為 1。
在上述範例中,MaximumPacketSize 中收到的值為 3,072 個字節(交易總數 * wMaxPacketSize)。 因為 間隔 為 1,輪詢期間為 1。 因此,主控制器可以在框架的每個微框架中傳輸 3,072 個字節。 在單一 I/O 要求中(如一個 URB 所述),主機控制器可以傳輸不超過 24,576 個字節。

要求

要求 價值
標頭 usb.h (包括 Usb.h)

另請參閱

USB 結構

USB_ENDPOINT_DESCRIPTOR