亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cpuusage.cpp

?? windows 下測試cpu的程序
?? CPP
字號:
/////////////////////////////////////////////////////////////////////////////
// 類名:CCpuUsage
// 功能:CPU利用率接口聲明部分(服務器端)
// 說明:提供三個接口涵數:
//       IsShellSystemType()用來檢測系統版本;
//		 CpuUsage2000()來完成NT/2000下CPU利用率;
//		 CpuUsage9x()來完成9x下CPU利用率;
// 作者:徐景周(jingzhou_xu@163.net)
// 組織:未來工作室(Future Studio)
// 日期:2003.1.1
/////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "CPUuse.h"
#include "CpuUsage.h"
/////////////////////////////////////////////////////////////////////////////
// CCpuUsage

STDMETHODIMP CCpuUsage::InterfaceSupportsErrorInfo(REFIID riid)
{
	static const IID* arr[] = 
	{
		&IID_ICpuUsage
	};
	for (int i=0; i < sizeof(arr) / sizeof(arr[0]); i++)
	{
		if (InlineIsEqualGUID(*arr[i],riid))
			return S_OK;
	}
	return S_FALSE;
}

// ------------------------------------------------------------------------------------------------
// 判斷操作系統涵數及變量,jingzhou xu
typedef enum tagWin32SysType{
	Windows32s,
	WindowsNT3,
	Windows95,
	Windows98,
	WindowsME,
	WindowsNT4,
	Windows2000,
	WindowsXP
}Win32SysType;

STDMETHODIMP CCpuUsage::IsShellSystemType(BSTR *pbstrSysType)
{
	Win32SysType  ShellType;
	DWORD winVer;
	OSVERSIONINFO *osvi;
	
	winVer=GetVersion();
	if(winVer<0x80000000){	/*NT */
		ShellType=WindowsNT3;
		osvi= (OSVERSIONINFO *)malloc(sizeof(OSVERSIONINFO));
		if (osvi!=NULL){
			memset(osvi,0,sizeof(OSVERSIONINFO));
			osvi->dwOSVersionInfoSize=sizeof(OSVERSIONINFO);
			GetVersionEx(osvi);
			if(osvi->dwMajorVersion==4L)ShellType=WindowsNT4;
			else if(osvi->dwMajorVersion==5L&&osvi->dwMinorVersion==0L)ShellType=Windows2000;
			else if(osvi->dwMajorVersion==5L&&osvi->dwMinorVersion==1L)ShellType=WindowsXP;
			free(osvi);
		}
	}
	else if  (LOBYTE(LOWORD(winVer))<4)
		ShellType=Windows32s;
	else{
		ShellType=Windows95;
		osvi= (OSVERSIONINFO *)malloc(sizeof(OSVERSIONINFO));
		if (osvi!=NULL){
			memset(osvi,0,sizeof(OSVERSIONINFO));
			osvi->dwOSVersionInfoSize=sizeof(OSVERSIONINFO);
			GetVersionEx(osvi);
			if(osvi->dwMajorVersion==4L&&osvi->dwMinorVersion==10L)ShellType=Windows98;
			else if(osvi->dwMajorVersion==4L&&osvi->dwMinorVersion==90L)ShellType=WindowsME;
			free(osvi);
		}
	}

	if(pbstrSysType)
	{
		USES_CONVERSION;
		switch(ShellType)
		{
		case Windows32s:
			*pbstrSysType = SysAllocString(A2W("Windows32s"));
			break;
		case WindowsNT3:
			*pbstrSysType = SysAllocString(A2W("WindowsNT3"));
			break;
		case Windows95:
			*pbstrSysType = SysAllocString(A2W("Windows95"));
			break;
		case Windows98:
			*pbstrSysType = SysAllocString(A2W("Windows98"));
			break;
		case WindowsME:
			*pbstrSysType = SysAllocString(A2W("WindowsME"));
			break;
		case WindowsNT4:
			*pbstrSysType = SysAllocString(A2W("WindowsNT4"));
			break;
		case Windows2000:
			*pbstrSysType = SysAllocString(A2W("Windows2000"));
			break;
		case WindowsXP:
			*pbstrSysType = SysAllocString(A2W("WindowsXP"));
			break;
		default:
			*pbstrSysType = SysAllocString(A2W("Unknown"));
		}
	}

	return S_OK;
}
// ------------------------------------------------------------------------------------------------

// ------------------------------------------------------------------------------------------------
// Windows9x下CPU使用率
STDMETHODIMP CCpuUsage::CpuUsage9x(long *plResult)
{
	HKEY hkey;
    DWORD dwDataSize;
    DWORD dwType;
    DWORD dwCpuUsage;

    // 啟動計數
    if ( RegOpenKeyEx( HKEY_DYN_DATA,
                       "PerfStats\\StartStat",
                       0,KEY_ALL_ACCESS,
                       &hkey ) != ERROR_SUCCESS)
       return S_FALSE;

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

    RegCloseKey(hkey);
    
    // 得到當前計數值
    if ( RegOpenKeyEx( HKEY_DYN_DATA,
                       "PerfStats\\StatData",
                       0,KEY_READ,
                       &hkey ) != ERROR_SUCCESS)
       return S_FALSE;

    dwDataSize=sizeof(DWORD);
    RegQueryValueEx( hkey,
                         "KERNEL\\CPUUsage",
                         NULL,&dwType,
                         (LPBYTE)&dwCpuUsage,
                         &dwDataSize );
    *plResult = dwCpuUsage;
    
    RegCloseKey(hkey);
/*    
    // 停止計數
    if ( RegOpenKeyEx( HKEY_DYN_DATA,
                       "PerfStats\\StopStat",
                       0,KEY_ALL_ACCESS,
                       &hkey ) != ERROR_SUCCESS)
       return S_FALSE;

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

    RegCloseKey(hkey);
*/
	return S_OK;
}
// ------------------------------------------------------------------------------------------------

// ------------------------------------------------------------------------------------------------
// WindowsNT/2000下CPU使用率
#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;

STDMETHODIMP CCpuUsage::CpuUsage2000(long *plResult)
{
	SYSTEM_PERFORMANCE_INFORMATION SysPerfInfo;
    SYSTEM_TIME_INFORMATION        SysTimeInfo;
    SYSTEM_BASIC_INFORMATION       SysBaseInfo;
    double                         dbIdleTime;
    double                         dbSystemTime;
    LONG                           status;
	static LARGE_INTEGER           liOldIdleTime = {0,0};
    static LARGE_INTEGER           liOldSystemTime = {0,0};

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

    if (!NtQuerySystemInformation)
        return S_FALSE;

    // 得到系統中處理器數
    status = NtQuerySystemInformation(SystemBasicInformation,&SysBaseInfo,sizeof(SysBaseInfo),NULL);
    if (status != NO_ERROR)
        return S_FALSE;
    
    // 得到新的系統時間
    status = NtQuerySystemInformation(SystemTimeInformation,&SysTimeInfo,sizeof(SysTimeInfo),0);
    if (status!=NO_ERROR)
        return S_FALSE;

    // 得到新的CPU空閑時間
    status = NtQuerySystemInformation(SystemPerformanceInformation,&SysPerfInfo,sizeof(SysPerfInfo),NULL);
    if (status != NO_ERROR)
        return S_FALSE;

    // 如果第一次調用跳過
    if (liOldIdleTime.QuadPart != 0)
    {
        // 當前值 = 最新值 - 舊值
        dbIdleTime = Li2Double(SysPerfInfo.liIdleTime) - Li2Double(liOldIdleTime);
        dbSystemTime = Li2Double(SysTimeInfo.liKeSystemTime) - Li2Double(liOldSystemTime);

        // 當前CPU空閑時間 = 空閑時間 / 系統時間
        dbIdleTime = dbIdleTime / dbSystemTime;

        // 當前CPU利用率% = 100 - (當前CPU空閑時間 * 100) / 處理器數
        dbIdleTime = 100.0 - dbIdleTime * 100.0 / (double)SysBaseInfo.bKeNumberProcessors + 0.5;

        *plResult = (UINT)dbIdleTime;
    }

    // 存儲新的CPU空閑及系統時間
    liOldIdleTime = SysPerfInfo.liIdleTime;
    liOldSystemTime = SysTimeInfo.liKeSystemTime;

	return S_OK;
}
// ------------------------------------------------------------------------------------------------

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
性久久久久久久久久久久| 99国产欧美久久久精品| 不卡一区二区在线| 欧美视频完全免费看| 久久精品一区二区三区四区| 一区二区三国产精华液| 国产成人av资源| 777久久久精品| 亚洲视频狠狠干| 精品午夜久久福利影院| 在线视频观看一区| 中文字幕欧美日韩一区| 久久精品国产网站| 欧美日韩国产一区| 一区二区三区在线免费视频| 国产精品综合av一区二区国产馆| 欧美精品乱码久久久久久按摩| 国产精品欧美综合在线| 久久国产婷婷国产香蕉| 欧美肥妇bbw| 亚洲综合成人在线视频| 99精品欧美一区| 国产精品盗摄一区二区三区| 精品亚洲国内自在自线福利| 日韩一区二区中文字幕| 五月婷婷激情综合| 欧美伊人久久久久久午夜久久久久| 日本一区二区视频在线| 国产精品一色哟哟哟| 精品日韩一区二区三区免费视频| 婷婷中文字幕综合| 欧美午夜精品电影| 婷婷一区二区三区| 欧美老肥妇做.爰bbww视频| 亚洲一区二区三区视频在线播放| 91蜜桃婷婷狠狠久久综合9色| 国产精品久久久久久亚洲毛片| 国产精品综合在线视频| 国产欧美一区二区精品婷婷| 日本成人中文字幕在线视频| 91精品国产高清一区二区三区| 亚洲成人在线观看视频| 欧美群妇大交群中文字幕| 日韩有码一区二区三区| 欧美夫妻性生活| 麻豆成人久久精品二区三区红| 日韩欧美亚洲另类制服综合在线| 日本不卡高清视频| 久久久亚洲午夜电影| 成人av资源在线观看| 亚洲欧美日韩精品久久久久| 色网综合在线观看| 性欧美大战久久久久久久久| 日韩免费视频一区| 国产精品羞羞答答xxdd| 国产精品久久精品日日| 色噜噜偷拍精品综合在线| 午夜日韩在线电影| 久久综合色播五月| voyeur盗摄精品| 亚洲一区影音先锋| 日韩欧美色电影| 成人免费视频视频在线观看免费| 亚洲少妇30p| 日韩免费一区二区| www.性欧美| 三级亚洲高清视频| 国产欧美精品一区二区色综合| 97久久人人超碰| 男女男精品视频| 国产精品久久久99| 日韩三级视频在线看| 成人av在线影院| 五月天丁香久久| 欧美激情综合在线| 欧美日韩第一区日日骚| 国产成人免费9x9x人网站视频| 一区二区三区欧美久久| wwww国产精品欧美| 欧美综合色免费| 国产一区二区日韩精品| 亚洲国产成人av好男人在线观看| 久久综合色播五月| 精品视频全国免费看| www.亚洲在线| 国产精品一级二级三级| 亚洲一区二区欧美日韩| 中文字幕二三区不卡| 日韩欧美中文一区二区| 色妞www精品视频| 国产v日产∨综合v精品视频| 无码av免费一区二区三区试看| 国产精品色在线| 久久精品亚洲乱码伦伦中文| 91精品国产免费久久综合| 欧日韩精品视频| 91亚洲国产成人精品一区二区三| 久久狠狠亚洲综合| 青娱乐精品在线视频| 亚洲美女屁股眼交| 中文字幕一区二区不卡| 久久午夜色播影院免费高清| 91精品久久久久久蜜臀| 欧美日韩亚洲综合| 91香蕉视频mp4| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 一区二区三区四区蜜桃| 国产天堂亚洲国产碰碰| 日韩欧美成人激情| 7878成人国产在线观看| 欧美日韩色一区| 精品污污网站免费看| 91久久免费观看| 日本韩国欧美在线| 色综合天天狠狠| 色婷婷综合久久久久中文| 99久久国产免费看| 91丨九色丨黑人外教| 99精品欧美一区二区蜜桃免费| 成人高清伦理免费影院在线观看| 国产成人一级电影| 懂色av一区二区夜夜嗨| 国产成人亚洲综合a∨婷婷图片| 精品中文字幕一区二区| 国产麻豆精品95视频| 国产精品66部| 成人免费视频caoporn| 99久久综合精品| 欧美性xxxxxxxx| 欧美性色黄大片| 91精品国产综合久久久久久久| 91精品国产综合久久久久久| 亚洲精品免费看| 亚洲电影视频在线| 蜜臀av性久久久久蜜臀aⅴ四虎| 理论片日本一区| 国产精品66部| 91亚洲大成网污www| 欧美日韩在线综合| 日韩欧美第一区| 亚洲国产精品av| 一区二区三区美女视频| 日本午夜精品视频在线观看| 精品综合久久久久久8888| 成a人片亚洲日本久久| 欧美三级电影一区| 欧美电视剧免费观看| 国产精品美女久久久久久久网站| 一区二区在线观看视频在线观看| 天天影视涩香欲综合网| 国产美女主播视频一区| 色欧美日韩亚洲| 欧美成人精品1314www| 国产精品美女久久久久aⅴ| 亚洲国产视频一区| 国产精品1区二区.| 欧美绝品在线观看成人午夜影视| 久久九九久久九九| 香蕉久久一区二区不卡无毒影院 | 欧美激情综合五月色丁香| 亚洲人成影院在线观看| 免费成人在线网站| 97久久久精品综合88久久| 日韩欧美自拍偷拍| 最新国产成人在线观看| 久久99精品国产麻豆婷婷| 91亚洲精华国产精华精华液| 日韩欧美久久久| 亚洲宅男天堂在线观看无病毒| 黄色日韩三级电影| 色综合一区二区三区| 精品国产污污免费网站入口| 伊人一区二区三区| 成人网在线播放| 欧美电影免费观看高清完整版在线 | 在线观看亚洲一区| 久久久亚洲精华液精华液精华液| 亚洲资源在线观看| 不卡av在线网| 久久综合色播五月| 毛片基地黄久久久久久天堂| 色综合天天综合色综合av| 久久你懂得1024| 精品一区二区久久久| 欧美一区二区三区喷汁尤物| 亚洲国产精品人人做人人爽| www.亚洲精品| 国产乱子伦视频一区二区三区 | 日韩中文字幕亚洲一区二区va在线| 国产成人精品亚洲日本在线桃色| 日韩精品一区二区三区中文不卡 | 欧美日韩精品一区二区三区| 最新久久zyz资源站| 国产jizzjizz一区二区| 久久久一区二区三区捆绑**| 国内精品自线一区二区三区视频| 日韩无一区二区| 男男gaygay亚洲| 日韩欧美国产麻豆| 看国产成人h片视频|