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

如何在Windows下发布USB设备重新连接,usb,deadlock,device-driver,ftdi,Usb,Deadlock,Device Driver,Ftdi,我有一个基于FTDI芯片的USB设备。有时,它的驱动程序会卡住 在linux下,并没有问题——设备自动断开连接,并在默认内核下重新连接,唯一的问题是设备名称更改——这可以通过udev规则修复 在windows下,当它卡住时,此时执行read()或write()的应用程序线程完全挂起。不能通过TerminateThread,也不能通过KillProcess杀死它 杀死应用程序的唯一方法是物理断开USB设备 是否有任何方法可以通过编程方式重新连接设备,从而消除驱动程序的死锁,并允许重新打开端口,然后

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

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

在windows下,当它卡住时,此时执行
read()
write()
的应用程序线程完全挂起。不能通过
TerminateThread
,也不能通过
KillProcess
杀死它

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

是否有任何方法可以通过编程方式重新连接设备,从而消除驱动程序的死锁,并允许重新打开端口,然后继续工作


如果需要,管理权限应用程序可以有。

我建议您将想法向上移动一步。您正在尝试直接重新启动USB设备,为什么不尝试集线器呢

我也有类似的问题,我做了:

devcon remove *ROOT_HUB* && devcon rescan
挂起USB设备时,将其重新连接到集线器


注意:这将从设备管理器中删除所有USB设备并重新添加它们。您可以使用expect或类似工具执行
devcon findall*ROOT\u HUB*
,并根据需要删除
ROOT\u HUB20
ROOT\u HUB30

“devcon.exe restart*ftdi*”devcon.exe disable*ftdi*”在挂起状态时失败。坏消息是基于ftdi的设备是市场上最可靠的设备基于PL2303(和/或其芯片组供应商的驱动程序)的设备严重损坏。您是否尝试了来自的新驱动程序?始终使用最新的驱动程序。并试图联系ftdi的支持,但运气不佳。目前,只有警告用户“请重新连接设备”才有可能,试图找到另一种解决方案。我似乎无法关闭集线器,就像设备本身一样…:/听起来您的问题可能不是设备,而是USB集线器。你有其他电脑或USB集线器可以试用吗?它是mb板载USB集线器,我会检查外部无源和有源USB集线器,谢谢你的建议!这似乎是真正的解决方案附加信息:在win8下,它的稳定重新连接后,它自己卡住了。在win7下,它可以在某些mb上禁用根集线器