mirror of
https://github.com/DarthAffe/RGB.NET.git
synced 2025-12-13 01:58:30 +00:00
Merge pull request #68 from DarthAffe/SDK/Asus
Added workaround to prevent hard crashes due to wrong pointers return…
This commit is contained in:
commit
4ee6d3c70a
@ -5,7 +5,9 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Runtime.ExceptionServices;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Security;
|
||||||
using RGB.NET.Core;
|
using RGB.NET.Core;
|
||||||
|
|
||||||
namespace RGB.NET.Devices.Asus.Native
|
namespace RGB.NET.Devices.Asus.Native
|
||||||
@ -184,11 +186,40 @@ namespace RGB.NET.Devices.Asus.Native
|
|||||||
|
|
||||||
// ReSharper disable EventExceptionNotDocumented
|
// ReSharper disable EventExceptionNotDocumented
|
||||||
|
|
||||||
internal static int EnumerateMbController(IntPtr handles, int size) => _enumerateMbControllerPointer(handles, size);
|
//HACK DarthAffe 12.05.2019: Using HandleProcessCorruptedStateExceptions and SecurityCritical allows to capture AccessViolationExceptions
|
||||||
internal static int GetMbLedCount(IntPtr handle) => _getMbLedCountPointer(handle);
|
// which is used here to prevent hard crashes on wrong pointers.
|
||||||
internal static void SetMbMode(IntPtr handle, int mode) => _setMbModePointer(handle, mode);
|
// Since this might cause isntabilities in the running application it's only a workaround and should be fixed in depth.
|
||||||
internal static void SetMbColor(IntPtr handle, byte[] colors) => _setMbColorPointer(handle, colors, colors.Length);
|
|
||||||
|
|
||||||
|
[SecurityCritical]
|
||||||
|
[HandleProcessCorruptedStateExceptions]
|
||||||
|
internal static int EnumerateMbController(IntPtr handles, int size)
|
||||||
|
{
|
||||||
|
try { return _enumerateMbControllerPointer(handles, size); } catch (Exception ex) { throw new RGBDeviceException(ex.Message); };
|
||||||
|
}
|
||||||
|
|
||||||
|
[SecurityCritical]
|
||||||
|
[HandleProcessCorruptedStateExceptions]
|
||||||
|
internal static int GetMbLedCount(IntPtr handle)
|
||||||
|
{
|
||||||
|
try { return _getMbLedCountPointer(handle); } catch (Exception ex) { throw new RGBDeviceException(ex.Message); };
|
||||||
|
}
|
||||||
|
|
||||||
|
[SecurityCritical]
|
||||||
|
[HandleProcessCorruptedStateExceptions]
|
||||||
|
internal static void SetMbMode(IntPtr handle, int mode)
|
||||||
|
{
|
||||||
|
try { _setMbModePointer(handle, mode); } catch (Exception ex) { throw new RGBDeviceException(ex.Message); };
|
||||||
|
}
|
||||||
|
|
||||||
|
[SecurityCritical]
|
||||||
|
[HandleProcessCorruptedStateExceptions]
|
||||||
|
internal static void SetMbColor(IntPtr handle, byte[] colors)
|
||||||
|
{
|
||||||
|
try { _setMbColorPointer(handle, colors, colors.Length); } catch (Exception ex) { throw new RGBDeviceException(ex.Message); };
|
||||||
|
}
|
||||||
|
|
||||||
|
[SecurityCritical]
|
||||||
|
[HandleProcessCorruptedStateExceptions]
|
||||||
internal static byte[] GetMbColor(IntPtr handle)
|
internal static byte[] GetMbColor(IntPtr handle)
|
||||||
{
|
{
|
||||||
int count = _getMbColorPointer(handle, IntPtr.Zero, 0);
|
int count = _getMbColorPointer(handle, IntPtr.Zero, 0);
|
||||||
@ -200,20 +231,92 @@ namespace RGB.NET.Devices.Asus.Native
|
|||||||
return colors;
|
return colors;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static int EnumerateGPU(IntPtr handles, int size) => _enumerateGPUPointer(handles, size);
|
|
||||||
internal static int GetGPULedCount(IntPtr handle) => _getGPULedCountPointer(handle);
|
|
||||||
internal static void SetGPUMode(IntPtr handle, int mode) => _setGPUModePointer(handle, mode);
|
|
||||||
internal static void SetGPUColor(IntPtr handle, byte[] colors) => _setGPUColorPointer(handle, colors, colors.Length);
|
|
||||||
|
|
||||||
internal static bool CreateClaymoreKeyboard(IntPtr handle) => _createClaymoreKeyboardPointer(handle);
|
[SecurityCritical]
|
||||||
internal static int GetClaymoreKeyboardLedCount(IntPtr handle) => _getClaymoreKeyboardLedCountPointer(handle);
|
[HandleProcessCorruptedStateExceptions]
|
||||||
internal static void SetClaymoreKeyboardMode(IntPtr handle, int mode) => _setClaymoreKeyboardModePointer(handle, mode);
|
internal static int EnumerateGPU(IntPtr handles, int size)
|
||||||
internal static void SetClaymoreKeyboardColor(IntPtr handle, byte[] colors) => _setClaymoreKeyboardColorPointer(handle, colors, colors.Length);
|
{
|
||||||
|
try { return _enumerateGPUPointer(handles, size); } catch (Exception ex) { throw new RGBDeviceException(ex.Message); };
|
||||||
|
}
|
||||||
|
|
||||||
internal static bool CreateRogMouse(IntPtr handle) => _enumerateRogMousePointer(handle);
|
[SecurityCritical]
|
||||||
internal static int GetRogMouseLedCount(IntPtr handle) => _getRogMouseLedCountPointer(handle);
|
[HandleProcessCorruptedStateExceptions]
|
||||||
internal static void SetRogMouseMode(IntPtr handle, int mode) => _setRogMouseModePointer(handle, mode);
|
internal static int GetGPULedCount(IntPtr handle)
|
||||||
internal static void SetRogMouseColor(IntPtr handle, byte[] colors) => _setRogMouseColorPointer(handle, colors, colors.Length);
|
{
|
||||||
|
try { return _getGPULedCountPointer(handle); } catch (Exception ex) { throw new RGBDeviceException(ex.Message); };
|
||||||
|
}
|
||||||
|
|
||||||
|
[SecurityCritical]
|
||||||
|
[HandleProcessCorruptedStateExceptions]
|
||||||
|
internal static void SetGPUMode(IntPtr handle, int mode)
|
||||||
|
{
|
||||||
|
try { _setGPUModePointer(handle, mode); } catch (Exception ex) { throw new RGBDeviceException(ex.Message); };
|
||||||
|
}
|
||||||
|
|
||||||
|
[SecurityCritical]
|
||||||
|
[HandleProcessCorruptedStateExceptions]
|
||||||
|
internal static void SetGPUColor(IntPtr handle, byte[] colors)
|
||||||
|
{
|
||||||
|
try { _setGPUColorPointer(handle, colors, colors.Length); } catch (Exception ex) { throw new RGBDeviceException(ex.Message); };
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[SecurityCritical]
|
||||||
|
[HandleProcessCorruptedStateExceptions]
|
||||||
|
internal static bool CreateClaymoreKeyboard(IntPtr handle)
|
||||||
|
{
|
||||||
|
try { return _createClaymoreKeyboardPointer(handle); } catch (Exception ex) { throw new RGBDeviceException(ex.Message); };
|
||||||
|
}
|
||||||
|
|
||||||
|
[SecurityCritical]
|
||||||
|
[HandleProcessCorruptedStateExceptions]
|
||||||
|
internal static int GetClaymoreKeyboardLedCount(IntPtr handle)
|
||||||
|
{
|
||||||
|
try { return _getClaymoreKeyboardLedCountPointer(handle); } catch (Exception ex) { throw new RGBDeviceException(ex.Message); };
|
||||||
|
}
|
||||||
|
|
||||||
|
[SecurityCritical]
|
||||||
|
[HandleProcessCorruptedStateExceptions]
|
||||||
|
internal static void SetClaymoreKeyboardMode(IntPtr handle, int mode)
|
||||||
|
{
|
||||||
|
try { _setClaymoreKeyboardModePointer(handle, mode); } catch (Exception ex) { throw new RGBDeviceException(ex.Message); };
|
||||||
|
}
|
||||||
|
|
||||||
|
[SecurityCritical]
|
||||||
|
[HandleProcessCorruptedStateExceptions]
|
||||||
|
internal static void SetClaymoreKeyboardColor(IntPtr handle, byte[] colors)
|
||||||
|
{
|
||||||
|
try { _setClaymoreKeyboardColorPointer(handle, colors, colors.Length); } catch (Exception ex) { throw new RGBDeviceException(ex.Message); };
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[SecurityCritical]
|
||||||
|
[HandleProcessCorruptedStateExceptions]
|
||||||
|
internal static bool CreateRogMouse(IntPtr handle)
|
||||||
|
{
|
||||||
|
try { return _enumerateRogMousePointer(handle); } catch (Exception ex) { throw new RGBDeviceException(ex.Message); };
|
||||||
|
}
|
||||||
|
|
||||||
|
[SecurityCritical]
|
||||||
|
[HandleProcessCorruptedStateExceptions]
|
||||||
|
internal static int GetRogMouseLedCount(IntPtr handle)
|
||||||
|
{
|
||||||
|
try { return _getRogMouseLedCountPointer(handle); } catch (Exception ex) { throw new RGBDeviceException(ex.Message); };
|
||||||
|
}
|
||||||
|
|
||||||
|
[SecurityCritical]
|
||||||
|
[HandleProcessCorruptedStateExceptions]
|
||||||
|
internal static void SetRogMouseMode(IntPtr handle, int mode)
|
||||||
|
{
|
||||||
|
try { _setRogMouseModePointer(handle, mode); } catch (Exception ex) { throw new RGBDeviceException(ex.Message); };
|
||||||
|
}
|
||||||
|
|
||||||
|
[SecurityCritical]
|
||||||
|
[HandleProcessCorruptedStateExceptions]
|
||||||
|
internal static void SetRogMouseColor(IntPtr handle, byte[] colors)
|
||||||
|
{
|
||||||
|
try { _setRogMouseColorPointer(handle, colors, colors.Length); } catch (Exception ex) { throw new RGBDeviceException(ex.Message); };
|
||||||
|
}
|
||||||
|
|
||||||
//internal static int EnumerateDram(IntPtr handles, int size) => _enumerateDramPointer(handles, size);
|
//internal static int EnumerateDram(IntPtr handles, int size) => _enumerateDramPointer(handles, size);
|
||||||
//internal static int GetDramLedCount(IntPtr handle) => _getDramLedCountPointer(handle);
|
//internal static int GetDramLedCount(IntPtr handle) => _getDramLedCountPointer(handle);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user