public static float[] ReadMatrix <T>(IntPtr address, int matrixSize) where T : struct { var ByteSize = Marshal.SizeOf(typeof(T)); var buffer = new byte[ByteSize * matrixSize]; Windows.Kernel32.ReadProcessMemory(_processHandle, address, buffer, buffer.Length, out var readBytes); return(MemoryExtensions.ConvertToFloatArray(buffer)); }
public static T ReadMemory <T>(IntPtr address) where T : struct { var ByteSize = Marshal.SizeOf(typeof(T)); var buffer = new byte[ByteSize]; Windows.Kernel32.ReadProcessMemory(_processHandle, address, buffer, buffer.Length, out var readBytes); return(MemoryExtensions.ByteArrayToStructure <T>(buffer)); }
public static bool WriteMemory <T>(IntPtr address, object value) where T : struct { var buffer = MemoryExtensions.StructureToByteArray(value); return(Windows.Kernel32.WriteProcessMemory(_processHandle, address, buffer, buffer.Length, out var writtenBytes) && writtenBytes != 0); }