4

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

Windows 能够看到该设备,但每次重新连接时都会执行完整的检测/驱动程序安装过程,即使它重新连接到同一个 USB 端口也是如此。

这里的难点在于,我们无法修改第三方软件在设备拔出后轮询合适的 USB 设备。

因此,我们想问一下是否有人知道如何编写 C++ 程序来保存 USB 状态/寄存器,防止 Windows 在重新连接时重新枚举 USB 端口,以及恢复保存的状态/寄存器. 如果是这样,我们将不胜感激在这项工作中的一些指导。自然,我们对解决此问题的其他方法持开放态度。

4

1 回答 1

3

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

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

于 2012-06-08T07:21:26.540 回答