我正在对一台设备进行故障排除,该设备只有在拔下并重新插入 PC 上的 USB 端口后才能正常工作。
与设备对话的应用程序是用 C# 编写的。 所以我需要用 C# 或批处理文件等编程方式来重置 USB 设备。
到目前为止,我已经尝试过使用 devcon.exe 工具,但它的效果似乎与物理删除并重新添加它所起的作用不同。
是否可以使用 Win32_USBController
通过端口以某种方式控制 USB 设备的电源? MSDN Link
也许以类似的方式,我找到了 CIM_Controller
类,它具有 Reset()
函数。 MSDN Link
Windows Driver Framework/Kit 中用于重置 USB 端口的工具似乎无法通过库或其他方式轻松访问,除非我弄错了,否则无需先创建实际的驱动程序。
谢谢
最佳答案
我建议您导航到目录并找到设备。右键单击它,然后在快捷菜单中单击弹出。应用程序和操作系统应该处理设备。 “拔出”USB 设备是个坏主意,尤其是闪存驱动器而不弹出它们。您最终可能会遇到打开文件错误。
如果问题不是弹出设备,那么问题可能出在应用程序上。如果应用程序正在打开设备上的文件并且必须拔下设备才能正常运行,那么应用程序可能无法正确关闭打开的文件...
只是说说
您可以查看 SO 链接:How to programmatically unplug & replug an arbitrary USB device?
然后通读... 在我看来,您的扫描仪正在完成一项任务,然后将其关闭。它仍然插入 PC,但 PC 看不到它。进入目录,看看是否还在目录中...
一旦设备关闭端口就拔掉插头没有任何作用。重新插入会重新连接电子设备,PC 会意识到该设备完成了另一项任务。然后再次关闭其端口。
博士
关于c# - 重新启动 USB 设备?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43481801/