c# - 重新启动 USB 设备?

标签 c# windows usb wdk

我正在对一台设备进行故障排除,该设备只有在拔下并重新插入 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/

相关文章:

c# - 在下面的示例中,哪个构造函数将首先调用

c# - 如何区分测试类中的单元测试和集成测试?

windows - 无法通过 PowerShell 设置证书友好名称(访问被拒绝)

linux - 特定 USB 设备的识别发生在 Linux 源代码的哪个位置?

c# - 使用 C# 反序列化 JSON 以返回项目

c# - 使用 XmlDocument 遍历 XML

windows - 如何通过 HTTP 从 Internet 检索文件?

C# - 制作 Process.Start 等待进程启动

android - ADB(但不​​是通过 Eclipse)通过 USB 找到我的 Android 设备

android - 是否可以为android中的输入系统编写驱动程序