资源简介
网络流量实时监控源代码,用到的内容包括使用PHD和读取注册表中的系统性能数据!
代码片段和文件信息
#include “stdafx.h“
#include “MFNetTraffic.h“
#include “float.h“
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
#include “winperf.h“
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
MFNetTraffic::MFNetTraffic()
{
lasttraffic = 0.0;
CurrentInterface = -1;
CurrentTrafficType = AllTraffic;
GetInterfaces();
}
MFNetTraffic::~MFNetTraffic()
{
}
PERF_object_TYPE *Firstobject(PERF_DATA_BLOCK *dataBlock)
{
return (PERF_object_TYPE *) ((BYTE *)dataBlock + dataBlock->HeaderLength);
}
PERF_object_TYPE *Nextobject(PERF_object_TYPE *act)
{
return (PERF_object_TYPE *) ((BYTE *)act + act->TotalByteLength);
}
PERF_COUNTER_DEFINITION *FirstCounter(PERF_object_TYPE *perfobject)
{
return (PERF_COUNTER_DEFINITION *) ((BYTE *) perfobject + perfobject->HeaderLength);
}
PERF_COUNTER_DEFINITION *NextCounter(PERF_COUNTER_DEFINITION *perfCounter)
{
return (PERF_COUNTER_DEFINITION *) ((BYTE *) perfCounter + perfCounter->ByteLength);
}
PERF_COUNTER_BLOCK *GetCounterBlock(PERF_INSTANCE_DEFINITION *pInstance)
{
return (PERF_COUNTER_BLOCK *) ((BYTE *)pInstance + pInstance->ByteLength);
}
PERF_INSTANCE_DEFINITION *FirstInstance (PERF_object_TYPE *pobject)
{
return (PERF_INSTANCE_DEFINITION *) ((BYTE *) pobject + pobject->DefinitionLength);
}
PERF_INSTANCE_DEFINITION *NextInstance (PERF_INSTANCE_DEFINITION *pInstance)
{
PERF_COUNTER_BLOCK *pCtrBlk = GetCounterBlock(pInstance);
return (PERF_INSTANCE_DEFINITION *) ((BYTE *)pInstance + pInstance->ByteLength + pCtrBlk->ByteLength);
}
char *WideToMulti(wchar_t *source char *dest int size)
{
WideCharToMultiByte(CP_ACP 0 source -1 dest size 0 0);
return dest;
}
/*
Window NT/2000: When calling the RegQueryValueEx function with hKey set to the
HKEY_PERFORMANCE_DATA handle and a value string of a specified object the
returned data structure sometimes has unrequested objects. Don‘t be surprised;
this is normal behavior. When calling the RegQueryValueEx function you should
always expect to walk the returned data structure to look for the requested object.
*/
//得到接口号为interfaceNumber的接口流量
double MFNetTraffic::GetTraffic(int interfaceNumber)
{
try
{
#define DEFAULT_BUFFER_SIZE 40960L
POSITION pos;
CString InterfaceName;
pos = Interfaces.FindIndex(interfaceNumber);
if(pos==NULL)
return 0.0;
//得到当前的接口名字
InterfaceName = Interfaces.GetAt(pos);
//为性能数据缓冲
unsigned char *data = new unsigned char [DEFAULT_BUFFER_SIZE];
// 从RegQueryValueEx返回的值:本例中忽略改变量
DWORD type;
// 缓冲的尺寸
DWORD size = DEFAULT_BUFFER_SIZE;
// RegQueryValueEx返回的值
DWORD ret;
// 从网络对象(索引是510)查询性能数据
/*
HKEY_PERFORMANCE_DATA:
Windows NT/2000/XP: Registry entries subordinate to this key allow you to
access per
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 46567 2012-06-06 11:09 NetTraffic\Debug\MFNetTraffic.obj
文件 0 2012-06-06 11:09 NetTraffic\Debug\MFNetTraffic.sbr
文件 56743 2012-06-06 11:09 NetTraffic\Debug\mftrafficbutton.obj
文件 0 2012-06-06 11:09 NetTraffic\Debug\mftrafficbutton.sbr
文件 3204096 2012-06-06 11:09 NetTraffic\Debug\NetTrafficButton.bsc
文件 143588 2012-06-06 11:09 NetTraffic\Debug\NetTrafficButton.exe
文件 355144 2012-06-06 11:09 NetTraffic\Debug\NetTrafficButton.ilk
文件 16710 2012-06-06 11:09 NetTraffic\Debug\NetTrafficButton.obj
文件 6867124 2012-06-06 11:09 NetTraffic\Debug\NetTrafficButton.pch
文件 377856 2012-06-06 11:09 NetTraffic\Debug\NetTrafficButton.pdb
文件 2968 2012-06-06 11:09 NetTraffic\Debug\NetTrafficButton.res
文件 0 2012-06-06 11:09 NetTraffic\Debug\NetTrafficButton.sbr
文件 32199 2012-06-06 11:09 NetTraffic\Debug\NetTrafficButtonDlg.obj
文件 0 2012-06-06 11:09 NetTraffic\Debug\NetTrafficButtonDlg.sbr
文件 107152 2012-06-06 11:09 NetTraffic\Debug\StdAfx.obj
文件 1375424 2012-06-06 11:09 NetTraffic\Debug\StdAfx.sbr
文件 230400 2012-06-07 09:36 NetTraffic\Debug\vc60.idb
文件 372736 2012-06-06 11:09 NetTraffic\Debug\vc60.pdb
文件 615 2003-07-12 10:21 NetTraffic\Globals.h
文件 2188 2003-07-13 19:16 NetTraffic\MemDC.h
文件 9567 2008-07-01 20:59 NetTraffic\MFNetTraffic.cpp
文件 1334 2003-07-12 12:32 NetTraffic\MFNetTraffic.h
文件 14818 2003-07-12 20:01 NetTraffic\mftrafficbutton.cpp
文件 3017 2003-07-12 10:51 NetTraffic\mftrafficbutton.h
文件 22288 2012-06-06 11:09 NetTraffic\NetTrafficButton.aps
文件 1441 2012-06-07 09:39 NetTraffic\NetTrafficButton.clw
文件 943 2003-07-12 19:14 NetTraffic\NetTrafficButton.cpp
文件 4742 2003-07-12 11:02 NetTraffic\NetTrafficButton.dsp
文件 585 2001-10-31 19:53 NetTraffic\NetTrafficButton.dsw
文件 831 2003-07-03 14:44 NetTraffic\NetTrafficButton.h
............此处省略20个文件信息
- 上一篇:现代密码学 杨波编著
- 下一篇:比特币bitcoin源代码
相关资源
- 比特币bitcoin源代码
- 小甲鱼汇编语言课件+源代码
- 微信公众平台开发最佳实践 源代码
- Canny算子源代码
- 蓝牙4.0 协议栈 开源代码
- 基于nrf51822的TSM12触控例程
- 小人吐笑脸案例源代码
- C编译器源代码187076
- 《Spark高级数据分析》源代码
- DSP语音识别教程+源代码
- PCRat远控开源代码
- OpenCV图像处理教程 - 贾志刚 课程配套
- Qt 串口助手增强版带示波器曲线源代
- CANopen协议栈源代码详解
- FPGA数字电子系统设计与开发导航源代
- 网络监控系统原理与应用
- 北风网_家庭理财系统源代码
- 易买网源代码183685
-
查看基于.netfr
amework编写的exe和dll源 - tcpdump 源代码
- 基于web的图书管理系统(源代码)1
- 在线教学系统网站开发源代码+视屏讲
- 硬连线控制器的常规CPU设计[BUPT]计算
- 一些神经网络经典模型的源代码
- 深度学习框架-pytorch入门与实践源代码
- 数据库课程设计源代码
- 大学生静态个人网站设计(源代码+论
- 室内定位 WIFI Scan 源代码
- 一个英语学习的安卓app词典的源代码
- 资源管理器项目(包含所有源代码
评论
共有 条评论