0

我目前正在尝试为我的 DirectX 程序制作某种 CPU 使用情况概述,但似乎我无法通过 PdhAddCounter() 获取此信息。我的代码如下所示:

status = PdhOpenQuery(NULL, 0, &m_queryHandle);
    if(status != ERROR_SUCCESS)
    {
        m_canReadCpu = false;
    }

status = PdhAddCounter(m_queryHandle, TEXT("\\Processor(_Total)\\% processor time"), 0, &m_counterHandle);
    if(status != ERROR_SUCCESS)
    {
        m_canReadCpu = false;
    }

在 PdhAddCounter 调用后,我的状态为 = -1073738824,这会导致程序失败。

我使用的是 Windows 7 64 位系统,我必须在 64 位环境中做一些不同的事情吗?谢谢你的帮助。

4

2 回答 2

1

请记住:PdhAddCounter 是区域设置敏感的。

响应 -1073738824 表示 PDH_CSTATUS_NO_OBJECT=0xC0000BB8。api 没有找到那个字符串。您使用的是非英文操作系统吗?

如果您需要做一个与 Windows XP 兼容的应用程序,您需要使用如下解决方法:http ://en.verysource.com/code/3604946_1/platforminfo.cpp.html 。

对于 Vista 和 Windows 7、8,...您可以改用 PdhAddEnglishCounter。

于 2013-02-11T08:17:59.017 回答
0

您可能还想使用GetSystemTimes kernel32 API,这将使您摆脱对 pdh.dll 的依赖。

在这里查看我的答案

于 2013-12-02T09:01:27.980 回答