4

カスタムジョイスティックデバイスをサポートしたいと考えていますが、プロジェクトの要件により、DirectInputAPIを使用できなくなりました。「クラシック」なWindowsマルチメディアAPI(joyGetDevCapsやファミリーなど)の使用に切り替えましたが、1つの例外を除いてすべて機能します。

DirectInput DeviceInstanceには、デバイスの正しい「カスタム」名を返すInstanceNameProductNameの2つのフィールドがありました。

対応するjoyGetDevCaps製品名フィールドszPnameは、一般的な「MicrosoftPC-ジョイスティックドライバー」を返します。

デバイスがインストールされているシステムのレジストリを検索したところ、このノードに必要な文字列を持つREG_SZOEMNameエントリがあることがわかりました。

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ MediaProperties \ PrivateProperties \ Joystick \ OEM \ VID_07C0&PID_1128

JOYCAPSには、wMid(メーカーID)とwPid(製品ID)の2つのフィールドが返されます。これらのフィールドは、キー名の2つの16進値wMid = 0x07c0、wPid=0x1128にマップされます。

さらに、GUID_DEVINTERFACE_HIDでSetupDiEnumDeviceInfo APIを使用して、一致するコントローラーを見つけることができます(ただし、この手順は必要ない場合があります)。

HID \ VID_07C0&PID_1128&REV_1032、HID準拠のゲームコントローラー

質問:使用する必要があるMediaProperties \ PrivatePropertiesを列挙するためのAPIはありますか、それともこの情報を使用してレジストリに直接クエリを実行するのは「安全」ですか?APIがある場合は、リファレンスやサンプルコードで回答してください。関連するものが見つかりません。

4

1 に答える 1