⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rasspdm.cpp

📁 myie的源代码
💻 CPP
字号:
#include "stdafx.h"
#include "PerfMon.h"
#include "rasSpdM.h"


BOOL glo_fFromDynReg=TRUE, glo_fSuc = FALSE, glo_fInitialized = FALSE;
CPerfMon m_PerfMon;
int m_nRAS;

/*
在9x下通过dyn_data注册表得到速度
*/
DWORD GetTotalRecv(void)
{
	DWORD dwValue=(DWORD)-999;
	try{

	HKEY hKey;
	if(0==RegOpenKey(HKEY_DYN_DATA,"PerfStats\\StatData",&hKey))
	{
		DWORD dwType,dwLen=sizeof(DWORD);
		RegQueryValueEx(hKey,"Dial-Up Adapter\\TotalBytesRecvd",NULL,&dwType,(BYTE*)&dwValue,&dwLen);
		RegCloseKey(hKey);
	}

	}catch(...)
	{
	}
	return dwValue;
}
/*
DWORD GetTotalXmit(void)
{
	HKEY hKey;
	DWORD dwValue=(DWORD)-1;
	if(0==RegOpenKey(HKEY_DYN_DATA,"PerfStats\\StatData",&hKey))
	{
		DWORD dwType,dwLen=sizeof(DWORD);
		RegQueryValueEx(hKey,"Dial-Up Adapter\\TotalBytesXmit",NULL,&dwType,(BYTE*)&dwValue,&dwLen);
		RegCloseKey(hKey);
	}
	return dwValue;
}
DWORD GetPerSecondRecv(void)
{
	HKEY hKey;
	DWORD dwValue=(DWORD)-1;
	if(0==RegOpenKey(HKEY_DYN_DATA,"PerfStats\\StatData",&hKey))
	{
		DWORD dwType,dwLen=sizeof(DWORD);
		RegQueryValueEx(hKey,"Dial-Up Adapter\\BytesRecvd",NULL,&dwType,(BYTE*)&dwValue,&dwLen);
		RegCloseKey(hKey);
	}
	return dwValue;
}
DWORD GetPerSecondXmit(void)
{
	HKEY hKey;
	DWORD dwValue=(DWORD)-1;
	if(0==RegOpenKey(HKEY_DYN_DATA,"PerfStats\\StatData",&hKey))
	{
		DWORD dwType,dwLen=sizeof(DWORD);
		RegQueryValueEx(hKey,"Dial-Up Adapter\\BytesXmit",NULL,&dwType,(BYTE*)&dwValue,&dwLen);
		RegCloseKey(hKey);
	}
	return dwValue;
}*/

/*****************************************************************
在NT下通过per Data得到
 *****************************************************************/



/*****************************************************************
得到下RAS速度
 *****************************************************************/
inline void GetRASSpeedOn9X(/*DWORD* pTPS,DWORD* pRPS,DWORD* pTT,*/ DWORD* pRT)
{// under 9x
//	*pTPS=GetPerSecondXmit();
//	*pRPS=GetPerSecondRecv();
//	*pTT=GetTotalXmit();
	*pRT=GetTotalRecv();
}

inline void GetRASSpeedOnNT(/*DWORD* pTPS,DWORD* pRPS,DWORD* pTT,*/ DWORD* pRT)
{// under NT
////参数:每秒发送,每秒接收,总发送,总接受
	try{

	if(glo_fSuc)
	{
		if (!m_PerfMon.CollectQueryData())
		{
			*pRT = (DWORD)-999;
			//AfxMessageBox("Failed Query!");
			return;
		}
		*pRT = m_PerfMon.GetCounterValue(m_nRAS);
	}
	else
		*pRT = (DWORD)-999;

	}catch(...)
	{
	}
}

void GetRASSpeed(/*DWORD* pTPS,DWORD* pRPS,DWORD* pTT,*/ DWORD* pRT)
{////参数:每秒发送,每秒接收,总发送,总接受
	if(glo_fFromDynReg==FALSE)
	{
		GetRASSpeedOnNT(/*pTPS,pRPS, pTT,*/ pRT);
	}
	else
	{
		GetRASSpeedOn9X(/*pTPS,pRPS, pTT,*/ pRT);
	}
}

void InitSpeedMonitor(void)
{
	if(glo_fInitialized)
		return;

	DWORD dwVersion = GetVersion();
	// Get major and minor version numbers of Windows
	DWORD dwWindowsMajorVersion =  (DWORD)(LOBYTE(LOWORD(dwVersion)));
	DWORD dwWindowsMinorVersion =  (DWORD)(HIBYTE(LOWORD(dwVersion)));
	// Get build numbers for Windows NT or Win32s
	if (dwVersion>>31 ==0)                // Windows NT
	{
		glo_fFromDynReg=FALSE;
		//add conter here
		if (!m_PerfMon.Initialize())
		{
			glo_fFromDynReg = TRUE;
		}
		else
		{
			m_nRAS = m_PerfMon.AddCounter(CNTR_RAS_RECEIVBYTES);
			if(m_nRAS==-1)
				glo_fSuc = FALSE;
			else
				glo_fSuc = TRUE;
		}

	}
	else         // Windows 95 - 98
		glo_fFromDynReg=TRUE;

	glo_fInitialized = TRUE;
}

void ClearSpeedMonitor(void)
{
	if(!glo_fFromDynReg)
	{
		if(glo_fSuc)
			m_PerfMon.RemoveCounter(0);
		m_PerfMon.Uninitialize();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -