如何获得CPU使用率

早肥年华

早肥年华

2016-02-19 13:28

岁数大了,QQ也不闪了,微信也不响了,电话也不来了,但是图老师依旧坚持为大家推荐最精彩的内容,下面为大家精心准备的如何获得CPU使用率,希望大家看完后能赶快学习起来。

  NT/2000方法:
  
  #include windows.h
  #include conio.h
  #include stdio.h
  
  #define SystemBasicInformation       0
  #define SystemPerformanceInformation 2
  #define SystemTimeInformation        3
  
  #define Li2Double(x) ((double)((x).HighPart) * 4.294967296E9 + (double)((x).LowPart))
  
  typedef strUCt
  {
      DWord   dwUnknown1;
      ULONG   uKeMaximumIncrement;
      ULONG   uPageSize;
      ULONG   uMmNumberOfPhysicalPages;
      ULONG   uMmLowestPhysicalPage;
      ULONG   uMmHighestPhysicalPage;
      ULONG   uAllocationGranularity;
      PVOID   pLowestUserAddress;
      PVOID   pMmHighestUserAddress;
      ULONG   uKeActiveProcessors;
      BYTE    bKeNumberProcessors;
      BYTE    bUnknown2;
      WORD    wUnknown3;
  } SYSTEM_BASIC_INFORMATION;
  
  typedef struct
  {
      LARGE_INTEGER   liIdleTime;
      DWORD           dwSpare[76];
  } SYSTEM_PERFORMANCE_INFORMATION;
  
  typedef struct
  {
      LARGE_INTEGER liKeBootTime;
      LARGE_INTEGER liKeSystemTime;
      LARGE_INTEGER liEXPTimeZoneBias;
      ULONG         uCurrentTimeZoneId;
      DWORD         dwReserved;
  } SYSTEM_TIME_INFORMATION;
  
  
  // ntdll!NtQuerySystemInformation (NT specific!)
  //
  // The function copies the system information of the
  // specified type into a buffer
  //
  // NTSYSAPI
  // NTSTATUS
  // NTAPI
  // NtQuerySystemInformation(
  //    IN UINT SystemInformationClass,    // information type
  
   //    OUT PVOID SystemInformation,       // pointer to buffer
  //    IN ULONG SystemInformationLength,  // buffer size in bytes
  //    OUT PULONG ReturnLength OPTIONAL   // pointer to a 32-bit
  //                                       // variable that receives
  //                                       // the number of bytes
  //                                       // written to the buffer
  // );
  typedef LONG (WINAPI *PROCNTQSI)(UINT,PVOID,ULONG,PULONG);
  
  PROCNTQSI NtQuerySystemInformation;
  
  
  void main(void)
  {
      SYSTEM_PERFORMANCE_INFORMATION SysPerfInfo;
      SYSTEM_TIME_INFORMATION        SysTimeInfo;
      SYSTEM_BASIC_INFORMATION       SysBaseInfo;
      double                         dbIdleTime;
      double                         dbSystemTime;
      LONG                           status;
      LARGE_INTEGER                  liOldIdleTime = {0,0};
      LARGE_INTEGER                  liOldSystemTime = {0,0};
  
      NtQuerySystemInformation = (PROCNTQSI)GetProcAddress(
                                            GetModuleHandle("ntdll"),
  
                                            "NtQuerySystemInformation"
                                           );
  
      if (!NtQuerySystemInformation)
          return;
  
      // get number of processors in the system
      status = NtQuerySystemInformation(SystemBasicInformation,&SysBaseInfo,sizeof(SysBaseInfo),NULL);
      if (status != NO_ERROR)
          return;
      
  printf("CPU Usage (press any key to exit):    ");
      while(!_kbhit())
      {
          // get new system time
      status = NtQuerySystemInformation(SystemTimeInformation,&SysTimeInfo,sizeof(SysTimeInfo),0);
          if (status!=NO_ERROR)
              return;
  
          // get new CPU's idle time
          status = NtQuerySystemInformation(SystemPerformanceInformation,&SysPerfInfo,sizeof(SysPerfInfo),NULL);
          if (status != NO_ERROR)
              return;
  
          // if it's a first call - skip it
         if (liOldIdleTime.QuadPart != 0)
         {
              // CurrentValue = NewValue - OldValue
       &nb
展开更多 50%)
分享

猜你喜欢

如何获得CPU使用率

编程语言 网络编程
如何获得CPU使用率

如何查看Mac系统CPU使用率

电脑入门
如何查看Mac系统CPU使用率

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

CPU使用率100%怎么解决?

电脑入门
CPU使用率100%怎么解决?

cpu使用率高怎么办

电脑入门
cpu使用率高怎么办

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

怎么使用Linux命令查看CPU使用率

电脑入门
怎么使用Linux命令查看CPU使用率

怎么使电脑CPU使用率降低

计算机应用技术
怎么使电脑CPU使用率降低

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

魔方阵的另一种解法

魔方阵的另一种解法

网页的排版与布局思考

网页的排版与布局思考
下拉加载更多内容 ↓