如何忽略USB轮询限制?

时间:2019-02-16 19:21:46

标签: usb driver polling libusb

我有一个USB设备,其相关的端点描述符声明了bInterval,对于我对此外围设备的使用来说,它太高了。我有理由相信它可以处理更高的频率,与它声明的相反。

它的唯一接口的bDeviceClass为0,bInterfaceClass为3,这表示它是HID。

我希望能够使用libusb查询此设备。目前,我将WinUSB驱动程序绑定到此设备。但是,使用libusb调用中断传输会将查询(到设备)的延迟延迟到先前的查询离开时间,再加上设备指定的最短轮询时间。

例如,如果设备是FullSpeed,而我的bInterval是10,而查询则留在X=0,073s上;尽管在X+10*1ms=0,083s处调用了libusb函数,但我的下一个查询仍留在0,076s处。延迟是由驱动程序引起的,并在查询离开时发生。

我该如何忽略轮询间隔?

我对USB外设很陌生,我在网上找到的所有内容似乎都是针对鼠标/键盘或Linux的。我需要编写自己的驱动程序吗?完全?是否可以在不了解USB规范的所有深度的情况下修改现有WinUSB驱动程序的间隔处理部分?有编写驱动程序的替代方法吗?

非通用信息:在这种情况下,我使用的是Windows 10,设备是FullSpeed,bInterval是8,我正在查询in(设备->主机)中断端点,并且使用WinUSB v6.1.7600.16385。

这是我之前的问题How are USB peripherals' bIntervals enforced?之后的问题,但不同的问题应分开存放。

0 个答案:

没有答案