如何在Windows下发出USB设备重新连接

dat*_*boy 8 usb deadlock device-driver ftdi

我有一个基于FTDI芯片的USB设备.有时,它的驱动程序卡住了.

在linux下,没有问题 - 设备自动断开连接,并通过默认内核重新连接,只有问题是设备名称已更改 - 可以通过udev规则修复.

在Windows下,当它卡住时,应用程序的线程read()write()当时完全挂起.它不能被杀死TerminateThread,也不能被杀死KillProcess.

杀死应用程序的唯一方法是物理断开USB设备.

有没有办法以编程方式发出设备重新连接,这将删除驱动程序的死锁并允许重新打开端口并继续工作?

如果需要,管理权利申请可以有.

Mik*_*osh 5

我建议你把你的想法提高一步.您正试图直接重启USB设备,为什么不尝试集线器?

我有类似的问题,并做:

devcon remove *ROOT_HUB* && devcon rescan
Run Code Online (Sandbox Code Playgroud)

挂起时,将USB设备重新连接到集线器.

注意:这将从设备管理器中删除所有USB设备并重新添加它们.你可以使用expect或者类似的方法来做devcon findall *ROOT_HUB*和删除任何一个ROOT_HUB20ROOT_HUB30根据需要.