c++ - 如何在 C++ 中从 Windows 检索总系统 CPU 使用率?

标签 c++ windows operating-system cpu-usage msdn

我需要即时检索总 CPU 使用率,以便反馈系统根据 CPU 是否受到限制来更改行为。为此,我查看了 NtQuerySystemInformation sys 调用,它在任何给定时间提供系统信息,但自从 MSDN 页面说

以来,最新版本的 Windows 似乎已弃用此功能

[NtQuerySystemInformation may be altered or unavailable in future versions of Windows. Applications should use the alternate functions listed in this topic.]

引用:https://msdn.microsoft.com/en-us/library/windows/desktop/ms724509(v=vs.85).aspx

有谁知道这个调用支持哪些操作系统版本?赢得 7/8/8.1/10?有没有其他方法可以直接检索总 CPU 使用率?

最佳答案

官方在MSDN上有两个函数。

  1. GetSystemTimes():看起来更容易,但很久以前发布了。 https://msdn.microsoft.com/en-us/library/windows/desktop/ms724400(v=vs.85).aspx

  2. GetSystemInfo() :我从 https://code.msdn.microsoft.com/windowsdesktop/Use-PerformanceCounter-to-272d57a1 获得了示例代码

     DWORD GetProcessorCount() 
     {
          SYSTEM_INFO sysinfo;  
          DWORD dwNumberOfProcessors; 
          GetSystemInfo(&sysinfo); 
          dwNumberOfProcessors = sysinfo.dwNumberOfProcessors; 
          return dwNumberOfProcessors; 
     } 
     vector<PCTSTR> GetValidCounterNames() 
     { 
         vector<PCTSTR> validCounterNames; 
         DWORD dwNumberOfProcessors = GetProcessorCount(); 
         DWORD index; 
         vector<PCTSTR> vszProcessNames; 
         TCHAR * szCounterName; 
         validCounterNames.push_back(TEXT("\\Processor(_Total)\\% Processor Time")); 
         validCounterNames.push_back(TEXT("\\Processor(_Total)\\% Idle Time")); 
         // skip some codes
         return validCounterNames;
     } 
    

祝你好运!

在我看来,Windows 命令“tasklist/v”将显示操作系统的 CPU 时间和内存,您可以通过“系统”或其他函数调用该命令。

附言。我仍然认为查看操作系统端是监控 CPU 使用率的最佳方式。 (如果我使用该函数,它也会在内部做同样的事情。)

关于c++ - 如何在 C++ 中从 Windows 检索总系统 CPU 使用率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43357571/

相关文章:

c++ - 在多个 SDL_Renderer* 上使用 SDL_Texture*

windows - 让 Haskell 程序在 wine 下采用 UTF8 语言环境

linux - 为 Windows 创建可执行的 Linux(例如 LAMP)虚拟化?

C++ - 通过初始化列表构造 unique_ptr 的 vector

c++ - boost zlib 问题

c++ - 在 C++ 的编译过程中如何在内部表示重载函数

c - Unix 分支 : how many processes are created?

c++ - 对于中高级 C# 开发人员开始使用 Visual Studio 2010 C++ 有哪些好的引用资料?

c - linux 内核代码 ">>"运算符

Python - 在当前 Windows 资源管理器中获取所选文件的路径