public bool Initialize() { _initOk = false; try { _deviceCallback = DeviceCallback; _enumerateCallback = EnumerateCallback; if (!File.Exists(@"C:\Program Files\Saitek\DirectOutput\DirectOutput.dll")) { //Did not find Saitek drivers Common.LogError(1, "INFO : No Saitek FIP driver found. FIP support not loaded. (assuming no FIPs are connected)"); return(false); } var retVal = DirectOutputClass.Initialize("ABC"); if (retVal != ReturnValues.S_OK) { Common.LogError(1, "FIPHandler failed to init DirectOutputClass. retval = " + retVal); return(false); } Debug.Print("Init returned: " + retVal); retVal = DirectOutputClass.RegisterDeviceCallback(_deviceCallback); Debug.Print("Register Device Callback returned: " + retVal); retVal = DirectOutputClass.Enumerate(_enumerateCallback); if (retVal != ReturnValues.S_OK) { Common.LogError(1, "FIPHandler failed to Enumerate DirectOutputClass. retval = " + retVal); return(false); } Debug.Print("Enumerate Callback returned: " + retVal); } catch (Exception ex) { Common.LogError(1, ex, "FIPHandler failed to init."); return(false); } _initOk = true; return(true); }