【发布时间】:2017-09-17 08:44:24
【问题描述】:
我一直在尝试使用 WinUsb 进行同步 USB 传输,结果发现 WinUsb 总是尽可能快地发送数据:
WinUsb_WriteIsochPipe 将传输缓冲区打包,以便在每个时间间隔内,主机可以发送每个时间间隔允许的最大字节数。
但是对于kernel drivers,您显然可以发送较短的数据包:
MaximumPacketSize 值表示同步数据包的最大允许大小。客户端驱动程序可以将每个同步数据包的大小设置为小于 MaximumPacketSize 值的任何值。
我想知道 USB 音频如何处理这个问题。据我在规范中看到的,它们只是接口的两种替代配置——一种是零带宽,另一种是非零带宽。有一个标志表明端点是否需要全尺寸数据包。
所以我的问题是:
a) 处理发送低于全速数据的最佳方法是什么。我是否应该拥有一整套具有不同最大数据包大小的备用配置?
b) 我应该期望能够发送短于最大值的数据包吗?如果是这样,为什么 WinUsb 不允许这样做?
【问题讨论】: