当前情况:
我正在尝试测量我系统的当前 CPU 利用率(以赫兹为单位)。
我已经查看了解决我的问题的答案,但是我似乎无法使代码正常工作。
这是我当前的代码(main.cpp
来自答案):
#include <Pdh.h>
#include <PdhMsg.h>
#include <Windows.h>
static PDH_HQUERY cpuQuery;
static PDH_HCOUNTER cpuTotal;
void init()
{
PDH_STATUS a = PdhOpenQuery(NULL, NULL, &cpuQuery);
PDH_STATUS i = PdhAddCounter(cpuQuery, L"\\Processor(_Total)\\% Processor Time", NULL, &cpuTotal);
PdhCollectQueryData(cpuQuery);
}
double getCurrentValue()
{
init();
PDH_FMT_COUNTERVALUE counterVal;
PdhCollectQueryData(cpuQuery);
PdhGetFormattedCounterValue(cpuTotal, PDH_FMT_DOUBLE, NULL, &counterVal);
return counterVal.doubleValue;
}
int main()
{
double CPUUsage = getCurrentValue();
}
问题:
从返回的值getCurrectValue()
为零。
相关观察:
我观察到,类型a
和i
类型的值PDH_STATUS
都为零?我推测这可能与我在 中缺少值有关CPUUsage
,尽管我不确定为什么该函数不能正确返回到这些值中。
附加信息:
我以前没有使用过 PDH。