using System;
private void PrintMemoryInfo(uint processID)
{
System.IntPtr hProcess;
PROCESS_MEMORY_COUNTERS pmc = new PROCESS_MEMORY_COUNTERS();
Console.Write("\nProcess ID: {0:D}\n", processID);
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, 0, processID);
if (hProcess == null)
return;
if (GetProcessMemoryInfo(hProcess, pmc, sizeof(PROCESS_MEMORY_COUNTERS)))
{
Console.Write("\tPageFaultCount: 0x{0:X8}\n", pmc.PageFaultCount);
Console.Write("\tPeakWorkingSetSize: 0x{0:X8}\n", pmc.PeakWorkingSetSize);
Console.Write("\tWorkingSetSize: 0x{0:X8}\n", pmc.WorkingSetSize);
Console.Write("\tQuotaPeakPagedPoolUsage: 0x{0:X8}\n", pmc.QuotaPeakPagedPoolUsage);
Console.Write("\tQuotaPagedPoolUsage: 0x{0:X8}\n", pmc.QuotaPagedPoolUsage);
Console.Write("\tQuotaPeakNonPagedPoolUsage: 0x{0:X8}\n", pmc.QuotaPeakNonPagedPoolUsage);
Console.Write("\tQuotaNonPagedPoolUsage: 0x{0:X8}\n", pmc.QuotaNonPagedPoolUsage);
Console.Write("\tPagefileUsage: 0x{0:X8}\n", pmc.PagefileUsage);
Console.Write("\tPeakPagefileUsage: 0x{0:X8}\n", pmc.PeakPagefileUsage);
}
CloseHandle(hProcess);
}
static int Main()
{
uint[] aProcesses = new uint[1024];
uint cbNeeded;
uint cProcesses;
uint i;
if (!EnumProcesses(aProcesses, sizeof(uint), cbNeeded))
{
return 1;
}
cProcesses = cbNeeded / sizeof(uint);
for (i = 0; i < cProcesses; i++)
{
PrintMemoryInfo(aProcesses[i]);
}
return 0;
}