首页 文章

USB(WinUsb)等时带宽管理

提问于
浏览
1

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

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

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

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

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

所以我的问题是:

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

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

1 回答

  • 0

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

相关问题