[DllImport("kernel32.dll")]
static extern bool Heap32ListFirst(IntPtr hSnapshot, ref HEAPLIST32 lphl);
None.
None.
Please add some!
uint process_id = 1234;
IntPtr heaplist_h = CreateToolhelp32Snapshot( (uint)ToolHelp.SnapshotFlags.HeapList,
(uint) process_id);
if (heaplist_h == ToolHelp.INVALID_HANDLE_VALUE)
{
int err = Marshal.GetLastWin32Error();
textBox1.AppendText("Cant create shapshot. Err: " + err.ToString("X") + "\n");
if (err == ToolHelp.ERROR_ACCESS_DENIED) // win32-64 or something like that
wr(" Access denied\n");
return;
}
HEAPLIST32 hlist = new ToolHelp.HEAPLIST32();
hlist.dwSize = (uint) Marshal.SizeOf(hlist);
bool r = Heap32ListFirst(heaplist_h, ref hlist);
while (r)
{
textBox1.AppendText(" flags: " + hlist.dwFlags.ToString("X") +
". HeapID: " + hlist.th32HeapID.ToString() + "\n");
ToolHelp.HEAPENTRY32 heapentry = new ToolHelp.HEAPENTRY32();
heapentry.dwSize = (uint) Marshal.SizeOf(heapentry);
bool r2 = ToolHelp.Heap32First(ref heapentry, hlist.th32ProcessID, hlist.th32HeapID);
while (r2)
{
textBox1.AppendText(" Start: " + heapentry.dwAddress.ToString() +
", size: " + heapentry.dwBlockSize.ToString() + "\n" );
r2 = ToolHelp.Heap32Next(out heapentry);
}
r = ToolHelp.Heap32ListNext(heaplist_h, ref hlist);
}
ToolHelp.CloseHandle(heaplist_h);
Do you know one? Please contribute it!