使用RegQueryValueEx和HKEY_PERFORMANCE_COUNTER获取“磁盘字节数/秒%

时间:2011-03-28 18:03:17

标签: c++ winapi performancecounter

我已经查找过示例和文档,但我仍然无法弄明白......

如何使用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 个答案:

答案 0 :(得分:1)

您无法按名称查询数据。相反,您需要按索引查询。 MSDN可以帮助您使用一些代码来查找要查询的相应索引。不幸的是,您需要在运行时确定哪个索引。

例如,以下应该检索处理器的性能数据。

LSTATUS s = RegQueryValueEx(HKEY_PERFORMANCE_DATA, _T("238"), NULL,
    &type, (LPBYTE)&perf, &cbData);