2013-05-15 209 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添加更多的唯一性。