【问题标题】:How can I detect whether a hardware device has been plugged or unplugged from my PC through USB port如何检测硬件设备是否已通过 USB 端口从我的 PC 上插入或拔出
【发布时间】:2015-09-07 07:57:28
【问题描述】:

目前的努力: 1、hidapi-1.1.jar 2、GetRawInputDeviceList

hidapi-1.1.jar 由于某种原因在我的应用程序中中止。

GetRawInputDeviceList 在 Win10 中不稳定参考https://stackoverflow.com/questions/32419314/getrawinputdevicelist-and-getrawinputdeviceinfo-fail-to-work-in-win10

我想知道有没有其他方法可以达到我的目标? 操作系统为windows,编程语言不限。

【问题讨论】:

  • 您正在寻找的解决方案仅适用于 USB 设备?
  • 为什么用 Java、C++、C 和 winforms 标记它?
  • @hazzelnuttie。是的,仅适用于 USB 设备。
  • @MarkRotteveel。不好意思,winforms改成windows了。我的应用程序中的主要语言是java,所以最好有一个java解决方案。如果解决方案是使用 c/c++,我也可以通过 JNI 调用它。为了让更多人阅读这个问题,我使用了这些标签。

标签: java c++ c windows


【解决方案1】:

您可以使用libusb 中的热插拔事件通知 API。文档在这里:http://libusb.sourceforge.net/api-1.0/hotplug.html

简而言之,此 API 可让您的程序在设备连接或断开连接时获得回调,并让您过滤出您关心的设备(请参阅 libusb_hotplug_register_callback)。

请注意,并非所有操作系统都支持热插拔 API;如果不是,您将不得不退回到使用libusb_get_device_list 枚举设备。

【讨论】:

  • 感谢您的帮助。但是,我们的应用程序中不允许使用 LGPL 许可证。也许我应该找到另一种方法。
【解决方案2】:

其实SetupDiGetDeviceInstanceId可以用来监控。详情请参考https://msdn.microsoft.com/en-us/library/windows/hardware/ff551106(v=vs.85).aspx

【讨论】:

    猜你喜欢
    • 2017-10-16
    • 2013-02-16
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多