1

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

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

但是对于内核驱动程序,您显然可以发送较短的数据包:

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

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

所以我的问题是:

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

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

4

1 回答 1

0

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

于 2017-04-20T17:48:52.277 回答