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

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

?? bhwl.txt

?? ben wenjian shi tongguo yong cbainxie chengxu shixian
?? TXT
字號:
獲得撥號網絡傳輸速度  


轉載自VCHelp

 
  

這段時間很多朋友都寫郵件問我如何得到撥號上網時的網絡速度,下面的代碼是在我的軟件Dial Monitor中節選出來的相關程序片。 

H文件:rasSpdM.h 

#ifndef __RASSPDMON_H_
#define __RASSPDMON_H_

void InitSpeedMonitor(void);
void ClearSpeedMonitor(void);
void GetRASSpeed(DWORD* pTPS,DWORD* pRPS,DWORD* pTT,DWORD* pRT);
////參數:每秒發送,每秒接收,總發送,總接受


#endif


CPP文件rasSpdM.cpp

#include "stdafx.h"
#include "rasSpdM.h"


#include 

#define TOTALBYTES 4096
#define BYTEINCREMENT 1024

LPSTR lpNameStrings=NULL;
LPSTR *lpNamesArray=NULL;
BOOL glo_fFromDynReg=TRUE;

/*
在9x下通過dyn_data注冊表得到速度
*/
DWORD GetTotalRecv(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\\TotalBytesRecvd",NULL,&dwType,(BYTE*)&dwValue, &dwLen);
RegCloseKey(hKey);
}
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得到
*****************************************************/

PPERF_OBJECT_TYPE FirstObject( PPERF_DATA_BLOCK PerfData )
{
return( (PPERF_OBJECT_TYPE)((PBYTE)PerfData + 
PerfData->HeaderLength) );
}

PPERF_OBJECT_TYPE NextObject( PPERF_OBJECT_TYPE PerfObj )
{
return( (PPERF_OBJECT_TYPE)((PBYTE)PerfObj + 
PerfObj->TotalByteLength) );
}

PPERF_INSTANCE_DEFINITION FirstInstance( PPERF_OBJECT_TYPE PerfObj )
{
return( (PPERF_INSTANCE_DEFINITION)((PBYTE)PerfObj + 
PerfObj->DefinitionLength) );
}

PPERF_INSTANCE_DEFINITION NextInstance( 
PPERF_INSTANCE_DEFINITION PerfInst )
{
PPERF_COUNTER_BLOCK PerfCntrBlk;

PerfCntrBlk = (PPERF_COUNTER_BLOCK)((PBYTE)PerfInst + 
PerfInst->ByteLength);

return( (PPERF_INSTANCE_DEFINITION)((PBYTE)PerfCntrBlk + 
PerfCntrBlk->ByteLength) );
}

PPERF_COUNTER_DEFINITION FirstCounter( PPERF_OBJECT_TYPE PerfObj )
{
return( (PPERF_COUNTER_DEFINITION) ((PBYTE)PerfObj + 
PerfObj->HeaderLength) );
}

PPERF_COUNTER_DEFINITION NextCounter( 
PPERF_COUNTER_DEFINITION PerfCntr )
{
return( (PPERF_COUNTER_DEFINITION)((PBYTE)PerfCntr + 
PerfCntr->ByteLength) );
}

/*****************************************************
* *
* Load the counter and object names from the registry to the *
* global variable lpNamesArray. *
* *
*******************************************************/

void GetNameStrings( )
{
HKEY hKeyPerflib; // handle to registry key
HKEY hKeyPerflib009; // handle to registry key
DWORD dwMaxValueLen; // maximum size of key values
DWORD dwBuffer; // bytes to allocate for buffers
DWORD dwBufferSize; // size of dwBuffer
LPSTR lpCurrentString; // pointer for enumerating data strings
DWORD dwCounter; // current counter index

// Get the number of Counter items.

RegOpenKeyEx( HKEY_LOCAL_MACHINE,
"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Perflib",
0,
KEY_READ,
&hKeyPerflib);

dwBufferSize = sizeof(dwBuffer);

RegQueryValueEx( hKeyPerflib,
"Last Counter",
NULL,
NULL,
(LPBYTE) &dwBuffer,
&dwBufferSize );

RegCloseKey( hKeyPerflib );

// Allocate memory for the names array.

lpNamesArray = (char**)malloc( (dwBuffer+1) * sizeof(LPSTR) );
// Open key containing counter and object names.

RegOpenKeyEx( HKEY_LOCAL_MACHINE,
"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Perflib\\009",
0,
KEY_READ,
&hKeyPerflib009);

// Get the size of the largest value in the key (Counter or Help).

RegQueryInfoKey( hKeyPerflib009,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
&dwMaxValueLen,
NULL,
NULL);

// Allocate memory for the counter and object names.

dwBuffer = dwMaxValueLen + 1;

lpNameStrings = (char*)malloc( dwBuffer * sizeof(CHAR) );

// Read Counter value.

RegQueryValueEx( hKeyPerflib009,
"Counter",
NULL,
NULL,
(BYTE*)lpNameStrings, &dwBuffer );

// Load names into an array, by index.

int iC=1;
for( lpCurrentString = lpNameStrings; *lpCurrentString;
lpCurrentString += (lstrlen(lpCurrentString)+1) )
{
dwCounter = atol( lpCurrentString );
lpCurrentString += (lstrlen(lpCurrentString)+1);

//printf("%d length=%d data=%s\n",iC++,dwCounter,lpCurrentString);
lpNamesArray[dwCounter] = (LPSTR) lpCurrentString;
}
}

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

void GetRASSpeedOnNT(DWORD* pTPS,DWORD* pRPS,DWORD* pTT,DWORD* pRT)
{// under NT
////參數:每秒發送,每秒接收,總發送,總接受
PPERF_DATA_BLOCK PerfData = NULL;
PPERF_OBJECT_TYPE PerfObj;
PPERF_INSTANCE_DEFINITION PerfInst;
PPERF_COUNTER_DEFINITION PerfCntr, CurCntr;
PPERF_COUNTER_BLOCK PtrToCntr;
DWORD BufferSize = TOTALBYTES;
DWORD i, j, k;

// Get the name strings through the registry.

//return;
// Allocate the buffer for the performance data.

PerfData = (PPERF_DATA_BLOCK) malloc( BufferSize );

while( RegQueryValueEx( HKEY_PERFORMANCE_DATA,
"906",//"Global",
NULL,
NULL,
(LPBYTE) PerfData,
&BufferSize ) == ERROR_MORE_DATA )
{
// Get a buffer that is big enough.

BufferSize += BYTEINCREMENT;
PerfData = (PPERF_DATA_BLOCK) realloc( PerfData, BufferSize );
}

// Get the first object type.

PerfObj = FirstObject( PerfData );

// Process all objects.

//printf("object total=%d\n",PerfData->NumObjectTypes);
//getchar();
for( i=0; i < PerfData->NumObjectTypes; i++ )
{
// Display the object by index and name.

// Get the first counter.

PerfCntr = FirstCounter( PerfObj );

if( PerfObj->NumInstances > 0 )
{
//exit(0);
}
else
{
// Get the counter block.
PtrToCntr = (PPERF_COUNTER_BLOCK) ((PBYTE)PerfObj +
PerfObj->DefinitionLength );

// Retrieve all counters.

for( j=0; j < PerfObj->NumCounters; j++ )
{
// Display the counter by index and name.


if(strcmp("Bytes Transmitted/Sec",lpNamesArray[PerfCntr->CounterNameTitleIndex])==0)
{
*pTPS=*((DWORD*)((BYTE*)PtrToCntr+PerfCntr->CounterOffset));
}
if(strcmp("Bytes Received/Sec",lpNamesArray[PerfCntr->CounterNameTitleIndex])==0)
{
*pRPS=*((DWORD*)((BYTE*)PtrToCntr+PerfCntr->CounterOffset));
}
if(strcmp("Bytes Transmitted",lpNamesArray[PerfCntr->CounterNameTitleIndex])==0)
{
*pTT=*((DWORD*)((BYTE*)PtrToCntr+PerfCntr->CounterOffset));
}
if(strcmp("Bytes Received",lpNamesArray[PerfCntr->CounterNameTitleIndex])==0)
{
*pRT=*((DWORD*)((BYTE*)PtrToCntr+PerfCntr->CounterOffset));
}
// Get the next counter.
PerfCntr = NextCounter( PerfCntr );
}
}

// Get the next object type.
PerfObj = NextObject( PerfObj );
}
}

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)
{
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;
GetNameStrings( );
}
else // Windows 95 - 98
glo_fFromDynReg=TRUE;
}
void ClearSpeedMonitor(void)
{
if(lpNameStrings)
free(lpNameStrings);
if(lpNamesArray)
free(lpNamesArray);
}


使用方法:

#include "rasSpdM.h"
BOOL CYourApp::InitInstance()
{
//初始化RAS速度訪問
InitSpeedMonitor();

...
}


#include "rasSpdM.h"
void CYourWnd::OnTimer(UINT nIDEvent) 
{
DWORD dwR,dwS,dwPSR,dwPSS;//總接收,總發送,每秒接收,每秒發送
GetRASSpeed(&dwPSS,&dwPSR,&dwS,&dwR);//pTPS,DWORD* pRPS,DWORD* pTT,DWORD* pRT)
//參數:每秒發送,每秒接收,總發送,總接收
...
}

但我在使用過程中發現每秒發送,每秒接收這兩個結果并不十分正確,所以我是采用總數相減的方式來計算每秒速度的。
 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91福利在线播放| k8久久久一区二区三区 | 亚洲一区二区五区| 首页国产欧美日韩丝袜| 成人黄色大片在线观看| 国产91高潮流白浆在线麻豆| 久久精品国产99国产精品| 亚洲国产精品高清| 日本亚洲欧美天堂免费| 色伊人久久综合中文字幕| 26uuu欧美| 蜜臀av性久久久久蜜臀aⅴ流畅| 不卡一区二区三区四区| 7777精品伊人久久久大香线蕉经典版下载 | 日韩avvvv在线播放| 99re热视频精品| 国产亚洲欧洲997久久综合 | 亚洲一区二区三区自拍| 成人国产电影网| 久久久久国产成人精品亚洲午夜| 免费的国产精品| 欧美日韩亚洲国产综合| 亚洲一区二区三区四区五区中文| 99久久精品国产精品久久| 国产亚洲女人久久久久毛片| 美女视频黄 久久| 欧美一区二区三区四区在线观看| 亚洲国产精品一区二区久久恐怖片 | 国产精品理论在线观看| 韩国视频一区二区| 久久无码av三级| 国产一区二区中文字幕| 久久久久国产精品人| 国产精品888| 国产精品久久久久影院亚瑟 | 国产真实乱对白精彩久久| 日韩欧美你懂的| 老汉av免费一区二区三区| 日韩亚洲欧美中文三级| 久久 天天综合| 久久久99久久| 99视频一区二区| 一区二区三区**美女毛片| 欧美日韩综合一区| 蜜臀av性久久久久蜜臀aⅴ| 欧美一卡2卡3卡4卡| 精品制服美女久久| 国产精品久久久久影院| 91看片淫黄大片一级| 亚洲香肠在线观看| 欧美一级二级三级蜜桃| 精品一区二区三区蜜桃| 欧美国产日产图区| 欧美中文一区二区三区| 蜜桃av一区二区在线观看| 精品久久人人做人人爽| 波多野结衣欧美| 亚洲午夜精品网| 久久久精品免费观看| 国产成人精品午夜视频免费| 欧美日韩中文字幕精品| 91精选在线观看| 国产精品丝袜黑色高跟| 免费在线观看一区二区三区| 春色校园综合激情亚洲| 欧美日韩一区高清| 亚洲国产精品二十页| 日本美女一区二区三区视频| 高清视频一区二区| 日韩欧美精品在线视频| 亚洲综合丁香婷婷六月香| 美女一区二区三区在线观看| 91麻豆精品一区二区三区| 精品乱码亚洲一区二区不卡| 亚洲www啪成人一区二区麻豆| 国产在线精品一区二区| 精品99一区二区| 成人精品视频一区二区三区尤物| 国产欧美日韩精品一区| 久久久久成人黄色影片| 亚洲美女一区二区三区| 国产成人在线免费观看| 国产精品日韩成人| 日本一区二区三区高清不卡| 欧美大肚乱孕交hd孕妇| 国产日本欧美一区二区| 欧美精品国产精品| 波多野洁衣一区| 精品无码三级在线观看视频| 香蕉加勒比综合久久| 国产精品乱人伦| 精品国产3级a| 欧美浪妇xxxx高跟鞋交| 99久久99久久免费精品蜜臀| 久久精品国产秦先生| 亚洲超丰满肉感bbw| 亚洲激情综合网| 国产欧美精品国产国产专区 | 无吗不卡中文字幕| 国产精品伦一区| 久久色在线观看| 欧美一区二区网站| 欧美三级欧美一级| 欧美丝袜第三区| 日本韩国欧美在线| 色悠悠亚洲一区二区| 丁香亚洲综合激情啪啪综合| 精品在线你懂的| 国内精品久久久久影院一蜜桃| 午夜视频久久久久久| 性做久久久久久| 亚洲伊人色欲综合网| 亚洲男女毛片无遮挡| 国产精品女人毛片| 国产欧美日韩亚州综合| 久久精品欧美一区二区三区麻豆| 精品欧美乱码久久久久久1区2区| 制服视频三区第一页精品| 91福利区一区二区三区| 在线中文字幕一区二区| 在线观看免费一区| 欧美日韩精品一区二区天天拍小说 | 日韩欧美一级二级三级久久久| 欧美日韩中文字幕一区| 欧美日韩成人高清| 日韩午夜精品视频| 久久婷婷久久一区二区三区| 国产欧美一区视频| 中文字幕一区三区| 一区二区三区中文在线| 亚洲bdsm女犯bdsm网站| 日韩国产欧美在线观看| 看电影不卡的网站| 成人免费观看男女羞羞视频| 91视频一区二区| 欧美精品一二三四| 精品国产乱码久久久久久蜜臀| 久久婷婷成人综合色| 亚洲人成网站在线| 日韩成人免费在线| 国产一本一道久久香蕉| 成人av在线看| 欧美日韩国产片| 国产欧美日韩亚州综合| 亚洲自拍偷拍图区| 国产一区二区三区黄视频| 成人动漫一区二区| 欧美精品123区| 国产日韩精品视频一区| 亚洲黄色免费网站| 激情欧美一区二区三区在线观看| 成人晚上爱看视频| 欧美精品丝袜久久久中文字幕| 国产真实乱对白精彩久久| 91麻豆免费在线观看| 91精品1区2区| 欧美成va人片在线观看| 亚洲理论在线观看| 国产自产高清不卡| 7777精品伊人久久久大香线蕉的| 91精品国产综合久久蜜臀| 亚洲欧洲三级电影| 久久国内精品自在自线400部| 色综合色综合色综合色综合色综合 | 在线精品观看国产| 精品三级在线看| 亚洲成人黄色影院| 不卡视频一二三| 亚洲麻豆国产自偷在线| 丁香婷婷综合网| 久久人人爽爽爽人久久久| 亚洲成人精品一区| 国产亚洲成年网址在线观看| 九九精品一区二区| 国产不卡在线一区| 2017欧美狠狠色| 激情亚洲综合在线| 日韩一级黄色大片| 欧美在线免费播放| 91精品国产欧美一区二区| 欧美不卡视频一区| 日韩一区二区免费高清| 成人免费一区二区三区视频| 精品在线观看免费| 538prom精品视频线放| 亚洲乱码中文字幕| 97久久精品人人做人人爽| 精品美女在线观看| 日本色综合中文字幕| 在线成人高清不卡| 亚洲成va人在线观看| 日本精品一区二区三区高清 | 亚洲精品日韩一| 成人av动漫网站| 国产女人18毛片水真多成人如厕| 久久精品国产999大香线蕉| 欧美成人精品福利| 奇米精品一区二区三区在线观看 | 日韩精品一级中文字幕精品视频免费观看| 菠萝蜜视频在线观看一区|