青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

來吧,朋友!

為C++瘋狂

C++編程實(shí)現(xiàn)計(jì)算CPU占用率

起學(xué)習(xí) NT/2000方法:

#include <windows.h>
#include <conio.h>
#include <stdio.h>

#define SystemBasicInformation 0
#define SystemPerformanceInformation 2
#define SystemTimeInformation 3

#define Li2Double(x) ((double)((x).HighPart) * 4.294967296E9 (double)((x).LowPart))

typedef struct
{
DWORD dwUnknown1;
ULONG uKeMaximumIncrement;
ULONG uPageSize;
ULONG uMmNumberOfPhysicalPages;
ULONG uMmLowestPhysicalPage;
ULONG uMmHighestPhysicalPage;
ULONG uAllocationGranularity;
PVOID pLowestUserAddress;
PVOID pMmHighestUserAddress;
ULONG uKeActiveProcessors;
BYTE bKeNumberProcessors;
BYTE bUnknown2;
WORD wUnknown3;
} SYSTEM_BASIC_INFORMATION;

typedef struct
{
LARGE_INTEGER liIdleTime;
DWORD dwSpare[76];
} SYSTEM_PERFORMANCE_INFORMATION;

typedef struct
{
LARGE_INTEGER liKeBootTime;
LARGE_INTEGER liKeSystemTime;
LARGE_INTEGER liExpTimeZoneBias;
ULONG uCurrentTimeZoneId;
DWORD dwReserved;
} SYSTEM_TIME_INFORMATION;


// ntdll!NtQuerySystemInformation (NT specific!)
//
// The function copies the system information of the
// specified type into a buffer
//
// NTSYSAPI
// NTSTATUS
// NTAPI
// NtQuerySystemInformation(
// IN UINT SystemInformationClass, // information type
// OUT PVOID SystemInformation, // pointer to buffer
// IN ULONG SystemInformationLength, // buffer size in bytes
// OUT PULONG ReturnLength OPTIONAL // pointer to a 32-bit
// // variable that receives
// // the number of bytes
// // written to the buffer
// );
typedef LONG (WINAPI *PROCNTQSI)(UINT,PVOID,ULONG,PULONG);

PROCNTQSI NtQuerySystemInformation;


void main(void)
{
SYSTEM_PERFORMANCE_INFORMATION SysPerfInfo;
SYSTEM_TIME_INFORMATION SysTimeInfo;
SYSTEM_BASIC_INFORMATION SysBaseInfo;
double dbIdleTime;
double dbSystemTime;
LONG status;
LARGE_INTEGER liOldIdleTime = {0,0};
LARGE_INTEGER liOldSystemTime = {0,0};

NtQuerySystemInformation = (PROCNTQSI)GetProcAddress(
GetModuleHandle("ntdll"),
"NtQuerySystemInformation"
);

if (!NtQuerySystemInformation)
return;

// get number of processors in the system
status = NtQuerySystemInformation(SystemBasicInformation,&SysBaseInfo,sizeof(SysBaseInfo),NULL);
if (status != NO_ERROR)
return;

printf("\nCPU Usage (press any key to exit): ");
while(!_kbhit())
{
// get new system time
status = NtQuerySystemInformation(SystemTimeInformation,&SysTimeInfo,sizeof(SysTimeInfo),0);
if (status!=NO_ERROR)
return;

// get new CPU's idle time
status = NtQuerySystemInformation(SystemPerformanceInformation,&SysPerfInfo,sizeof(SysPerfInfo),NULL);
if (status != NO_ERROR)
return;

// 本文轉(zhuǎn)自 C Builder研究 - http://www.ccrun.com/article.asp?i=424&d=7jw23a
// if it's a first call - skip it
if (liOldIdleTime.QuadPart != 0)
{
// CurrentValue = NewValue - OldValue
dbIdleTime = Li2Double(SysPerfInfo.liIdleTime) - Li2Double(liOldIdleTime);
dbSystemTime = Li2Double(SysTimeInfo.liKeSystemTime) - Li2Double(liOldSystemTime);

// CurrentCpuIdle = IdleTime / SystemTime
dbIdleTime = dbIdleTime / dbSystemTime;

// CurrentCpuUsage% = 100 - (CurrentCpuIdle * 100) / NumberOfProcessors
dbIdleTime = 100.0 - dbIdleTime * 100.0 / (double)SysBaseInfo.bKeNumberProcessors 0.5;

printf("\b\b\b\b=%%",(UINT)dbIdleTime);
}

// store new CPU's idle and system time
liOldIdleTime = SysPerfInfo.liIdleTime;
liOldSystemTime = SysTimeInfo.liKeSystemTime;

// wait one second
Sleep(1000);
}
printf("\n");
}

//-------------------------------------------------------------

W9X:
#include <windows.h>
#include <conio.h>
#include <stdio.h>

void main(void)
{
HKEY hkey;
DWORD dwDataSize;
DWORD dwType;
DWORD dwCpuUsage;

// starting the counter
if ( RegOpenKeyEx( HKEY_DYN_DATA,
"PerfStats\\StartStat",
0,KEY_ALL_ACCESS,
&hkey ) != ERROR_SUCCESS)
return;

dwDataSize=sizeof(DWORD);
RegQueryValueEx( hkey,
"KERNEL\\CPUUsage",
NULL,&dwType,
(LPBYTE)&dwCpuUsage,
&dwDataSize );

RegCloseKey(hkey);

// geting current counter's value
if ( RegOpenKeyEx( HKEY_DYN_DATA,
"PerfStats\\StatData",
0,KEY_READ,
&hkey ) != ERROR_SUCCESS)
return;

printf("\nCPU Usage (press any key to exit): ");
while(!_kbhit())
{
dwDataSize=sizeof(DWORD);
RegQueryValueEx( hkey,
"KERNEL\\CPUUsage",
NULL,&dwType,
(LPBYTE)&dwCpuUsage,
&dwDataSize );
Sleep(500);
printf("\b\b\b\b=%%",dwCpuUsage);
}
printf("\n");

RegCloseKey(hkey);

// stoping the counter
if ( RegOpenKeyEx( HKEY_DYN_DATA,
"PerfStats\\StopStat",
0,KEY_ALL_ACCESS,
&hkey ) != ERROR_SUCCESS)
return;

dwDataSize=sizeof(DWORD);
RegQueryValueEx( hkey,
"KERNEL\\CPUUsage",
NULL,&dwType,
(LPBYTE)&dwCpuUsage,
&dwDataSize );

RegCloseKey(hkey);
} NT/2000方法:

#include <windows.h>
#include <conio.h>
#include <stdio.h>

#define SystemBasicInformation 0
#define SystemPerformanceInformation 2
#define SystemTimeInformation 3

#define Li2Double(x) ((double)((x).HighPart) * 4.294967296E9 (double)((x).LowPart))

typedef struct
{
DWORD dwUnknown1;
ULONG uKeMaximumIncrement;
ULONG uPageSize;
ULONG uMmNumberOfPhysicalPages;
ULONG uMmLowestPhysicalPage;
ULONG uMmHighestPhysicalPage;
ULONG uAllocationGranularity;
PVOID pLowestUserAddress;
PVOID pMmHighestUserAddress;
ULONG uKeActiveProcessors;
BYTE bKeNumberProcessors;
BYTE bUnknown2;
WORD wUnknown3;
} SYSTEM_BASIC_INFORMATION;

typedef struct
{
LARGE_INTEGER liIdleTime;
DWORD dwSpare[76];
} SYSTEM_PERFORMANCE_INFORMATION;

typedef struct
{
LARGE_INTEGER liKeBootTime;
LARGE_INTEGER liKeSystemTime;
LARGE_INTEGER liExpTimeZoneBias;
ULONG uCurrentTimeZoneId;
DWORD dwReserved;
} SYSTEM_TIME_INFORMATION;


// ntdll!NtQuerySystemInformation (NT specific!)
//
// The function copies the system information of the
// specified type into a buffer
//
// NTSYSAPI
// NTSTATUS
// NTAPI
// NtQuerySystemInformation(
// IN UINT SystemInformationClass, // information type
// OUT PVOID SystemInformation, // pointer to buffer
// IN ULONG SystemInformationLength, // buffer size in bytes
// OUT PULONG ReturnLength OPTIONAL // pointer to a 32-bit
// // variable that receives
// // the number of bytes
// // written to the buffer
// );
typedef LONG (WINAPI *PROCNTQSI)(UINT,PVOID,ULONG,PULONG);

PROCNTQSI NtQuerySystemInformation;


void main(void)
{
SYSTEM_PERFORMANCE_INFORMATION SysPerfInfo;
SYSTEM_TIME_INFORMATION SysTimeInfo;
SYSTEM_BASIC_INFORMATION SysBaseInfo;
double dbIdleTime;
double dbSystemTime;
LONG status;
LARGE_INTEGER liOldIdleTime = {0,0};
LARGE_INTEGER liOldSystemTime = {0,0};

NtQuerySystemInformation = (PROCNTQSI)GetProcAddress(
GetModuleHandle("ntdll"),
"NtQuerySystemInformation"
);

if (!NtQuerySystemInformation)
return;

// get number of processors in the system
status = NtQuerySystemInformation(SystemBasicInformation,&SysBaseInfo,sizeof(SysBaseInfo),NULL);
if (status != NO_ERROR)
return;

printf("\nCPU Usage (press any key to exit): ");
while(!_kbhit())
{
// get new system time
status = NtQuerySystemInformation(SystemTimeInformation,&SysTimeInfo,sizeof(SysTimeInfo),0);
if (status!=NO_ERROR)
return;

// get new CPU's idle time
status = NtQuerySystemInformation(SystemPerformanceInformation,&SysPerfInfo,sizeof(SysPerfInfo),NULL);
if (status != NO_ERROR)
return;

// 本文轉(zhuǎn)自 C Builder研究 - http://www.ccrun.com/article.asp?i=424&d=7jw23a
// if it's a first call - skip it
if (liOldIdleTime.QuadPart != 0)
{
// CurrentValue = NewValue - OldValue
dbIdleTime = Li2Double(SysPerfInfo.liIdleTime) - Li2Double(liOldIdleTime);
dbSystemTime = Li2Double(SysTimeInfo.liKeSystemTime) - Li2Double(liOldSystemTime);

// CurrentCpuIdle = IdleTime / SystemTime
dbIdleTime = dbIdleTime / dbSystemTime;

// CurrentCpuUsage% = 100 - (CurrentCpuIdle * 100) / NumberOfProcessors
dbIdleTime = 100.0 - dbIdleTime * 100.0 / (double)SysBaseInfo.bKeNumberProcessors 0.5;

printf("\b\b\b\b=%%",(UINT)dbIdleTime);
}

// store new CPU's idle and system time
liOldIdleTime = SysPerfInfo.liIdleTime;
liOldSystemTime = SysTimeInfo.liKeSystemTime;

// wait one second
Sleep(1000);
}
printf("\n");
}

//-------------------------------------------------------------

W9X:
#include <windows.h>
#include <conio.h>
#include <stdio.h>

void main(void)
{
HKEY hkey;
DWORD dwDataSize;
DWORD dwType;
DWORD dwCpuUsage;

// starting the counter
if ( RegOpenKeyEx( HKEY_DYN_DATA,
"PerfStats\\StartStat",
0,KEY_ALL_ACCESS,
&hkey ) != ERROR_SUCCESS)
return;

dwDataSize=sizeof(DWORD);
RegQueryValueEx( hkey,
"KERNEL\\CPUUsage",
NULL,&dwType,
(LPBYTE)&dwCpuUsage,
&dwDataSize );

RegCloseKey(hkey);

// geting current counter's value
if ( RegOpenKeyEx( HKEY_DYN_DATA,
"PerfStats\\StatData",
0,KEY_READ,
&hkey ) != ERROR_SUCCESS)
return;

printf("\nCPU Usage (press any key to exit): ");
while(!_kbhit())
{
dwDataSize=sizeof(DWORD);
RegQueryValueEx( hkey,
"KERNEL\\CPUUsage",
NULL,&dwType,
(LPBYTE)&dwCpuUsage,
&dwDataSize );
Sleep(500);
printf("\b\b\b\b=%%",dwCpuUsage);
}
printf("\n");

RegCloseKey(hkey);

// stoping the counter
if ( RegOpenKeyEx( HKEY_DYN_DATA,
"PerfStats\\StopStat",
0,KEY_ALL_ACCESS,
&hkey ) != ERROR_SUCCESS)
return;

dwDataSize=sizeof(DWORD);
RegQueryValueEx( hkey,
"KERNEL\\CPUUsage",
NULL,&dwType,
(LPBYTE)&dwCpuUsage,
&dwDataSize );

RegCloseKey(hkey);
}

posted on 2009-07-22 18:11 yanghaibao 閱讀(1357) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C++開發(fā)工具

導(dǎo)航

<2025年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

統(tǒng)計(jì)

常用鏈接

留言簿

隨筆分類

隨筆檔案

文章檔案

收藏夾

Good blogs

搜索

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品国产三级国产普通话99| 欧美日本国产一区| 国产农村妇女毛片精品久久麻豆| 亚洲欧美美女| 欧美一区二区三区四区高清 | 亚洲视频观看| 国产精品久久久久久超碰 | 久久激情五月激情| 久久久久久夜精品精品免费| 亚洲人成在线观看网站高清| 亚洲精品国产精品乱码不99按摩| 欧美激情va永久在线播放| 亚洲性感美女99在线| 午夜精品免费视频| 在线精品观看| 一本色道久久综合亚洲91| 国产老女人精品毛片久久| 麻豆精品国产91久久久久久| 欧美久久电影| 久久琪琪电影院| 欧美片在线播放| 久久精品男女| 欧美久久久久| 久久综合色婷婷| 欧美揉bbbbb揉bbbbb| 老司机成人在线视频| 欧美日韩网站| 美女性感视频久久久| 欧美午夜无遮挡| 欧美国产先锋| 国产一区二区三区久久| 99国产精品久久久久久久久久 | 亚洲欧美精品在线观看| 久久久久一区二区| 亚洲欧美高清| 欧美—级高清免费播放| 久久久久免费| 国产伦精品一区二区三区照片91| 亚洲高清不卡一区| 黄色成人在线网站| 午夜激情综合网| 亚洲天天影视| 欧美高清视频一区| 欧美 日韩 国产一区二区在线视频| 国产精品乱码一区二三区小蝌蚪| 欧美激情麻豆| 亚洲大胆视频| 久久精品亚洲精品| 久久久久久色| 国产日韩欧美视频在线| 一本色道久久加勒比88综合| 亚洲人体大胆视频| 久久看片网站| 免费在线观看日韩欧美| 精品成人在线观看| 欧美制服丝袜| 裸体女人亚洲精品一区| 国外成人在线视频| 欧美中文在线视频| 久久精品视频导航| 国产综合第一页| 久久激情综合| 欧美va天堂| 亚洲欧洲日韩综合二区| 欧美超级免费视 在线| 欧美激情按摩| 日韩网站在线观看| 欧美日韩成人一区二区| 99re这里只有精品6| 亚洲天堂成人在线视频| 国产精品国产亚洲精品看不卡15 | 久久免费精品视频| 狠色狠色综合久久| 免费av成人在线| 亚洲激情影视| 亚洲欧美在线看| 国产欧美精品一区| 久久精品国产久精国产爱| 久久综合给合| 亚洲免费观看| 欧美亚一区二区| 欧美一区2区视频在线观看| 久久先锋影音av| 日韩午夜三级在线| 国产欧美高清| 欧美国产激情二区三区| 99精品国产热久久91蜜凸| 午夜精品视频| 在线观看中文字幕不卡| 欧美激情一区二区三区| 亚洲午夜影视影院在线观看| 久久伊人精品天天| 一本色道久久综合亚洲精品不卡| 国产精品大全| 免费成人av| 亚洲综合不卡| 亚洲二区三区四区| 欧美在线二区| 亚洲美洲欧洲综合国产一区| 国产精品视频久久久| 毛片精品免费在线观看| 亚洲午夜精品国产| 欧美成人高清视频| 欧美一区亚洲二区| 亚洲伦理自拍| 精品动漫3d一区二区三区免费版| 欧美国产精品人人做人人爱| 欧美一区二区三区四区在线观看| 亚洲激情在线视频| 久久久在线视频| 亚洲欧美中日韩| 亚洲看片免费| 依依成人综合视频| 国产精品欧美风情| 欧美风情在线观看| 久久久久久久久久码影片| 亚洲午夜一级| 一本色道88久久加勒比精品| 亚洲高清中文字幕| 久久夜色精品亚洲噜噜国产mv| 亚洲永久免费| 一本色道久久综合狠狠躁篇怎么玩| 伊人久久大香线蕉av超碰演员| 国产精品久久久久久福利一牛影视| 欧美不卡视频一区发布| 久久精品一区中文字幕| 午夜在线观看免费一区| 亚洲午夜精品久久| 一区二区电影免费观看| 91久久夜色精品国产九色| 欧美成人免费视频| 免费观看亚洲视频大全| 久久久久久久网站| 久久精品九九| 久久婷婷亚洲| 麻豆精品精华液| 欧美xx视频| 欧美国产日本韩| 欧美激情欧美狂野欧美精品| 欧美激情在线观看| 欧美国产极速在线| 亚洲国产精品久久| 亚洲精品1区2区| 亚洲精品一区中文| a4yy欧美一区二区三区| 99视频在线观看一区三区| 日韩一级精品| 亚洲一级在线| 欧美亚洲在线观看| 久久精品视频一| 免费在线成人av| 欧美日韩在线电影| 国产精品欧美日韩| 国产综合自拍| 亚洲电影免费在线观看| 亚洲精品免费观看| 一区二区三区视频观看| 亚洲欧美制服另类日韩| 久久成人综合视频| 美玉足脚交一区二区三区图片| 欧美黄色小视频| 一本色道久久99精品综合| 亚洲免费一在线| 久久色在线观看| 欧美日韩你懂的| 国产日韩欧美综合| 91久久久久久久久| 亚洲影视在线播放| 久久久久久久久岛国免费| 欧美激情精品久久久久| 在线亚洲精品| 久久五月激情| 国产精品久久久久一区二区三区共 | 亚洲精品资源美女情侣酒店| 亚洲男人的天堂在线aⅴ视频| 性色一区二区| 欧美金8天国| 国产在线日韩| 亚洲香蕉网站| 免费日韩av片| 亚洲欧美激情四射在线日 | 欧美日韩成人一区| 国产一区二区精品久久91| 亚洲品质自拍| 久久久精品五月天| 99国产精品久久久久老师| 久久精品青青大伊人av| 欧美日韩一区二区三区在线看| 国内精品视频666| 亚洲香蕉伊综合在人在线视看| 欧美bbbxxxxx| 性8sex亚洲区入口| 欧美日韩一区二| 亚洲国产精品一区二区尤物区| 欧美一激情一区二区三区| 亚洲国产一区二区三区在线播 | 91久久香蕉国产日韩欧美9色| 欧美中文在线字幕| 国产精品一区在线观看你懂的| 亚洲精品一区二区三区不|