SlimDXで奇妙な問題が発生しました:これはWindows 7で確認されており、他のバージョンはまだテストされていません:安価なUSBゲームパッド(シリアル番号なし)のバンドルを使用していますが、1つの物理的なゲームパッドが終了することがあります複数のJoystickオブジェクトに入力を提供します。
シナリオは次のとおりです。
- ゲームパッド1をハブスロット1に接続します。パッドは
DirectInput.GetDevicesGUIDf17b2d30として表示されます。Joystickパッドのオブジェクトを作成します。 - ゲームパッド2をハブスロット2に接続します。パッドは
DirectInput.GetDevicesGUID5187d2d0として表示されます。Joystickパッドのオブジェクトを作成します。 - ゲームパッド2のボタンを押します。状態に変更はありません。
- ゲームパッド1のボタンを押します。ボタンは両方のオブジェクトの
GetCurrentState()後に設定されて表示されます。Poll() - オブジェクトのゲームパッド2.
Poll()メソッドのプラグを抜くと、エラーなしで戻り続けますが、に表示されなくなりますDirectInput.GetDevices。 - ゲームパッド1のボタンを押します。ボタンは両方のオブジェクトの
GetCurrentState()後に設定されて表示されます。Poll()
デバッガーでオブジェクトを調べました。それぞれJoystickが正しいGUIDを参照しますInformation.InstanceGUIDが、それぞれがで同じUSBパスを持っていますProperties.InterfacePath。
ゲームパッドのハードウェアは正しく機能しているようです-コントロールパネルのジョイスティックテスターで同じシーケンスを実行すると、ゲームパッドは区別されたままになります。
DirectInput GUIDは、USB PIDとVIDに基づいて割り当てられているようです。次に、接続されているUSBポートへの物理パスではなく、同じゲームパッドが接続されている順序です。異なるモデルのゲームパッドを組み合わせると、問題は解決します。
SlimDXまたはDirectInputのバグのように感じます-これに対する回避策はありますか?