我有两个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+。
该即插即用配置管理器API是你的朋友在这里:
CM_Locate_DevNode在给定设备ID的情况下打开设备句柄;
CM_Get_Parent查找父设备;
CM_Get_Device_ID_Size和CM_Get_Device_ID获取设备句柄并返回设备ID。