如何判断USB设备插入哪个端口?

时间:2010-05-06 18:15:03

标签: c# usb

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

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

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

如果我可以在设备到达或移除时获取USB端口信息,它将解决我的问题,但我找不到办法做到这一点。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

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

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

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