【问题标题】:USB (WinUsb) isochronous bandwidth managementUSB (WinUsb) 同步带宽管理
【发布时间】:2017-09-17 08:44:24
【问题描述】:

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

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

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

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

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

所以我的问题是:

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

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

【问题讨论】:

    标签: usb winusb


    【解决方案1】:

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

    【讨论】:

    猜你喜欢
    • 2018-04-27
    • 1970-01-01
    • 1970-01-01
    • 2017-09-22
    • 1970-01-01
    • 2013-02-20
    • 2017-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多