USB(WinUsb)同步带宽管理

USB(WinUsb)同步带宽管理,usb,winusb,Usb,Winusb,我一直在尝试使用WinUsb进行同步USB传输,结果证明WinUsb总是尽可能快地发送数据: 将传输缓冲区打包,以便在每个间隔中,主机可以发送每个间隔允许的最大字节数 但是,对于以下情况,您显然可以发送较短的数据包: MaximumPacketSize值表示同步数据包的最大允许大小。客户端驱动程序可以将每个等时数据包的大小设置为小于MaximumPacketSize值的任何值 我想知道USB音频是如何处理这个问题的。就我在规范中所见,它们只是接口的两种可选配置—零带宽配置和非零带宽配置。有一个标

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

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

但是,对于以下情况,您显然可以发送较短的数据包:

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

我想知道USB音频是如何处理这个问题的。就我在规范中所见,它们只是接口的两种可选配置—零带宽配置和非零带宽配置。有一个标志表示端点是否需要完整大小的数据包

因此,我的问题是:

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


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

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

对于要发送的每个数据包,可能必须调用
WinUsb\u WriteSochPipe
一次。确保使用异步I/O,以便您可以提前将数十个或数百个请求排队。

否,该函数启动传输,传输必须是使用最大数据包大小的整数帧。我遇到了一个类似(可能相同)的问题:否,该函数启动传输,传输必须是使用最大数据包大小的整数帧。我遇到了类似(可能相同)的问题: