USB(WinUsb)等时带宽管理

时间:2017-04-20 15:44:28

标签: usb winusb

我一直在尝试使用WinUsb进行同步USB传输,事实证明WinUsb总是尽快发送数据:

  

WinUsb_WriteIsochPipe对传输缓冲区进行打包,以便在每个时间间隔内,主机可以发送每个时间间隔允许的最大字节数。

然而,对于kernel drivers,您显然可以发送更短的数据包:

  

MaximumPacketSize值表示同步数据包的最大允许大小。客户端驱动程序可以将每个等时数据包的大小设置为小于MaximumPacketSize值的任何值。

我想知道USB音频如何处理这个问题。据我在规范中看到,它们只是接口的两种替代配置 - 零带宽和非零带宽。有一个标志表明端点是否需要全尺寸数据包。

所以我的问题是:

a)处理发送低于全速数据的最佳方法是什么。我是否应该拥有一组具有不同最大数据包大小的备用配置?

b)我是否希望能够发送短于最大数据包?如果是这样,为什么WinUsb不允许这样做?

1 个答案:

答案 0 :(得分:0)

也许您必须为要发送的每个数据包拨打WinUsb_WriteIsochPipe一次。确保使用异步I / O,这样您就可以提前排队数十或数百个请求。