资源简介
网速流量监控 悬浮窗口
代码片段和文件信息
#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“
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;
}
//得到接口号为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)查询性能数据
while((ret = RegQueryValueEx(
HKEY_PERFORMANCE_DATA “510“ NULL &type data &size)) != ERROR_SUCCESS)
{
if(ret == ERROR_MORE_DATA)
{
// 缓冲尺寸太小,增加内存分配
size += DEFAULT_BUFFER_SIZE;
delete [] data;
data = new unsigned char [size];
}
else
{
// 未定义的错误
return 1;
}
}
//性能数据块
PERF_DATA_BLOCK *dataBlockPtr = (PERF_DATA_BLOCK *)data;
//枚举链表中第一个对象
PERF_object_TYPE *objectPtr = Firstobject(dataBlockPtr);
//遍历链表
for(int a=0 ; a<(int)dataBlockPtr->NumobjectTypes ; a++)
{
char nameBuffer[255];
// 判断是否是网络对象索引号是510
if(objectPtr->objectNametitleIndex == 510)
{
// 偏移变量
DWORD processIdOffset = ULONG_MAX;
// 找到第一个计数器
PERF_COUN
相关资源
- 32流量计.rar
- GBT18216.1-2012交流1000V和直流1500V以下低
- 科来网络全流量安全分析系统TSA功能
- NetSpeedMonitor_win10_x64
- Zabbix分布式监控配置使用手册v3
- 2016海康威视摄像头监控web端+插件 亲
- 监控拓扑图
- usb调试软件(USBTrace)
- LPC1768 LwIP UDP Client 发送数据+测试网
- 基于libevent的视频服务器源代码
- linux文件完整性监控的实现
- 温度监控系统的设计论文资料
- windows脚本监控tomcat运行网站状态可自
- 视频监控分屏效果源码
- Bus_Hound_6.0.1带注册码+中文版使用说明
- 基于单片机的输液监控系统设计
- TCP网速加速器.zip
- 智能电表监控程序,包括单相电表和
- 基于物联网的温室大棚监控系统的设
- netflow网络流量分析手册
- 很牛B的文件夹注册表监控软件 支持
- S7A驱动完美破解
- 基于stm32f103和OV7725的监控拍照计数显
- 网站流量统计系统源码
- 平台架构的服务监控
- flex视频监控播放器
- windows下防火墙程序源码
- 基于ZigBee网络的公交电子站牌及监控
- 网络流量实时监控源代码
- 南方电网变电站视频及环境监控系统
评论
共有 条评论