Вопрос по guidInstance в библиотеке DirectInput; также занимается перечислением устройств - PullRequest
0 голосов
/ 03 апреля 2009

Относительно guidInstance в DIDEVICEINSTANCE

Microsoft говорит:

Уникальный идентификатор экземпляра устройства. Приложение может сохранить глобальный уникальный идентификатор экземпляра (GUID) в файле конфигурации и использовать его позднее. Идентификаторы GUID экземпляра относятся к конкретному компьютеру. GUID экземпляра, полученный с одного компьютера, не связан с GUID экземпляра на другом.

Итак, если я подключаю свое устройство к компьютеру, и моя программа выполняет перечисление и находит руководство, нужно ли мне когда-нибудь снова перечислять? Даже если пользователь подключает и отключает устройство. Если подключено другое устройство того же типа, распознает ли оно, что второе устройство отличается от первого и, следовательно, требует другого руководства? Должен ли я просто перечислять все интерфейсы все время, пока моя программа работает, чтобы найти мое устройство, или этого достаточно для данного компьютера?

Спасибо.

Ответы [ 2 ]

1 голос
/ 08 мая 2014

Я на самом деле пытаюсь решить подобную проблему. Согласно MSDN здесь , похоже, что InstanceGUID всегда должен быть одинаковым на одном и том же компьютере. Я проверил, что если я отключу USB-устройство и подключу его к другому порту, он действительно сохранит тот же GUID экземпляра. Однако, если другой пользователь входит в систему на одном и том же ПК, DirectInput показывает то же устройство с другим InstanceGUID !! Я не могу найти подтверждение от Microsoft, что это известная проблема.

Итак, я могу частично ответить на ваш вопрос. Если у вас два идентичных устройства, вы получите разные InstanceGUID и идентичные ProductGUID. Эти InstanceGUID будут оставаться согласованными, если вы отключите свои устройства и перенесете их на другие порты USB. ОДНАКО вы получите разные InstanceGUID, если в систему войдет другой пользователь. По крайней мере, я могу убедиться, что это проблема в Windows 7 64bit.

0 голосов
/ 20 августа 2010

InstanceGuid всегда будет уникальным идентификатором для каждого подключенного устройства, но если вы удалите информацию об установке (например, удалите USB-устройство), вы также потеряете этот InstanceGuid. Устройство получит какой-то новый непредсказуемый Guid при повторном подключении.

ProductGuid всегда будет одинаковым для одного устройства, так как он хранится в USB HID-чипе устройства. Может случиться так, что два устройства одного типа имеют одинаковый ProductGuid. Если они это сделают, вы можете идентифицировать их только по их InstanceGuid (который может стать недействительным в некоторых случаях, как написано выше ...).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...