【问题标题】:How to tell which port a USB device is plugged into?如何判断 USB 设备插入哪个端口?
【发布时间】:2010-05-06 18:15:02
【问题描述】:

我的 c# 应用程序必须管理多个 USB 设备,这些设备是来自同一制造商的相同产品。

如果用户插入我的 3 台设备,然后拔下其中一台,我需要知道 3 台设备中的哪台被拔下。

但是,当我注册设备并接收 WM_DEVICECHANGE 通知时,从 DBT_DEVTYP_DEVICEINTERFACE 返回的数据对于每个设备都是相同的。

如果我能在设备到达或移除时获得 USB 端口信息,那将解决我的问题,但我找不到这样做的方法。

有什么建议吗?

【问题讨论】:

  • USB 设备驱动程序是否提供任何方法来获取序列号或任何其他识别信息?

标签: c# usb


【解决方案1】:

我对C#一无所知,但是在常规的C + Win32中,您可以使用SetupAPI functions枚举总线并探测总线上的所有设备。如果您枚举主机桥,您应该能够在 USB 层次结构中找到您的设备。我链接到的那篇文章向您展示了如何使用 API,如果您查看 SetupDiGetClassDevs() 系统调用,则有一个 USB 系统总线选项(即参数 2,“Enumerator”)。

另外,如果您下载 Windows Driver Kit,我知道它有一个示例应用程序,可以枚举 USB 总线并提供有关每个 USB 设备的信息。该应用程序使用 SetupAPI,它可以作为一个很好的参考。

我知道微软已经逐渐将 Win32 API 公开为 .NET 类,但我不确定这个 API。

【讨论】:

猜你喜欢
  • 2023-01-23
  • 1970-01-01
  • 2017-10-06
  • 2013-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多