public void FreeMemoryRegion(MemoryRegion region, APIProxy.FreeType freeType) { if (freeType == APIProxy.FreeType.Release) { APIProxy.VirtualFreeEx(handle, region.start, 0, freeType); } else { APIProxy.VirtualFreeEx(handle, region.start, region.lenght, freeType); } }
public static extern bool VirtualFreeEx(IntPtr hProcess, IntPtr lpAddress, int dwSize, APIProxy.FreeType dwFreeType);
public static void VirtualFreeEx(Handle processHandle, Address targetAddress, int size, APIProxy.FreeType freeType) { if (WINAPI.VirtualFreeEx(processHandle.GetHandleAsPointer(), targetAddress.GetAsPointer(), size, freeType) == false) { throw new VirtualFreeException("Freeing Bytes at " + targetAddress + " failed with errorcode " + Marshal.GetLastWin32Error()); } }