XInput Plus:技術メモ

(2013/01/03)

XInput1_3.dll の非公開関数

公開されているXInputAPIでは、ガイドボタン状態の取得や無線コントローラーの電源OFFなど機能は提供されていない。

XInput1_3.dllには非公開の関数がいくつかあり、これを使用するとガイドボタン状態の取得・電源OFFが出来る。

これらの関数は、名前なし(NONAME)の序数のみでエクスポートされており、XInput1_3.dll以前のバージョン(XInput1_1.dll/XInput1_2.dll/XInput9_1_0.dll)には実装されていない。

*関数名はMicrosoft Symbol Server情報から取得。引数の名称などは推定

XInputGetStateEx (序数:100)

DWORD XInputGetStateEx(  _In_   DWORD dwUserIndex,   _Out_  XINPUT_STATE *pState );

使い方はXInputGetStateと同じ。

異なる点としては、コントローラー状態が格納されるpState(XINPUT_STATE)中のXINPUT_GAMEPADのwButtonsに、ガイドボタンの状態に該当するビット(0x0400)も設定される。

XInputWaitForGuideButton (序数:101)

DWORD XInputWaitForGuideButton(  _In_   DWORD dwUserIndex,   _In_ DWORD dwFlag,  _Out_?  unKnown *pUnKnown );

詳細不明。dwUserIndexで指定されたコントローラーのガイドボタンが押されるまで待つ? 

XInputCancelGuideButtonWait (序数:102)

DWORD XInputCancelGuideButtonWait(  _In_   DWORD dwUserIndex );

XInputWaitForGuideButtonをキャンセルする?

XInputPowerOffController (序数:103)

DWORD XInputPowerOffController(  _In_   DWORD dwUserIndex  );

dwUserIndex(0~3)で指定するコントローラーの電源をOFFにする。

XInputGetCapabilitiesで取得されるコントローラーのSubType

XInputGetCapabilitiesで接続されているコントローラーのSubTypeが取得できる。

ワイヤレススピードホイールのSubType

ワイヤレススピードホイールのSubTypeは、MSDNやXInput.hで定義されていない0x52になる。

アプリケーションが読み込むDLLの検索順序

このあたりこのあたり

*.exe.localファイルを作ると、フルパス指定でLoadLibraryをした場合でも、アプリケーションディレクトリにあるDLLが優先される。