dat*_*boy 8 usb deadlock device-driver ftdi
我有一个基于FTDI芯片的USB设备.有时,它的驱动程序卡住了.
在linux下,没有问题 - 设备自动断开连接,并通过默认内核重新连接,只有问题是设备名称已更改 - 可以通过udev规则修复.
在Windows下,当它卡住时,应用程序的线程read()或write()当时完全挂起.它不能被杀死TerminateThread,也不能被杀死KillProcess.
杀死应用程序的唯一方法是物理断开USB设备.
有没有办法以编程方式发出设备重新连接,这将删除驱动程序的死锁并允许重新打开端口并继续工作?
如果需要,管理权利申请可以有.
我建议你把你的想法提高一步.您正试图直接重启USB设备,为什么不尝试集线器?
我有类似的问题,并做:
devcon remove *ROOT_HUB* && devcon rescan
Run Code Online (Sandbox Code Playgroud)
挂起时,将USB设备重新连接到集线器.
注意:这将从设备管理器中删除所有USB设备并重新添加它们.你可以使用expect或者类似的方法来做devcon findall *ROOT_HUB*和删除任何一个ROOT_HUB20或ROOT_HUB30根据需要.