-
大小: 36.53MB文件類型: .zip金幣: 1下載: 0 次發(fā)布日期: 2023-06-14
- 語(yǔ)言: 其他
- 標(biāo)簽: C++??網(wǎng)速??GetIfTable??物理網(wǎng)卡??SetupDixxx??
資源簡(jiǎn)介
自己實(shí)現(xiàn)的區(qū)分物理網(wǎng)卡并獲取其網(wǎng)速的程序
沒有實(shí)現(xiàn)hook其他進(jìn)程 獲得網(wǎng)速的功能
代碼片段和文件信息
bool?IsLocalAdapter?(?const?char?*pAdapterName?)?const
{
????BOOL?ret_value?=?FALSE;
#define?NET_CARD_KEY?“System/CurrentControlSet/Control/Network/{4D36E972-E325-11CE-BFC1-08002BE10318}“
????char?szDataBuf[MAX_PATH+1];
????DWORD?dwDataLen?=?MAX_PATH;
????DWORD?dwType?=?REG_SZ;
????HKEY?hNetKey?=?NULL;
????HKEY?hLocalNet?=?NULL;
????if(ERROR_SUCCESS?!=?RegOpenKeyEx(HKEY_LOCAL_MACHINE?NET_CARD_KEY?0?KEY_READ?&hNetKey))
????????return?FALSE;
????sprintf(szDataBuf?“%s/Connection“?pAdapterName);
????if(ERROR_SUCCESS?!=?RegOpenKeyEx(hNetKey?szDataBuf?0?KEY_READ?&hLocalNet))
????...{
????????RegCloseKey(hNetKey);
????????return?FALSE;
????}
????if?(ERROR_SUCCESS?!=?RegQueryValueEx(hLocalNet?“MediaSubType“?0?&dwType?(BYTE?*)szDataBuf?&dwDataLen))
????...{
????????goto?ret;
????}
????if?(*((DWORD?*)szDataBuf)!=0x01)
????????goto?ret;
????dwDataLen?=?MAX_PATH;
????if?(ERROR_SUCCESS?!=?RegQueryValueEx(hLocalNet?“;PnpInstanceID“?0?&dwType?(BYTE?*)szDataBuf?&dwDataLen))
????...{
????????goto?ret;
????}
????if?(strncmp(szDataBuf?“;PCI“?strlen(“;PCI“)))
????????goto?ret;
????ret_value?=?TRUE;
ret:
????RegCloseKey(hLocalNet);
????RegCloseKey(hNetKey);
????return?ret_value!=0;
}
SetupDiGetClassDevs?//?獲取設(shè)備信息集
SetupDiEnumDeviceInfo?//?從設(shè)備信息集中枚舉每個(gè)設(shè)備的具體信息
SetupDiGetDeviceRegistryProperty?//?從注冊(cè)表中讀取PnP設(shè)備的屬性
SetupDiSetClassInstallParams?//?設(shè)置(包括取消)設(shè)備類的安裝參數(shù)
SetupDiCallClassInstaller?//?安裝指定設(shè)備
/*我要介紹的方法是通過使用AdapterName來判斷的。這個(gè)就要涉及到注冊(cè)表和SetupDi函數(shù)了,或許有點(diǎn)復(fù)雜。
AdapterName是一個(gè)guid數(shù)據(jù),這個(gè)數(shù)據(jù)可以讓我們查詢這個(gè)所在網(wǎng)卡信息。
HLM\\System\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}
\\{AdapterName}\\connection?下面去看看,在這個(gè)下面一般有MediaSubType,這個(gè)可以用來表示是否
為無線網(wǎng)卡,還有一個(gè)Name,這個(gè)是用于在網(wǎng)絡(luò)連接中顯示的名稱,一般真實(shí)的pci板載網(wǎng)卡叫做本地連接
,當(dāng)然也可以用這個(gè)方法來判斷是否為物理網(wǎng)卡了。還有一個(gè)就是PnpInstanceId,這個(gè)指是有系統(tǒng)在
枚舉pci的時(shí)候設(shè)置的,這個(gè)值其實(shí)就是device?instance?id,你可以在設(shè)備管理其中看到這個(gè)。
接下來就是我想說的用SetupDi來判斷是否為物理網(wǎng)卡的方法了。其實(shí)這個(gè)挺簡(jiǎn)單的,只要我們知道物理網(wǎng)卡,
肯定是掛在某個(gè)bus上面的,因此對(duì)于虛擬網(wǎng)卡,肯定是沒有bus號(hào)的。主要的代碼在下面。我想應(yīng)該可以說明白了。*/
unsigned?char?szGuid[]?=?“4D36E972-E325-11CE-BFC1-08002BE10318“;
HRESULT?hr?=?UuidFromString(szGuid&guid);??
hDevInfo?=?SetupDiGetClassDevs(&guidNULLNULLDIGCF_PRESENT);??//?get?the?device?info
if?(INVALID_HANDLE_VALUE?==?hDevInfo)
{
OutputDebugString(“SetupDiGetClassDevs?failed“);
}
/*
The?SetupDiEnumDeviceInfo?function?returns?a?SP_DEVINFO_DATA?structure?that?
specifies?a?device?information?element?in?a?device?information?set.
SetupDiEnumDeviceInfo(
????__in??HDEVINFO?DeviceInfoSet
????__in??DWORD?MemberIndex
????__out?PSP_DEVINFO_DATA?DeviceInfoData
);
The?SetupDiGetDeviceInstanceId?function?retrieves?the?device?instance?ID?that?is?
associated?with?a?device?information?element.
BOOL?SetupDiGetDeviceInstanceId(
_In_??????HDEVINFO?????????DeviceInfoSet
_In_??????PSP_DEVINFO_DATA?DeviceInfoData
_Out_opt_?PTSTR????????????DeviceInstanceId
_In_??????DWORD????????????DeviceInstanceIdSize
_Out_opt_?PDWORD?????????
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2015-12-31?12:29??NetSpeed\
?????目錄???????????0??2015-12-28?11:03??NetSpeed\NetSpeedProc\
?????目錄???????????0??2015-12-28?00:31??NetSpeed\NetSpeedProc\Debug\
?????文件??????216064??2015-12-30?11:03??NetSpeed\NetSpeedProc\Debug\NetSpeedProc.exe
?????文件?????1858116??2015-12-30?11:03??NetSpeed\NetSpeedProc\Debug\NetSpeedProc.ilk
?????文件?????5286912??2015-12-30?11:03??NetSpeed\NetSpeedProc\Debug\NetSpeedProc.pdb
?????目錄???????????0??2015-12-30?11:03??NetSpeed\NetSpeedProc\NetSpeedProc\
?????目錄???????????0??2015-12-30?11:03??NetSpeed\NetSpeedProc\NetSpeedProc\Debug\
?????文件????????6358??2015-12-30?11:03??NetSpeed\NetSpeedProc\NetSpeedProc\Debug\BuildLog.htm
?????文件??????????65??2015-12-30?11:03??NetSpeed\NetSpeedProc\NetSpeedProc\Debug\mt.dep
?????文件????????1196??2015-12-28?00:31??NetSpeed\NetSpeedProc\NetSpeedProc\Debug\NetSpeedProc.exe.em
?????文件????????1260??2015-12-28?00:31??NetSpeed\NetSpeedProc\NetSpeedProc\Debug\NetSpeedProc.exe.em
?????文件????????1120??2015-12-30?11:03??NetSpeed\NetSpeedProc\NetSpeedProc\Debug\NetSpeedProc.exe.intermediate.manifest
?????文件???????33074??2015-12-28?10:23??NetSpeed\NetSpeedProc\NetSpeedProc\Debug\NetSpeedProc.obj
?????文件????40894464??2015-12-28?00:31??NetSpeed\NetSpeedProc\NetSpeedProc\Debug\NetSpeedProc.pch
?????文件???????72760??2015-12-30?11:03??NetSpeed\NetSpeedProc\NetSpeedProc\Debug\NetSpeedProc.res
?????文件??????362739??2015-12-28?11:28??NetSpeed\NetSpeedProc\NetSpeedProc\Debug\NetSpeedProcDlg.obj
?????文件???????84303??2015-12-28?10:23??NetSpeed\NetSpeedProc\NetSpeedProc\Debug\SettingDlg.obj
?????文件???????35068??2015-12-28?00:40??NetSpeed\NetSpeedProc\NetSpeedProc\Debug\ShowNetSpeed.obj
?????文件??????571116??2015-12-28?00:31??NetSpeed\NetSpeedProc\NetSpeedProc\Debug\stdafx.obj
?????文件?????1993728??2015-12-28?11:28??NetSpeed\NetSpeedProc\NetSpeedProc\Debug\vc90.idb
?????文件?????3264512??2015-12-28?11:28??NetSpeed\NetSpeedProc\NetSpeedProc\Debug\vc90.pdb
?????文件??????109952??2015-12-30?11:03??NetSpeed\NetSpeedProc\NetSpeedProc\NetSpeedProc.aps
?????文件????????1729??2015-12-24?09:50??NetSpeed\NetSpeedProc\NetSpeedProc\NetSpeedProc.cpp
?????文件?????????481??2015-12-03?10:46??NetSpeed\NetSpeedProc\NetSpeedProc\NetSpeedProc.h
?????文件????????8867??2015-12-30?11:03??NetSpeed\NetSpeedProc\NetSpeedProc\NetSpeedProc.rc
?????文件????????5861??2015-12-18?14:42??NetSpeed\NetSpeedProc\NetSpeedProc\NetSpeedProc.vcproj
?????文件????????1427??2015-12-30?12:42??NetSpeed\NetSpeedProc\NetSpeedProc\NetSpeedProc.vcproj.QH-20150724ZFHD.Administrator.user
?????文件???????21361??2015-12-28?11:21??NetSpeed\NetSpeedProc\NetSpeedProc\NetSpeedProcDlg.cpp
?????文件????????4459??2015-12-28?10:21??NetSpeed\NetSpeedProc\NetSpeedProc\NetSpeedProcDlg.h
?????文件????????2827??2015-12-03?10:46??NetSpeed\NetSpeedProc\NetSpeedProc\ReadMe.txt
............此處省略33個(gè)文件信息
評(píng)論
共有 條評(píng)論