2008. 12. 20. 01:04

pdh.h 를 이용한 CPU,메모리 사용량 확인 라이브러리 데모



프로젝트에 pdh.lib 를 링크하거나
소스에
#pragma comment(lib,"pdh.lib")
를 추가해서 사용하면 됩니다.

예제파일의 소스를 보면 어렵지 않지만 간단히 설명하면.
CPU,메모리 사용량을 확인할려고 하면.

초기화 - OnCreate() 같은곳에 넣으면 되겠죠.
------------------------------------------------------------------------
//cpu,mem 사용량 처리용/////////////////////////////////
 // TODO: Add extra initialization here
 if (!m_PerfMon.Initialize())
 {
  AfxMessageBox("Could not initialize CPerfMon!");
  return true;
 }
 // add counters
 m_nCPU = m_PerfMon.AddCounter(CNTR_CPU);
 m_nMEM = m_PerfMon.AddCounter(CNTR_MEMINUSE_PERCENT);

 // init timer
 SetTimer(1, 5000, NULL); // every half second refresh the counters
---------------------------------------------------------------------------


타이머 - OnTimer() 에서 필요한 작업을 하면 되겠네요.
---------------------------------------------------------------------------
if (!m_PerfMon.CollectQueryData())
 {
  AfxMessageBox("Failed Query!");
  return;
 }

 // update counters
 long lcpu = m_PerfMon.GetCounterValue(m_nCPU);
 long lmem = m_PerfMon.GetCounterValue(m_nMEM);

 // update dialog
 if (lcpu != -999)
 {
  m_strCpu.Format("%d%%", lcpu);
 }

 if (lmem != -999)
 {
  m_strMem.Format("%d%%", lmem);
 }

 CString str;
 str.Format("%d%% %d%%",lcpu,lmem);
 AfxMessageBox(str);