升级到 Windows 11 后 PDH 计数器返回错误值的问题

问题描述 投票:0回答:1

将系统从 Windows 10 更新到 Windows 11 后,我遇到了 PDH 计数器的问题。我有一个 C++ 程序可以监视 CPU 使用情况,它在以前版本的 Windows 上运行得很好,但是一旦我升级到 Windows 11 ,PDH 计数器开始返回不正确的值。代码如下:

//Declare variables
double cpuUsage
PDH_HQUERY cpuQuery;
PDH_HCOUNTER cpuTotal;

//Initialize at the start
PdhOpenQuery(NULL, NULL, &cpuQuery);
PdhAddEnglishCounter(cpuQuery, L"\\Processor(_Total)\\% Processor Time", NULL, &cpuTotal);
PdhCollectQueryData(cpuQuery);

//Code to be called every second
PDH_FMT_COUNTERVALUE counterVal;
PdhCollectQueryData(cpuQuery);
PdhGetFormattedCounterValue(cpuTotal, PDH_FMT_DOUBLE, NULL, &counterVal);
cpuUsage = counterVal.doubleValue;

有谁知道 Windows 11 是否做了任何会影响此问题的更改?如果是这样,有人可以建议一种解决方法、解决方案或更直接的方法来监控 CPU 使用情况吗?

我在三台独立的计算机上测试了代码,每个系统提供了不同的 CPU 使用范围:一个返回在 0% 到 0.2% 之间,另一个返回在 300% 到 400% 之间,最后一个返回在 7% 到 15% 之间。

我的期望是我的应用程序检索的 CPU 使用率数据应与 Windows 11 任务管理器中显示的 CPU 使用率百分比相匹配,该百分比通常范围从 0% 到 100%。

在微软官方提供的PDH示例代码中也发现了这些不一致的地方: 浏览性能计数器

c++ windows performancecounter
1个回答
0
投票

使用“\处理器信息(_Total)\%处理器实用程序”代替。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.