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