int CGetSysInfo::GetInterFaceCount()
{
try
{
#define DEFAULT_BUFFER_SIZE 40960L
unsigned char *data = (unsigned char*)malloc(DEFAULT_BUFFER_SIZE);
DWORD type;
DWORD size = DEFAULT_BUFFER_SIZE;
DWORD ret;
char s_key[4096];
sprintf_s(s_key , 4096 , "510");
//RegQueryValueEx的固定调用格式
CString str(s_key);
//如果RegQueryValueEx函数执行失败则进入循环
while((ret = RegQueryValueEx(HKEY_PERFORMANCE_DATA, str, 0, &type, data, &size)) != ERROR_SUCCESS)
{
Sleep(10);
//如果RegQueryValueEx的返回值为ERROR_MORE_DATA(申请的内存区data太小,不能容纳RegQueryValueEx返回的数据)
if(ret == ERROR_MORE_DATA)
{
Sleep(10);
size += DEFAULT_BUFFER_SIZE;
data = (unsigned char*) realloc(data, size);//重新分配足够大的内存
ret = RegQueryValueEx(HKEY_PERFORMANCE_DATA, str, 0, &type, data, &size);//重新执行RegQueryValueEx函数
}
//如果RegQueryValueEx返回值仍旧未成功则函数返回.....(注意内存泄露“free函数”~~~)。
//这个if保证了这个while只能进入一次~~~避免死循环
if(ret != ERROR_SUCCESS)
{
if (NULL != data)
{
free(data);
data = NULL;
}
return 0;//0个接口
}
}
//函数执行成功之后就是对返回的data内存中数据的解析了,这个建议去查看MSDN有关RegQueryValueEx函数参数数据结构的说明
//得到数据块
PERF_DATA_BLOCK *dataBlockPtr = (PERF_DATA_BLOCK *)data;
//得到第一个对象
PERF_OBJECT_TYPE *objectPtr = (PERF_OBJECT_TYPE *) ((BYTE *)dataBlockPtr + dataBlockPtr->HeaderLength);
for(int a=0 ; a<(int)dataBlockPtr->NumObjectTypes ; a++)
{
char nameBuffer[255] = {0};
if(objectPtr->ObjectNameTitleIndex == 510)
{
DWORD processIdOffset = ULONG_MAX;
PERF_COUNTER_DEFINITION *counterPtr =(PERF_COUNTER_DEFINITION *) ((BYTE *)objectPtr + objectPtr->HeaderLength);
for(int b=0 ; b<(int)objectPtr->NumCounters ; b++)
{
if(counterPtr->CounterNameTitleIndex == 520)
processIdOffset = counterPtr->CounterOffset;
counterPtr =(PERF_COUNTER_DEFINITION *) ((BYTE *) counterPtr + counterPtr->ByteLength);
}
if(processIdOffset == ULONG_MAX) {
if(data != NULL)
{
free(data);
data = NULL;
}
return 0;
}
PERF_INSTANCE_DEFINITION *instancePtr =(PERF_INSTANCE_DEFINITION *) ((BYTE *) objectPtr + objectPtr->DefinitionLength);
for(int b=0 ; b<objectPtr->NumInstances ; b++)
{
wchar_t *namePtr = (wchar_t *) ((BYTE *)instancePtr + instancePtr->NameOffset);
PERF_COUNTER_BLOCK *counterBlockPtr = (PERF_COUNTER_BLOCK *) ((BYTE *)instancePtr + instancePtr->ByteLength);
char pName[256] = {0};
WideCharToMultiByte(CP_ACP, 0, namePtr, -1, pName, sizeof(nameBuffer), 0, 0);
DWORD bandwith = *((DWORD *) ((BYTE *)counterBlockPtr + processIdOffset));
DWORD tottraff = 0;
Interfaces.AddTail(CString(pName)); //各网卡的名称
Bandwidths.AddTail(bandwith); //带宽
TotalTraffics.AddTail(tottraff); // 流量初始化为0
PERF_COUNTER_BLOCK *pCtrBlk = (PERF_COUNTER_BLOCK *) ((BYTE *)instancePtr + instancePtr->ByteLength);
instancePtr = (PERF_INSTANCE_DEFINITION *) ((BYTE *)instancePtr + instancePtr->ByteLength + pCtrBlk->ByteLength);
}
}
objectPtr = (PERF_OBJECT_TYPE *) ((BYTE *)objectPtr + objectPtr->TotalByteLength);
}
if(data != NULL)
{
free(data);
data = NULL;
}
}
catch(...)
{
return 0;
}
return Interfaces.GetCount();
}相关推荐
读取电脑网卡信息
第一步:搭建实验环境 操作系统 Windows 10 编译环境 安装纯净版的Visual C++ 6.0 第二步:创建相应的MFC工程 第三步:根据作业要求,进行相应的页面布局 分别获取:网卡名称、MAC地址、ip地址、子网掩码、网管五个信息 第四步:添加一个获取按钮,并相应的添加关联变量! 第五步:在文件中添加相应的包含的头文件代码
MFC-GetAdaptersAddresses获取网卡信息
【代码】MFC-GetAdaptersAddresses获取网卡信息。
linux mfc驱动下载,Ubuntu 安装 Brother MFC7470D 驱动
Ubuntu 安装 Brother MFC7470D 驱动办公室的打印机是 Brother MFC7470D ,在 Ubuntu 中安装打印机驱动时,发现没有这个型号的驱动。只有 MFC7450 的驱动,于是安装了这个驱动,尝试打印,也可以打印,但是无法进行双面的打印。这个驱动是 32 位的,要在 64 位的 Ubuntu 上运行,还需要 32 位的库, 开启 32 位支持:sudo dpkg -...
VC++ MFC 遍历注册表,获取网卡名称。(设备管理器中的名称)
HKEY hKey_tmp = NULL, hKey = NULL; TCHAR comNum[64],achKey[64]; CString comname,sActive,temp; DWORD cbMaxSubKey = 255; //键名的长度 DWORD dwType = 10; DWORD dwSize = 255; sActive = _T("SYSTEM\\CurrentControlSet\\Control\\Class\\"); //注册表下已加载设备项 if (Re..
使用VS2010 MFC检索直连设备MAC地址的教程
Visual Studio 2010是微软公司推出的一款集成开发环境(IDE),它提供了包括C++、C#、VB.NET等在内的多种编程语言支持。该版本强调团队协作和云服务集成,支持.NET Framework 4.0,并引入了丰富的调试和测试工具。对于MFC(Microsoft Foundation Classes)库的开发工作提供了全面支持。MAC地址,全称为Media Access Control Address,直译为媒体访问控制地址,是用于在网络中的每一个网络设备上分配一个唯一的物理地址。
MFC获取网卡信息的一个例子
MFC获取网卡信息的一个例子,以前做项目的时候随手写的一个测试例子
MFC多网卡获取IP
// 头文件包含#include "stdafx.h"#include <WinSock2.h>#include <Iphlpapi.h>#include <iostream>using namespace std;#pragma comment(lib, "iphlpapi.lib")// 函数声明void output(PIP_ADAP...
S32K3的STCU2模块详解:从硬件FSM到MCAL配置,搞懂BIST在线测试全流程
本文深入解析S32K3系列MCU的STCU2模块,从硬件FSM架构到MCAL配置,详细讲解BIST在线测试全流程。通过分区的安全策略和实战代码示例,帮助开发者掌握汽车电子系统中的功能安全实现,提升系统可靠性和安全性。
MFC编程 得到网卡MAC地址(转载)
<br /> <br />用来获取网卡MAC号,经检测挺管用的。<br />转载的:http://blog.youkuaiyun.com/HJBGraphics/archive/2005/08/28/466869.aspx<br />MFC编程 得到网卡MAC地址<br /><br /> <br /><br /> 用命令行config /all来获取网卡相关的信息,然后重定向到管道,就可以获取各种和网卡相关的信息了。只要能够在机器上执行“ipconfig /all”命令,就可以得到MAC地址,而这个命令在所有的网
三维重建Fusion中的TSDF算法通俗描述
看个视频 https://www.youtube.com/watch?v=8M_-lSYqACo 这是mobilefusion的视频,大家先了解一下,看到在三维重建的时候外面有个长方体包围盒了吗? 数据准备: 我们不同角度拍摄的RGB图、深度图和相应的pose.txt。 步骤: 1.建立长方体包围盒 要建立一个长方体包围盒。让所有的三维点都在这个长方体里面。 假设z方向垂直相机。 很明显,x,y方...
【现代信号处理】01 -概率论与随机过程回顾
概率论与随机过程回顾 文章目录概率论与随机过程回顾1. 统计模型的相关概念1.1 统计实验(不确定性)1.2 样本点1.3 样本空间Ω1.4 概率1.5.统计模型是先验的2. 概率和统计的差异2.1 联系2.2 差异2.3.1 概率和统计问题的三要素2.3.1.1 model-模型2.3.1.2 data-数据2.3.1.3 decision-决策2.3.2 关系图3. 样本空间的重要性3.1 贝朗特悖论3.1.1 解法一3.1.2 解法二3.1.3 解法三3.2 结论4.概率相关的概念4.1 随机变量4.
VC 获取物理网卡的MAC地址
获取网卡的MAC地址的方法很多,如:Netbios,SNMP,GetAdaptersInfo等。经过测试发现 Netbios 方法在网线拔出的情况下获取不到MAC,而 SNMP方法有时会获取多个重复的网卡的MAC,试来试去还是 GetAdaptersInfo方法比较好,网线拔出的情况下可以获取MAC,而且很准确,不会重复获取网卡。 GetAdaptersInfo 方法也不是十全十美,也存在些问
【YOLO系列】YOLOv5超详细解读(源码详解+入门实践+改进)
一文带你详细了解YOLOv5(含YOLO系列论文讲解+源码详解+入门实践+算法改进)
mfc 获取网卡名字
void CGetSysInfo::GetInterFaceName(CString &InterfaceName,int pNum) { POSITION pos = Interfaces.FindIndex(pNum); if(pos==NULL) return ; InterfaceName = Interfaces.GetAt(pos); pos = ...
MIMO-OFDM通信系统性能仿真及MATLAB实现
将MIMO和OFDM技术结合起来,可以充分利用两者的优点,进一步提高无线通信系统的性能。在MIMO-OFDM系统中,多个天线同时发射多个子载波,称为多天线多载波(MIMO-OFDM)系统。随着无线通信技术的不断发展,MIMO-OFDM技术因其高效、可靠和适应性等优点已被广泛应用于新一代通信系统中。本篇文章旨在介绍MIMO-OFDM通信系统的基本原理及其性能评估方法,并结合MATLAB提供相关代码实现。本篇文章介绍了MIMO-OFDM通信系统的基本原理和性能评估方法,并结合MATLAB提供了相关的实现代码。
LangGraph 实战教程:搭建一个智能办公多Agent协作平台
只存储必要的信息:不要把所有的原始数据都存储在状态中,比如销售数据可以存储在数据库或向量数据库中,状态中只存储数据的 ID 或摘要。使用类型提示:避免类型错误,提高代码的可维护性。支持增量更新:LangGraph 默认支持状态的增量更新(通过reduce函数),比如messages列表可以通过追加新消息的方式更新,而不是每次都重新创建整个列表。Normal Edge 的定义非常简单,只需要在StateGraph对象(稍后会详细讲解)上调用add_edge# 创建一个 StateGraph 对象。
网卡信息小程序
显示网卡信息
基于STC8G1K08A单片机的PCA捕获外部信号(100~1000HZ)程序实现
基于STC8G1K08A单片机的PCA捕获外部信号(100~1000HZ)程序实现
VC获取硬盘序列号 网卡 cpuid bios
<br /><br />用api函数读取硬盘的序列号<br />关于盘序列号有两种: <br /> <br /> 硬盘序列号: 英文名 Hard Disk Serial Number, 该号是出厂时生产厂家为 <br /> 区别产品而设置的, 是唯一的, 是只读的, 利用硬盘序列号的 <br /> 加密往往是利用其唯一和只读的特性, 大多是针对有序列号的 <br /> IDE HDD而言, 对于没有序列号或SCSI
【Claude Code】Unable to connect to API 报错原因与排查解决全流程
深入分析 Claude Code 中 Unable to connect to API 系列报错的根因,涵盖 ECONNREFUSED、ECONNRESET、ETIMEDOUT 等 6 种变体,提供从网络连通性检测、代理配置到 LLM 网关路由的完整排查路径,帮助开发者快速恢复 Claude Code 的正常使用。
LinePhone3.2.7(android端最新版本) sip客户端
SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/
【亲测免费】 MFC获取机器码的源代码:一键生成机器唯一标识
MFC获取机器码的源代码:一键生成机器唯一标识 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在软件授权、设备识别等众多应用场景中,能够准确、高效地获取机器的唯一标识是非常重要的。今天,我们要推荐的开源项目——MFC获取机器码的源代码,正是这样一个实用的工具。它通过MFC(Microsoft Foundation Classes)框架,轻松获取机器的CPUID和MAC...
怀旧版电脑GBC模拟器
再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。
MFC获取本机MAC地址
//数组的大小只能是13 1 GetMacAdress(char arr[],int Num){ 2 char MAC[13]={0}; 3 PIP_ADAPTER_INFO pAdapterInfo; 4 PIP_ADAPTER_INFO pAdapter = NULL; 5 DWORD dwRetVal = 0; 6 p...
jre9下载 jdk9
(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】
深度学习工具包 DeepLearningToolbox
深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[](https://bitdeli.com/free "Bitdeli Badge")
tos win10打开ip_用Winpcap怎么获取网卡的MAC和IP
当前位置:我的异常网» VC/MFC»用Winpcap怎么获取网卡的MAC和IP用Winpcap怎么获取网卡的MAC和IPwww.myexceptions.net网友分享于:2013-03-15浏览:295次用Winpcap如何获取网卡的MAC和IP?用Winpcap如何获取网卡的MAC和IP?------解决方案--------------------//获取网卡参数程序,前提是要安...
MFC到Linux+QT的移植
MFC下的sleep()函数是以微秒为单位的,Linux下的speep()以秒为单位,usleep以微妙为单位; MFC下的ShowWindow()用于显示窗口,QT中显示窗口通过show()函数; MFC下的控件可以绑定一个变量(例如输入控件),当绑定的变量修改值后,通过ShowWindow()可以更新到界面上,而QT上不需要绑定变量,直接通过控件的成员函数设置值后数据会自动更新到界面上...
一步一步尝试在MFC下开发基于winpcap的数据包捕获和分析软件.(开发总结,建议先看)
随便转载,转载请注明出处http://blog.youkuaiyun.com/leotangcw/欢迎大家和我交流QQ:17371764 Email:tangchengwen@163.com 花了两天时间终于把这个软件的大体开发思路和代码写完了,不过由于内容比较多,没法一点一点的仔细讲清楚开发的具体步骤(打字太慢了)在这里总结一下: 开发 基础:
1768



被折叠的 条评论
为什么被折叠?



