2017-04-20 80 views
1

我一直在嘗試使用了WinUSB同步USB傳輸,並且事實證明了WinUSB總是以最快的速度發送數據可能:USB(了WinUSB)同步帶寬管理

WinUsb_WriteIsochPipe打包傳送緩存,這樣在每個間隔,主機可以發送每個間隔允許的最大字節數。

不過,對於kernel drivers可以明顯縮短髮送數據包:

的MaximumPacketSize值指示同步數據包的最大允許大小。客戶端驅動程序可以將每個同步數據包的大小設置爲小於MaximumPacketSize值的任何值。

我想知道USB音頻如何處理這個問題。據我在規格中可以看到,它們只有兩種可供選擇的接口配置 - 零帶寬和非零帶寬。有一個標誌說明端點是否需要全尺寸數據包。

所以我的問題是:

一)什麼是處理髮送小於全速數據的最佳方式。我是否應該有一整套具有不同最大數據包大小的備用配置?

b)我應該期望能夠發送短於最大的數據包嗎?如果是這樣,爲什麼WinUsb不允許這樣做?

回答

0

也許您必須爲每個要發送的數據包撥打WinUsb_WriteIsochPipe一次。確保使用異步I/O,以便可以提前排隊數十或數百個請求。

+0

不,該函數啓動傳輸,該傳輸必須是使用最大數據包大小的整數幀。 – Timmmm