0

关于 DIDEVICEINSTANCE 中的 guidInstance

微软说:

设备实例的唯一标识符。应用程序可以将实例全局唯一标识符 (GUID) 保存到配置文件中,并在以后使用它。实例 GUID 特定于特定计算机。从一台计算机获取的实例 GUID 与另一台计算机上的实例 GUID 无关。

那么,如果我将设备连接到计算机并且我的程序进行枚举并找到 guid,我是否需要再次枚举?即使用户插拔设备。如果插入了另一个相同类型的设备,它是否仍然识别出第二个设备与第一个设备不同,因此需要不同的 guid?我应该在我的程序一直运行以查找我的设备时重新枚举所有接口,还是对于给定的 pc 一次就足够了?

谢谢。

4

2 回答 2

1

我实际上正在尝试解决类似的问题。根据此处的 MSDN ,看起来 InstanceGUID 在同一台计算机上应该始终相同。我已经验证,如果我拔下我的 USB 设备并将其插入不同的端口,它确实会保留相同的实例 GUID。但是,如果不同的用户登录到同一台 PC,DirectInput 会显示具有不同 InstanceGUID 的同一设备!我找不到 Microsoft 承认这是一个已知问题。

所以,我可以部分回答你的问题。如果您有两个相同的设备,您将获得不同的 InstanceGUID 和相同的 ProductGUID。如果您拔下设备并将它们移动到不同的 USB 端口,这些 InstanceGUID 将保持一致。但是,如果其他用户登录,您将获得不同的 InstanceGUID。至少我可以验证这是 Windows 7 64 位上的问题。

于 2014-05-07T21:52:28.797 回答
0

InstanceGuid 将始终是每个插入设备的唯一标识符 - 但如果您删除安装信息(例如卸载 USB 设备),您也会丢失该 InstanceGuid。再次插入时,设备将获得一些新的不可预测的 Guid。

一个设备的 ProductGuid 将始终相同,因为它存储在设备 USB HID 芯片中。尽管完全相同类型的两个设备具有相同的 ProductGuid,但可能会发生这种情况。如果他们这样做,您只能通过他们的 InstanceGuid 来识别他们(在某些情况下可能会变得无效,如上所述......)。

于 2010-08-20T10:44:21.283 回答