请教为什么显示的cpu使用率总是0.99

poson 2004-03-11 10:23:15
用了pdh.lib
#include <windows.h>
#include <winperf.h>
#include <malloc.h>
#include <stdio.h>
#include <tchar.h>
#include <pdh.h>

#define MAX 80

int main ()
{
HQUERY hQuery;
HCOUNTER *pCounterHandle;
PDH_STATUS pdhStatus;
PDH_FMT_COUNTERVALUE fmtValue;
DWORD ctrType;
CHAR szBuffer[MAX] = {'\0'};
int nRetCode = 0;

char str[50]="\\Processor(_Total)\\% Processor Time";

// Open the query object.
pdhStatus = PdhOpenQuery (NULL, 0, &hQuery);

pCounterHandle = (HCOUNTER *)GlobalAlloc(GPTR, sizeof(HCOUNTER));

/*
\\Processor(_Total)\\% Processor Time CPU使用率
\\System\\Processes 当前系统进程数
\\System\\Threads 当前系统线程数
\\Memory\\Commit Limit 总共内存数K (包括虚拟内存)
\\Memory\\Committed Bytes 已用内存数K (包括虚拟内存)
\\TCP\\Connections Active 系统中已建立的 TCP连接个数
其它Object Items 可以利用PdhEnumObjects()和PdhEnumObjectItems()得到
反正我只要用到上面的东东:)
*/

for(int i=0;i<100;i++)

{
strcpy(szBuffer,str);
pdhStatus = PdhAddCounter (hQuery,
szBuffer,
0,
pCounterHandle);
// "Prime" counters that need two values to display a
// formatted value.
pdhStatus = PdhCollectQueryData (hQuery);

// Get the current value of this counter.

pdhStatus = PdhGetFormattedCounterValue (*pCounterHandle,
PDH_FMT_LONG ,
&ctrType,
&fmtValue);

//fmtValue.doubleValue为所要的结果
if (pdhStatus == ERROR_SUCCESS)
{
printf (TEXT("%s %ld\n"),str,fmtValue.longValue);
}
else
{
// Print the error value.
printf (TEXT("error.\"-1\""));
}

printf("\n");
Sleep(1000);
}
// Close the query.
pdhStatus = PdhCloseQuery (hQuery);

return nRetCode;
}
...全文
100 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yintongshun 2004-03-14
  • 打赏
  • 举报
回复
这个到是需要CPU占用一下,不会总是0.99
ckp 2004-03-14
  • 打赏
  • 举报
回复
或着是在Idle中来处理
taianmonkey 2004-03-14
  • 打赏
  • 举报
回复
你的查询时间间隔太短建议使用OnTimer来处理,而不应该使用for循环!
ckp 2004-03-14
  • 打赏
  • 举报
回复
这个程序在运行其间,肯定要占用99%的资源了。
你应该将检测CPU占用情况的代码放到一个线程中,这样一来它占用的CPU资源就不为99%了。
poson 2004-03-14
  • 打赏
  • 举报
回复
我不明白为什么总是0.99
不知道是不是我在哪里设置错了.
请各位高手指点一下.谢谢了.

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧