Windows下获取CPU频率
一直想在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频率的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Doris 初识 -安装
- 下一篇: a标签如何打开新窗口_a标签怎么跳转页面