一直想在Windows下取得CPU的时钟速度,找了好久终于找到了函数CallNtPowerInformation,要想使用它,首先必须包含powrprof.h头文件和链接库powerprof.lib.但是还有几个问题:

首先powrprof.h和许多其它在Platform SDK中的头文件一样依然没有被C++验证,如果你在C++程序中包含它的时候如果不小心,依然会有链接错误。最好这样包含它:

extern "C" {
#include <powrprof.h>
}
第二个原因是有一个结构不知道什么原因没有包含在powrprof.h中,这个结构是PROCESSOR_POWER_INFORMATION.在Visual C++ 2008 Express Edition中仍然存在这个问题。为了取得正确的处理器速度,我们需要调用CallNtPowerInformation。ProcessorInformation枚举值是第一个参数,PROCESSOR_POWER_INFORMATION 结构的一个数组作为Output缓存(对应于每一个安装在系统中的处理器芯片)。

一种解决的办法是:这个结构因为在MSDN中有定义,所以我们可以在我们自己的文件里定义它:

typedef struct _PROCESSOR_POWER_INFORMATION {
ULONG Number;
ULONG MaxMhz;
ULONG CurrentMhz;
ULONG MhzLimit;
ULONG MaxIdleState;
ULONG CurrentIdleState;
} PROCESSOR_POWER_INFORMATION , *PPROCESSOR_POWER_INFORMATION;

从PROCESSOR_POWER_INFORMATION这个结构的定义中你可以发现,这个结构提供CPU速度的信息,例如最大速度,当前速度,和空闲状态(尽管我承认我不知道空闲状态位--我会去解决的)有一个相关的API函数GetPwuCapabilities,它也可以取得系统的一些性能。

Windows下获取CPU频率的更多相关文章

  1. python在windows下获取cpu、硬盘、bios、主板序列号

    测试 此处使用的是wmi库,可以去google里面搜索“python wmi” import os, sysimport timeimport wmi,zlib def get_cpu_info() ...

  2. Windows下获取高精度时间注意事项

    Windows下获取高精度时间注意事项 [转贴 AdamWu]   花了很长时间才得到的经验,与大家分享. 1. RDTSC - 粒度: 纳秒级 不推荐优势: 几乎是能够获得最细粒度的计数器抛弃理由: ...

  3. c和c++在windows下获取时间和计算时间差的方法总结

    c/c++在windows下获取时间和计算时间差的几种方法总结 一.标准C和C++都可用 1.获取时间用time_t time( time_t * timer ),计算时间差使用double diff ...

  4. windows下获取IP地址的两种方法

    windows下获取IP地址的两种方法: 一种可以获取IPv4和IPv6,但是需要WSAStartup: 一种只能取到IPv4,但是不需要WSAStartup: 如下: 方法一:(可以获取IPv4和I ...

  5. Windows下获取本机IP地址方法介绍

    Windows下获取本机IP地址方法介绍 if((hostinfo = gethostbyname(name)) != NULL) { #if 1 ; printf("IP COUNT: % ...

  6. 如何在Windows下用cpu模式跑通py-faster-rcnn 的demo.py

    关键字:Windows.cpu模式.Python.faster-rcnn.demo.py 声明:本篇blog暂时未经二次实践验证,主要以本人第一次配置过程的经验写成.计划在7月底回家去电脑城借台机子试 ...

  7. Windows下用cpu模式跑通目标检测py-faster-rcnn 的demo.py

    关键字:Windows.cpu模式.Python.faster-rcnn.demo.py 声明:原文发表在博客园,未经允许不得转载!!!本篇blog过程已经多名读者实践验证,有人反馈报错TypeErr ...

  8. .net 获取CPU频率 内存 磁盘大小,域名 端口 虚拟目录等

    CPU个数: @Environment.GetEnvironmentVariable("NUMBER_OF_PROCESSORS") CPU类型: @Environment.Get ...

  9. C语言实现Windows下获取IP和MAC地址。

    C语言实现Windows下获取IP和MAC地址. #include <winsock2.h> #include <stdio.h> #include <stdlib.h& ...

随机推荐

  1. JQuery中 text()、html() 以及 val()以及innerText、innerHTML和value

    设置内容 - text().html() 以及 val() 我们将使用前一章中的三个相同的方法来设置内容: text() - 设置或返回所选元素的文本内容 html() - 设置或返回所选元素的内容( ...

  2. C语言学习系列(三)C程序结构

    一.C程序结构 C 程序主要包括以下部分: 预处理器指令 函数 变量 语句 & 表达式 注释 new C program demo: #include <stdio.h> /*预处 ...

  3. maven+struts2例子

    本文在开发第一个maven示例的基础上进行扩展. 第一个maven示例目录结构如下: 扩展后目录为: 打开pom.xml 在WEB-INF文件夹下新建web.xml: <?xml version ...

  4. MySQL 热快问题解决

    原文地址:http://blog.itpub.net/22664653/viewspace-1269948 一  背景 某个业务线 商品开放开用户申请免费试用,当某个商品特别吸引人时,比如iPhone ...

  5. c#递归读取菜单树

    1.查询菜单节点下所有子节点id List<sys_module> menus = new List<sys_module>() { }; public async Task& ...

  6. 菜单栏伸缩(附jquery-1.12.1.js)

    Css: <style type="text/css"> .leftMenu { min-width:220px; width:268px; margin:40px a ...

  7. Java高并发下的 “单例模式”

    前言:单例模式大家应该很熟悉了,我在这里就自己总结一下自己这段时间学到的单例相关的知识. 单例模式的目的:保证一个类只有单一的实例,也就是说你无法通过new来创建这个类的一个新实例. 单例模式的意义: ...

  8. ROS indigo下Kinect v1的驱动安装与调试

    ROS indigo下Kinect v1的驱动安装与调试 本文简要叙述了在ROS indigo版本下Kinect v1的驱动安装与调试过程. 1. 实验环境 (1)硬件:  台式机和Kinect v1 ...

  9. Nice的应用整理

    笔记清单 印象笔记 -- 知识,账号 Typora -- markdown编写 xmind 思维导图 sm.ms 图床 processon 流程图 愿望清单 滴答清单 -- 执行力,备忘录 账号 账号 ...

  10. Ubuntu18.04上安装N卡驱动、CUDA、CUDNN三连

    环境:Ubuntu18.04 显卡驱动真的挺方便的,CUDA和CUDNN还是踩了一些坑2333 1.安装显卡驱动 安装ubuntu更新或sudo apt-get update & sudo a ...