Использование RegQueryValueEx и HKEY_PERFORMANCE_COUNTER, чтобы получить "Дисковые байты / сек% - PullRequest
0 голосов
/ 28 марта 2011

Я искал примеры и документацию, но до сих пор не могу понять ...

Как вы используете RegQueryValueEx ( не функции PdhXxx), чтобы запросить что-то вроде Disk Bytes/sec?

Я пробовал следующее:

DWORD type;
static union { TCHAR Data[32 * 1024]; PERF_DATA_BLOCK Perf; } perf;//Stack buffer
DWORD cbData = sizeof(perf);
LSTATUS s = RegQueryValueEx(HKEY_PERFORMANCE_DATA,
    _T("PhysicalDisk"), NULL, &type, (LPBYTE)&perf, &cbData);
PPERF_OBJECT_TYPE pObjType =
    (PPERF_OBJECT_TYPE)((BYTE*)&perf + perf.Perf.HeaderLength);

но он просто возвращает заголовок без данных. (

1 Ответ

1 голос
/ 28 марта 2011

Вы не можете запрашивать данные по имени, как это.Вместо этого вам нужно сделать запрос по индексу. MSDN может помочь вам с кодом, чтобы найти соответствующий индекс для запроса.К сожалению, вам нужно определить, какой индекс во время выполнения.

Например, следующее СЛЕДУЕТ извлекать данные производительности для процессора.

LSTATUS s = RegQueryValueEx(HKEY_PERFORMANCE_DATA, _T("238"), NULL,
    &type, (LPBYTE)&perf, &cbData);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...