2011-03-23 164 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