Advertisement
SteelGolem

xinput loading comparison

Dec 21st, 2014
298
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. DWORD WINAPI XInputGetStateStub(DWORD, XINPUT_STATE*) { return 0; }
  2. DWORD (WINAPI * XInputGetState_)(DWORD, XINPUT_STATE*) = XInputGetStateStub;
  3. #define XInputGetState XInputGetState_
  4.  
  5. #define X_INPUT_SET_STATE(name) DWORD WINAPI name(DWORD dwUserIndex, XINPUT_VIBRATION* pVibration)
  6. typedef X_INPUT_SET_STATE(x_input_set_state);
  7. X_INPUT_SET_STATE(XInputSetStateStub)
  8. {
  9.     return 0;
  10. }
  11. global_variable x_input_set_state* XInputSetState_ = XInputSetStateStub;
  12. #define XInputSetState XInputSetState_
  13.  
  14. internal_function void LoadXInput(void)
  15. {
  16.     HMODULE xinputLib = LoadLibraryA("xinput1_3.dll");
  17.     if (xinputLib)
  18.     {
  19.         // NOTE: xinput 1.3 "should be" on more computers than 1.4.
  20.         XInputGetState_ = (DWORD(WINAPI *)(DWORD, XINPUT_STATE *))GetProcAddress(xinputLib, "XInputGetState");
  21.         XInputSetState = (x_input_set_state*)GetProcAddress(xinputLib, "XInputSetState");
  22.     }
  23. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement