資源簡介
網絡流量實時監控源代碼,用到的內容包括使用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源代碼
評論
共有 條評論