有没有办法保存USB设备,以便在重新插入后可以防止重新枚举?

时间:2012-06-08 03:04:59

标签: c++ windows usb

首先,我们正在使用与USB设备连接的第三方软件。当此USB设备断开连接并重新连接时,软件无法与设备通信将停止工作,直到程序重新启动。即它仅在启动时检测USB设备。

Windows可以看到该设备,但每次重新连接时都会经历完整的检测/驱动程序安装过程,即使它已重新连接到同一个USB端口。

这里的困难在于,我们无法修改第三方软件,以便在拔下设备后轮询相应的USB设备。

因此,我们想询问是否有人知道如何编写c ++程序来保存USB状态/寄存器,防止Windows在重新连接时重新枚举USB端口,并恢复保存状态/寄存器。如果是这样,我们将非常感谢这方面的一些指导。当然,我们对解决这个问题的其他方法持开放态度。

1 个答案:

答案 0 :(得分:3)

您无法在应用程序级别执行此操作。 USB由驱动程序管理。此外,虽然USB设备的详细信息由特定驱动程序管理,但基本功能(如枚举)由标准Windows USB驱动程序处理。这是合乎逻辑的:Windows必须首先枚举设备以确定其供应商ID和产品ID,然后确定要加载的特定驱动程序。

至于每次重新插入时的完全重新安装,表明设备或驱动程序的Windows API违反了USB规范。我的第一个猜测是该设备没有正确的序列号。