Я пытаюсь прочитать время работы системы, используя счетчики производительности в C ++.Я хочу поддерживать как XP, так и Windows 7. Как минимум,
Следующий код отлично работает в Windows XP ...
HQUERY hQuery; HCOUNTER hCounter;
PDH_FMT_COUNTERVALUE Value;
int ret = 0;
if (PdhOpenQuery(NULL, 0, &hQuery) == ERROR_SUCCESS) {
if ((status = PdhAddCounter(hQuery, queryURI, 0, &hCounter)) == ERROR_SUCCESS) {
if ((status = PdhCollectQueryData(hQuery)) == ERROR_SUCCESS) {
if ((status = PdhGetFormattedCounterValue(hCounter, PDH_FMT_LARGE, NULL, &Value)) == ERROR_SUCCESS) {
ret = (DWORD)(Value.largeValue);
}
}
PdhRemoveCounter(hCounter);
}
PdhCloseQuery(hQuery);
}
return ret;
.. но не работает в Windows 7. В частности, PdhCollectQueryData возвращает PDH_NO_DATA независимо от того, запущен ли я в качестве администратора или нет.
Как я могу получить работоспособность системы на Windows 7 и XP?Я ожидаю, что время будет намного больше, чем 49-дневное переполнение GetTickCount, и я бы предпочел не иметь отдельных версий PDH для XP и версий GetTickCount64 для 7, если это вообще возможно ...