我已经查找过示例和文档,但我仍然无法弄明白......
如何使用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);
但它只返回一个没有数据的标题。 :(
答案 0 :(得分:1)
您无法按名称查询数据。相反,您需要按索引查询。 MSDN可以帮助您使用一些代码来查找要查询的相应索引。不幸的是,您需要在运行时确定哪个索引。
例如,以下应该检索处理器的性能数据。
LSTATUS s = RegQueryValueEx(HKEY_PERFORMANCE_DATA, _T("238"), NULL,
&type, (LPBYTE)&perf, &cbData);