一、概述
使用pdh,获取windows下CPU占用率、网络占用率、内存占用率、网络上下行速度等。
说明:本篇文章为在网上收集资料并写代码测试整理后形成的文档,在实际测试过程中同样遇到了很多问题,为方便以后使用,现整理如下。
二、所需头文件及库
包含可能所需的pdh相关头文件,windows下操作字符串所需头文件等
#include <Pdh.h>
#include <PdhMsg.h>
#include <IPHlpApi.h>
#include <comutil.h>
#include <tchar.h>
#pragma comment(lib,"pdh.lib")
#pragma comment(lib,"IPHlpApi.lib")
#pragma comment(lib,"comsuppw.lib")
三、PDH性能计数器使用步骤
1、打开pdh查询 PdhOpenQuery
HQUERY query;
PDH_STATUS status = PdhOpenQuery(NULL,NULL,&query);
if( status !=ERROR_SUCCESS )
,,,,,,
2、添加计数器
HCOUNTER cpuCounter;
status = PdhAddCounter(query,TEXT("\\Processor Information(_Total)\\% Processor Time"),NULL,&cpuCounter);
3、收集性能数据
PdhCollectQueryData(query);
Sleep(1000); // 此处时间可更换,但必须有延时,否则结果不准确
PdhCollectQueryData(query);
4、获取统计的结果值
PDH_FMT_COUNTERVALUE pdhValue;
DWORD dwValue;
status = PdhGetFormattedCounterValue(cpuCounter,PDH_FMT_DOUBLE,&dwValue,&pdhValue);
if(status == ERROR_SUCCESS)
qDebug() << "CPU=" << pdhValue.doubleValue << "%";
5、移除计数器
PdhRemoveCounter(cpuCounter);
6、关闭pdh查询
PdhCloseQuery(query);
四、常用PDH计数器语句使用汇总
下一篇更新。