public static bool CorsairSetLedsColorsAsync(int size, CorsairLedColor[] ledsColors, CorsairSetLedsColorsAsyncCallback callbackType, object context) { var callbackMethod = new CUESDKNative.CorsairSetLedsColorsAsyncCallback((IntPtr nativeContext, bool result, CorsairError error) => { callbackType?.Invoke(context, result, error); }); var corsairLedColorSize = Marshal.SizeOf <CorsairLedColorNative>(); var ledsPtr = Marshal.AllocHGlobal(corsairLedColorSize * size); for (int i = 0; i < size; i++) { ledsColors[i].ApplyToNative(); Marshal.StructureToPtr(ledsColors[i].native, ledsPtr + corsairLedColorSize * i, false); } var callResult = CUESDKNative.CorsairSetLedsColorsAsync(size, ledsPtr, callbackMethod, new IntPtr()); Marshal.FreeHGlobal(ledsPtr); return(callResult); }
public static extern bool CorsairSetLedsColorsAsync(int size, IntPtr ledsColors, CorsairSetLedsColorsAsyncCallback callbackType, IntPtr context);