C++里面获取单个进程的内存利用率

来源:互联网 发布:js 清理cookie 编辑:程序博客网 时间:2024/06/08 06:02

原文地址:点击打开链接http://blog.chinaunix.net/uid-729782-id-2059813.html

可以使用以下几个函数获得系统进程的使用情况:GetProcessMemoryInfo, EnumProcesses!具体使用方法如MSDN介绍:

 

#include 
#include 
#include "psapi.h"

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( "\tPageFaultCount: %d\n", pmc.PageFaultCount );
  printf( "\tPageFaultCount: 0x%08X\n", pmc.PageFaultCount );
  printf( "\tPeakWorkingSetSize: 0x%08X\n", 
   pmc.PeakWorkingSetSize );
  printf( "\tWorkingSetSize: 0x%08X\n", pmc.WorkingSetSize );
  printf( "\tQuotaPeakPagedPoolUsage: 0x%08X\n", 
   pmc.QuotaPeakPagedPoolUsage );
  printf( "\tQuotaPagedPoolUsage: 0x%08X\n", 
   pmc.QuotaPagedPoolUsage );
  printf( "\tQuotaPeakNonPagedPoolUsage: 0x%08X\n", 
   pmc.QuotaPeakNonPagedPoolUsage );
  printf( "\tQuotaNonPagedPoolUsage: 0x%08X\n", 
   pmc.QuotaNonPagedPoolUsage );
  printf( "\tPagefileUsage: 0x%08X\n", pmc.PagefileUsage ); 
  printf( "\tPeakPagefileUsage: 0x%08X\n", 
   pmc.PeakPagefileUsage );
 }

 CloseHandle( hProcess );
}

void main( )
{
 // Get the list of process identifiers.

 DWORD aProcesses[1024], cbNeeded, cProcesses;
 unsigned int i;

 if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) )
  return;

 // 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] );
}




0 0
原创粉丝点击