使用 RegQueryValueEx 和 HKEY_PERFORMANCE_COUNTER 获取“Disk Bytes/sec%
Posted
技术标签:
【中文标题】使用 RegQueryValueEx 和 HKEY_PERFORMANCE_COUNTER 获取“Disk Bytes/sec%【英文标题】:Using RegQueryValueEx and HKEY_PERFORMANCE_COUNTER to Get "Disk Bytes/sec% 【发布时间】:2011-03-28 18:03:16 【问题描述】:我已经寻找示例和文档,但我仍然无法弄清楚...
您如何使用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】:您不能像这样按名称查询数据。相反,您需要按索引查询。 MSDN 可以帮助您使用一些代码找出要查询的适当索引。不幸的是,您需要在运行时确定哪个索引。
例如,以下应该检索处理器的性能数据。
LSTATUS s = RegQueryValueEx(HKEY_PERFORMANCE_DATA, _T("238"), NULL,
&type, (LPBYTE)&perf, &cbData);
【讨论】:
以上是关于使用 RegQueryValueEx 和 HKEY_PERFORMANCE_COUNTER 获取“Disk Bytes/sec%的主要内容,如果未能解决你的问题,请参考以下文章