Skip to content

Instantly share code, notes, and snippets.

@TinkerWorX
Created April 29, 2015 21:30
Show Gist options
  • Save TinkerWorX/fc88df86d5e7e89e9024 to your computer and use it in GitHub Desktop.
Save TinkerWorX/fc88df86d5e7e89e9024 to your computer and use it in GitHub Desktop.
public static class Memory
{
public static T Read<T>(IntPtr address) where T : struct
{
return (T)Marshal.PtrToStructure(address, typeof(T));
}
public static T Read<T>(IntPtr address, Int32 offset) where T : struct
{
return (T)Marshal.PtrToStructure(address + offset, typeof(T));
}
public static String ReadString(IntPtr address)
{
return Marshal.PtrToStringAnsi(address);
}
public static String ReadString(IntPtr address, Int32 length)
{
return Marshal.PtrToStringAnsi(address, length);
}
public static void Write<T>(IntPtr address, T data) where T : struct
{
Marshal.StructureToPtr(data, address, true);
}
public static void Write<T>(IntPtr address, Int32 offset, T data) where T : struct
{
Marshal.StructureToPtr(data, address + offset, true);
}
public static void WriteString(IntPtr address, String data)
{
Memory.Write(address, Marshal.StringToHGlobalAnsi(data));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment