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

标签 c++ windows usb

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

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

这里的困难是我们没有办法修改第三方软件来在设备拔出后轮询合适的 USB 设备。

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

最佳答案

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

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

关于c++ - 有没有办法保存 USB 设备,以便在重新插入后可以防止重新枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10942584/

相关文章:

c++ - 何时使用具有静态存储持续时间的右值引用?

c++ - 监视内核注册表更改

c# - 仅用于消息循环的 WPF 窗口句柄

linux - struct usb_serial_driver的probe方法什么时候被调用?

c++ - 如何使用visual studio在c中捕获全屏

c++ - Boost.Hana JSON 示例:string 和 decltype(std::to_string(...)) 之间的区别

C++将SDL_renderer传递给一个类

windows - 使用管理权限在 NSIS 中执行 Execwait

python - 在 OSX Lion 10.7.3 上安装 pyUSB 0.4.3

linux - USB无线桌面组合不断重置 "reset full speed USB device"