【发布时间】:2014-09-24 04:45:57
【问题描述】:
我有两个 USB 设备 ID,例如USB\VID_E4F1&PID_0661\00000115FA9CE7750000000000000000 和 USB\VID_E4F1&PID_0661&MI_00\7&B5A5DDF&0&0000
如何验证设备 #2 是设备 #1 的直接子设备(实际上它们是同一 USB 复合设备的不同部分)?
在现实生活场景中,它们中的许多将连接到同一个 USB 控制器。此外,它们可能是相同的制造商和型号。这就是为什么我无法验证 VID、PID 并使用 Win32_USBControllerDevice WMI 查询来验证它们是否已插入同一个 USB 控制器 - 我需要以某种方式验证父子关系,而不仅仅是它们已插入的事实同一个控制器。
如果重要的话,我只需要支持 Windows 8+。
【问题讨论】:
-
我不是专家,但我认为 CM_Locate_DevNode、CM_Get_Parent 和 CM_Get_Device_ID 应该可以解决问题。
-
@HarryJohnston 你忘记了 CM_Get_Device_ID_Size,但非常感谢,它就像一个魅力!您可能应该将您的评论复制粘贴到答案中。
-
您标记了问题 C#,但您接受了使用 WINAPI 的答案...不应该删除 c# 标记吗?
-
@gog 据我记得,我当时从事的项目是 100% C#。它可以很好地使用 WinAPI,参见例如pinvoke.net/default.aspx/setupapi/CM_Locate_DevNodeA%20.html
标签: c# windows device-instance-id