Мне требуется поддержка пользовательского джойстика, и из-за требований проекта я больше не могу использовать API DirectInput. Я переключился на использование «классического» мультимедийного API Windows (например, joyGetDevCaps и семейства), и все это работает, за одним исключением.
В DirectInput DeviceInstance было два поля, InstanceName и ProductName, которые возвращали правильное «настраиваемое» имя устройства.
Соответствующее поле имени продукта joyGetDevCaps, szPname, возвращает общий «драйвер джойстика Microsoft PC».
При поиске в реестре системы с установленным устройством я обнаружил, что в этом узле есть запись REG_SZ OEMName с нужной мне строкой:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick\OEM\VID_07C0&PID_1128
В JOYCAPS возвращаются два поля, wMid (идентификатор производителя) и wPid (идентификатор продукта), которые соответствуют двум шестнадцатеричным значениям в имени ключа: wMid = 0x07c0, wPid = 0x1128.
Кроме того, я могу использовать API SetupDiEnumDeviceInfo для GUID_DEVINTERFACE_HID и найти соответствующий контроллер (хотя этот шаг может и не понадобиться):
HID\VID_07C0&PID_1128&REV_1032, HID-совместимый игровой контроллер
Вопрос. Существует ли API для перечисления MediaProperties\PrivateProperties, который мне следует использовать, или «безопасно» использовать эту информацию и напрямую запрашивать реестр? Если есть API, пожалуйста, ответьте со ссылками и/или примером кода! Я не могу найти ничего связанного.