Answers:
根据Raymond Chen的说法:
如果将USB设备插入其他端口,Windows为什么不能将我的USB设备识别为同一设备?
您可能已经注意到,如果您将USB设备插入计算机,则Windows会识别它并对其进行配置。然后,如果您拔下它,然后将其重新插入到另一个USB端口,则Windows会出现一阵失忆,并认为它是完全不同的设备,而不是使用上次插入时所应用的设置。这是为什么?
USB设备人员解释说,这种情况是在设备缺少USB序列号时发生的。
序列号在USB设备上是可选的。如果设备有一个,则Windows将识别该设备,无论您将其插入哪个USB端口。但是,如果没有序列号,则Windows会将每个出现在不同USB端口上的情况都视为是新设备。
(我记得一个主要的USB设备制造商不太了解序列号的工作方式。他们给了所有设备序列号,这很好,但是它们都具有相同的序列号。如果您插入两个USB设备,它们会发生令人激动的事情设备同时插入计算机。)
但是,如果Windows缺少序列号并显示在其他端口上,为什么Windows会将其视为其他设备?为什么不能只说:“哦,您在那儿,在另一个港口那边。”
因为一旦插入两个这样的设备,就会产生随机行为。根据即插即用枚举设备的顺序,每次启动时似乎随机分配两组设置。今天,设置以一种方式匹配,但是明天,当设备以另一种顺序枚举时,设置将被交换。(如果以不同的顺序插入设备,也会出现类似的令人困惑的行为。)
换句话说:事情变得糟透了,因为(1)事情本来就很糟糕-如果设备具有正确的序列号,这就不会有问题-(2)一旦您处于这种糟糕状态,替代方案就会糟透了。USB堆栈只是在尽量避免出现任何恶劣情况的情况下尽力而为。
Windows(由于您未声明操作系统,我认为这是您正在使用的)将设备与设备插入的端口相关联,因此它认为“端口X中的USB DISK A”与“ USB中的USB DISK A”不同端口Y”,并相应地链接驱动程序和注册表项。
如果在查看“设备管理器”时使用“显示未连接的设备”选项,您将看到该设备已连接到该设备已插入的所有端口,但由于当前不在其中而呈灰色。当您将设备插入这些端口中的一个时,Windows只会激活该驱动程序实例,而当您将其插入另一个端口时,则需要在激活该端口之前为该端口定义一个新的驱动程序实例(这是您作为用户看到的过程)显示为“正在添加新设备”。
这样,您就可以将相同的设备插入到同时工作的不同端口中。还有其他方法可以实现此目标,而最终用户对操作系统使用哪种技术几乎没有或没有实际差异,但这是Windows选择如何安排它的方式。