Windows의 perfmon 카운터 (카테고리, 카운터 이름 및 인스턴스 이름)를 읽는 C++ 코드를 얻을 수 있습니까?windows perfmon 카운터를 읽는 방법?
C#에서는 매우 간단하지만 C++ 코드가 필요했습니다.
감사
Windows의 perfmon 카운터 (카테고리, 카운터 이름 및 인스턴스 이름)를 읽는 C++ 코드를 얻을 수 있습니까?windows perfmon 카운터를 읽는 방법?
C#에서는 매우 간단하지만 C++ 코드가 필요했습니다.
감사
이전에 Doug T.가 지적했듯이 필자는 성능 카운터 값을 쿼리하기 위해 잠시 전에 도우미 클래스를 게시했습니다. 클래스의 사용법은 매우 간단합니다. 성능 카운터에 문자열을 제공하면됩니다. http://askldjd.wordpress.com/2011/01/05/a-pdh-helper-class-cpdhquery/
그러나 블로그에 게시 한 코드는 실제로 수정되었습니다. 귀하의 의견에서, 당신은 단지 하나의 필드를 쿼리에 관심이있는 것 같습니다.
이 경우 내 CPdhQuery 클래스에 다음 함수를 추가하십시오.
double CPdhQuery::CollectSingleData()
{
double data = 0;
while(true)
{
status = PdhCollectQueryData(hQuery);
if (ERROR_SUCCESS != status)
{
throw CException(GetErrorString(status));
}
PDH_FMT_COUNTERVALUE cv;
// Format the performance data record.
status = PdhGetFormattedCounterValue(hCounter,
PDH_FMT_DOUBLE,
(LPDWORD)NULL,
&cv);
if (ERROR_SUCCESS != status)
{
continue;
}
data = cv.doubleValue;
break;
}
return data;
}
파일 바이트/초 읽기 얻으려면 프로세서 시간
counter = boost::make_shared<CPdhQuery>(std::tstring(_T("\\Processor Information(_Total)\% Processor Time")));
를 얻으려면 :
counter = boost::make_shared<CPdhQuery>(std::tstring(_T("\\System\\File Read Bytes/sec")));
는 % 커밋 된 바이트를 얻으려면 :
counter = boost::make_shared<CPdhQuery>(std::tstring(_T("\\Memory\\% Committed Bytes In Use")));
데이터를 얻으려면, 이렇게.
double data = counter->CollectSingleData();
이 정보가 도움이되기를 바랍니다.
... 알란
일반적으로 사용되는 성능 값의 일부는 API가 직접 얻기 위해 호출해야합니다. 예를 들어, 총 프로세서 시간은 GetSystemTimes에서 얻을 수 있으며 직접 백분율을 계산할 수 있습니다.
이 옵션이 아니면 Performance Data Helper 라이브러리는 성능 데이터에 알맞게 간단한 인터페이스를 제공합니다.
내 친구의 블로그 게시물을 확인하십시오. 우리는이 코드를 일부 내부 도구에 사용합니다. http://askldjd.wordpress.com/2011/01/05/a-pdh-helper-class-cpdhquery/ –
고마워요.하지만 저는 하나의 카운터 값을 읽는 코드를 찾고 있습니다. 와일드 카드로 질의하고 싶지 않습니다. 예를 들어 다음 카운터를 읽어야합니다. \\ 프로세서 정보 (_Total) \ % 프로세서 시간 – RedFox