2011-03-23 135 views
2

我需要通过插入USB设备找到USB主控制器。我需要它为该控制器设置一个特定的注册表键,这是修复KB928631所必需的。 我能够获得设备句柄并使用CM_Get_Parent()函数获取父设备句柄。如何通过插入USB设备找到USB主控制器

不幸的是,没有关于HUB数量的信息,所以我不知道应该调用多少次CM_Get_Parent()才能到达主机控制器。

是否有任何控制器的具体数据可用于区分它与HUB?

目前我正在获取CM_DRP_LOCATION_INFORMATION属性并确定属性是否由“PCI总线”启动的属性返回。如果是这样,则假定当前设备是主机控制器。 这是一个可靠的解决方案吗?

回答

0

my answer here,我提到“Enumerator”属性比“位置”更好。

+0

感谢您的快速回复。但是怎样才能解释说“Enumerator”属性比“Location”更可靠呢? – gtikok 2011-03-23 14:03:46

+0

@gtikok:因为我已经观察到Location属性根据Windows版本的不同而有所不同,Enumerator属性似乎更加一致。而且你没有将公交车号码与“Enumerator”混合在一起,你可以比较整个字符串而不是前缀匹配。 – 2011-03-23 18:08:56

+0

感谢您的澄清。 – gtikok 2011-03-24 05:18:54