Windows下获取CPU频率
一直想在Windows下取得CPU的時(shí)鐘速度,找了好久終于找到了函數(shù)CallNtPowerInformation,要想使用它,首先必須包含powrprof.h頭文件和鏈接庫powerprof.lib.但是還有幾個(gè)問題:
首先powrprof.h和許多其它在Platform SDK中的頭文件一樣依然沒有被C++驗(yàn)證,如果你在C++程序中包含它的時(shí)候如果不小心,依然會(huì)有鏈接錯(cuò)誤。最好這樣包含它:
extern"C"{
#include <powrprof.h>
}
第二個(gè)原因是有一個(gè)結(jié)構(gòu)不知道什么原因沒有包含在powrprof.h中,這個(gè)結(jié)構(gòu)是PROCESSOR_POWER_INFORMATION.在Visual C++ 2008 Express Edition中仍然存在這個(gè)問題。為了取得正確的處理器速度,我們需要調(diào)用CallNtPowerInformation。ProcessorInformation枚舉值是第一個(gè)參數(shù),PROCESSOR_POWER_INFORMATION 結(jié)構(gòu)的一個(gè)數(shù)組作為Output緩存(對(duì)應(yīng)于每一個(gè)安裝在系統(tǒng)中的處理器芯片)。
一種解決的辦法是:這個(gè)結(jié)構(gòu)因?yàn)樵贛SDN中有定義,所以我們可以在我們自己的文件里定義它:
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這個(gè)結(jié)構(gòu)的定義中你可以發(fā)現(xiàn),這個(gè)結(jié)構(gòu)提供CPU速度的信息,例如最大速度,當(dāng)前速度,和空閑狀態(tài)(盡管我承認(rèn)我不知道空閑狀態(tài)位--我會(huì)去解決的)有一個(gè)相關(guān)的API函數(shù)GetPwuCapabilities,它也可以取得系統(tǒng)的一些性能。
總結(jié)
以上是生活随笔為你收集整理的Windows下获取CPU频率的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Doris 初识 -安装
- 下一篇: a标签如何打开新窗口_a标签怎么跳转页面