[DllImport("kernel32.dll")]
static extern int VirtualQueryEx(IntPtr hProcess, uint lpAddress, out MEMORY_BASIC_INFORMATION lpBuffer, int dwLength);
[StructLayout(LayoutKind.Sequential)]
public struct MEMORY_BASIC_INFORMATION
{
public UIntPtr BaseAddress;
public UIntPtr AllocationBase;
public uint AllocationProtect;
public IntPtr RegionSize;
public uint State;
public uint Protect;
public uint Type;
}
None.
Please add some!
uint MaxAddress = 0x7fffffff;
uint address = 0;
do
{
MEMORY_BASIC_INFORMATION m = new MEMORY_BASIC_INFORMATION();
int result = VirtualQueryEx(System.Diagnostics.Process.GetCurrentProcess().Handle, address, out m, Marshal.SizeOf(m));
Console.WriteLine("{0}-{1} : {2} bytes result={3}", m.BaseAddress, (uint)m.BaseAddress + (uint)m.RegionSize, m.RegionSize,result);
address = (uint)m.BaseAddress + (uint)m.RegionSize;
} while (address <= MaxAddress);
Do you know one? Please contribute it!