#include
#include
#include
#include
#pragma comment( lib, "psapi")
void PrintMemoryInfo ( DWORD processID )
{
HANDLE hProcess;
PROCESS_MEMORY_COUNTERS pmc;
// Print the process identifier.
printf( "\nProcess ID: %u\n", processID );
// Print information about the memory usage of the process.
hProcess = OpenProcess ( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processID );
if ( NULL == hProcess )
return;
if ( GetProcessMemoryInfo ( hProcess, &pmc, sizeof(pmc) ) )
{
printf( "\t PageFaultCount: %d\n", pmc.PageFaultCount);
printf( "\t PeakWorkingSetSize: %d KB\n", pmc.PeakWorkingSetSize/1024);
printf( "\t WorkingSetSize: %d KB\n", pmc.WorkingSetSize/1024);
printf( "\t QuotaPeakPagedPoolUsage: %d KB\n", pmc.QuotaPeakPagedPoolUsage /1024);
printf( "\t QuotaPagedPoolUsage: %d KB\n", pmc.QuotaPagedPoolUsage /1024);
printf( "\t QuotaPeakNonPagedPoolUsage: %d KB\n", pmc.QuotaPeakNonPagedPoolUsage /1024);
printf( "\t QuotaNonPagedPoolUsage: %d KB\n", pmc.QuotaNonPagedPoolUsage /1024);
printf( "\t PagefileUsage: %d KB\n", pmc.PagefileUsage /1024);
printf( "\t PeakPagefileUsage: %d KB\n", pmc.PeakPagefileUsage /1024);
}
CloseHandle ( hProcess );
}
//////////////////////////////////////////////////////////////////////////////////////////////
int main( )
{
// Get the list of process identifiers.
DWORD aProcesses[1024], cbNeeded, cProcesses;
unsigned int i;
if ( !EnumProcesses ( aProcesses, sizeof(aProcesses), &cbNeeded ) )
return 1;
// Calculate how many process identifiers were returned.
cProcesses = cbNeeded / sizeof(DWORD);
// Print the memory usage for each process
for ( i = 0; i < cProcesses; i++ )
PrintMemoryInfo ( aProcesses[i] );
system("pause");
return 0;
}
//////////////////////////////////////////////////////////////////////////////////////////////