int DirectInput_Init(void) { HRESULT hr; if(dInput || dInput3) return true; // Create the DirectInput interface instance. Try version 8 first. if(FAILED(hr = CoCreateInstance(CLSID_DirectInput8, NULL, CLSCTX_INPROC_SERVER, IID_IDirectInput8, (LPVOID*)&dInput)) || FAILED(hr = dInput->Initialize(app.hInstance, DIRECTINPUT_VERSION))) { Con_Message("DirectInput 8 init failed (0x%x).", hr); // Try the older version 3 interface instead. // I'm not sure if this works correctly. if(FAILED(hr = CoCreateInstance(CLSID_DirectInput, NULL, CLSCTX_INPROC_SERVER, IID_IDirectInput2W, (LPVOID*)&dInput3)) || FAILED(hr = dInput3->Initialize(app.hInstance, 0x0300))) { Con_Message("Failed to create DirectInput 3 object (0x%x).", hr); return false; } Con_Message("Using DirectInput 3."); } if(!dInput && !dInput3) { Con_Message(" DirectInput init failed."); return false; } return true; }
HRESULT _stdcall Initialize(HINSTANCE a,DWORD b) { return RealInput->Initialize(a,b); }