-
大小: 36.53MB文件类型: .zip金币: 1下载: 0 次发布日期: 2023-06-14
- 语言: 其他
- 标签: C++ 网速 GetIfTable 物理网卡 SetupDixxx
资源简介
自己实现的区分物理网卡并获取其网速的程序
没有实现hook其他进程 获得网速的功能
代码片段和文件信息
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 // 获取设备信息集
SetupDiEnumDeviceInfo // 从设备信息集中枚举每个设备的具体信息
SetupDiGetDeviceRegistryProperty // 从注册表中读取PnP设备的属性
SetupDiSetClassInstallParams // 设置(包括取消)设备类的安装参数
SetupDiCallClassInstaller // 安装指定设备
/*我要介绍的方法是通过使用AdapterName来判断的。这个就要涉及到注册表和SetupDi函数了,或许有点复杂。
AdapterName是一个guid数据,这个数据可以让我们查询这个所在网卡信息。
HLM\\System\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}
\\{AdapterName}\\connection 下面去看看,在这个下面一般有MediaSubType,这个可以用来表示是否
为无线网卡,还有一个Name,这个是用于在网络连接中显示的名称,一般真实的pci板载网卡叫做本地连接
,当然也可以用这个方法来判断是否为物理网卡了。还有一个就是PnpInstanceId,这个指是有系统在
枚举pci的时候设置的,这个值其实就是device instance id,你可以在设备管理其中看到这个。
接下来就是我想说的用SetupDi来判断是否为物理网卡的方法了。其实这个挺简单的,只要我们知道物理网卡,
肯定是挂在某个bus上面的,因此对于虚拟网卡,肯定是没有bus号的。主要的代码在下面。我想应该可以说明白了。*/
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
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 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个文件信息
相关资源
- 眼底图像拼接
- vim配置成强大的IDE
- 算法竞赛入门经典完整版(ACM竞赛入
- 用QT做一个简单的登录界面
- 数据结构+数据结构习题解析第3版_邓
- K66_逐飞.zip
- OpenCV计算机视觉编程攻略 第三版
- Thinking_in_C _中文版.pdf
- 泛型编程与STL中文版.pdf
- Real-Time Rendering Fourth Edition
- 人工智能求解怪兽世界游戏
- 点云库PCL从入门到精通_随书代码.zi
- 华夏车牌识别二次开发软件.rar
-
mavli
nk协议收发源码 - 高质量程序设计指南第三版 修订版
- LINUX网络编程_宋敬彬_孙海滨(pdf&代码
- 信息学奥赛一本通 NOIP500+第2部分
- Head First C(英+中+代码)
- FastReport_VCL_Enterprise_6.8.3For Rad Studio
- FMSoft_uniGUI_Professional整套安装包官方破
- Qt Creator快速入门_第三版 完整版
- Qt Creator快速入门-第2版qt4.8-PDF(书签
- QT+OpenCV+VS Gerber光绘文件识别2
- mingw-w64压缩包
- opencv2计算机视觉编程手册中文清晰扫
- QT5 黄金矿工 游戏开发
- ImageFusion.zip
- PDFium功能.zip
- opencv4.0调用TensorFlow实现mask rcnn的训练
- obj加载/三维图像拖动放大缩小旋转
评论
共有 条评论