윈도우 O.S 에는 현재 시스템의 상태를 모니터링 할 수 있는 성능 모니터라는 어플리케이션이 존재합니다.

이 어플리케이션은 하드웨어단위의 사용상태 및 프로세스 단위의 현재 상태 정보 등을 알 수 있습니다.

PDH 함수를 사용하면 이런 성능데이터를 개발자의 어플리케이션에 수집할 수 있습니다.

PDH 함수를 사용하여 성능 데이터를 수집하는 방법은 다음과 같습니다.

쿼리 생성

   1: PDH_STATUS PdhOpenQuery(

   2:   __in   LPCTSTR szDataSource,

   3:   __in   DWORD_PTR dwUserData,

   4:   __out  PDH_HQUERY *phQuery

   5: );

쿼리에 카운터 추가
   1: PDH_STATUS PdhAddCounter(

   2:   __in   PDH_HQUERY hQuery,

   3:   __in   LPCTSTR szFullCounterPath,

   4:   __in   DWORD_PTR dwUserData,

   5:   __out  PDH_HCOUNTER *phCounter

   6: );

성능 데이터 수집
   1: PDH_STATUS PdhCollectQueryData(

   2:   __inout  PDH_HQUERY hQuery

   3: );

성능 데이터를 출력가능한 데이터로 계산
   1: PDH_STATUS PdhGetFormattedCounterValue(

   2:   __in   PDH_HCOUNTER hCounter,

   3:   __in   DWORD dwFormat,

   4:   __out  LPDWORD lpdwType,

   5:   __out  PPDH_FMT_COUNTERVALUE pValue

   6: );

쿼리 해제
 
   1: PDH_STATUS PdhCloseQuery(

   2:   __in  PDH_HQUERY hQuery

   3: );

 
위 다섯가지의 순서로 진행되며, 성능데이터 수집 및 출력가능한 데이터로 가공하는 부분을 반복적으로 진행하게되면 계속적인 데이터 수집이 가능합니다.
 
위 순서는 기본적인 방법만을 나열한 것이며, 수집을 위한 여러가지 방법이 있습니다. 자세한 내용은 출처를 따라가 보시면 방법이 있습니다.
 
출처 : http://msdn.microsoft.com/en-us/library/aa373214%28VS.85%29.aspx
예제 : http://msdn.microsoft.com/en-us/library/aa373169%28v=VS.85%29.aspx