Могу ли я получить код C++ для чтения счетчика производительности Windows (категория, имя счетчика и имя экземпляра)?
Это очень просто на С#, но мне нужен был код на С++.
Спасибо
Могу ли я получить код C++ для чтения счетчика производительности Windows (категория, имя счетчика и имя экземпляра)?
Это очень просто на С#, но мне нужен был код на С++.
Спасибо
Как указывал ранее Дуг Т., некоторое время назад я опубликовал вспомогательный класс для запроса значения счетчика производительности. Использование класса довольно простое, все, что вам нужно сделать, это указать строку для счетчика производительности. 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, и вы можете рассчитать процент самостоятельно.
Если это невозможно, то данные о производительности Вспомогательная библиотека предоставляет довольно простой интерфейс для работы с данными о производительности.