2013-05-15 184 views
1

即使從USB設備提供的設備數據對於所有設備都是通用的,Windows如何唯一標識USB設備? 爲了說明這一點,Windows可以區分相同型號的戴爾鍵盤的兩個實例,而無需鍵盤提供任何唯一的序列號。初始化USB設備時,Windows搜索的專有數據字段是什麼?Windows如何唯一識別USB設備?

+0

此問題是否針對不提供唯一ID的設備?由於USB確實支持不同設備的唯一標識符(但它們不是必需的)。 – Dracs

+0

一個實例是鍵盤,或者一般的HID設備不提供序列號。 – Bleamer

+0

如果設備連接到不同的端口,則主機可以區分它們,即使它們相同。 –

回答

1

當我們將設備連接到設備主機時,將發生枚舉過程,在此過程結束時,主機將爲新連接的設備提供唯一地址。因此,連接到系統的每個設備將具有由系統提供的唯一ID,使用該ID可以識別設備併發生通信

+0

考慮這種情況。 USB設備是第一次插入,只要它啓動操作系統知道該特定設備。但是在重新啓動時,設備應該發送一些數據/唯一標識符/唯一編號字段,使用該字段,操作系統可以識別出此設備早已插入。 – Bleamer

+0

@Bleamer如果設備被拔掉,它將在下一個插件重新枚舉,而不管之前的狀態如何。如果設備被重置/重新啓動/無論您何時調用它,而不會被拔出,枚舉不會丟失,設備重新啓動的過程與它無關 - 這是一個專有序列,每個設備都有所不同 – SomeWittyUsername

4

Windows使用Device Instance ID進行標識。正如您在文檔中看到的那樣,它包含一個設備部分和一個實例部分。

設備部件取自USB設備。

它是由一個總線驅動程序如何生成實例部分。公交車司機不能完全依靠從USB設備返回的信息。因爲兩個相同的設備會破壞系統 - 設備實例ID必須是唯一的!所以通常它會附加額外的信息 - 端口號等(確切的算法是未知的,取決於驅動程序製造商)。此外,PNP管理器可以爲實例ID添加更多的唯一性。