用加载动态库Iphlpapi.dll的方法获取网卡信息
来源:互联网 发布:电脑拼接图片软件 编辑:程序博客网 时间:2024/06/05 04:00
用加载动态库Iphlpapi.dll的方法获取网卡信息.
1.定义结构体
#define MAX_ADAPTER_NAME_LENGTH 256#define MAX_ADAPTER_DESCRIPTION_LENGTH 128#define MAX_ADAPTER_ADDRESS_LENGTH 8typedef struct{ char String[4*4];} IP_ADDRESS_STRING, *PIP_ADDRESS_STRING, IP_MASK_STRING, *PIP_MASK_STRING;typedef struct _IP_ADDR_STRING{ struct _IP_ADDR_STRING* Next; IP_ADDRESS_STRING IpAddress; IP_MASK_STRING IpMask; DWORD Context;} IP_ADDR_STRING, *PIP_ADDR_STRING;typedef struct _IP_ADAPTER_INFO{ struct _IP_ADAPTER_INFO* Next; DWORD ComboIndex; char AdapterName[MAX_ADAPTER_NAME_LENGTH+4]; char Description[MAX_ADAPTER_DESCRIPTION_LENGTH+4]; UINT AddressLength; BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH]; DWORD Index; UINT Type; UINT DhcpEnabled; PIP_ADDR_STRING CurrentIpAddress; IP_ADDR_STRING IpAddressList; IP_ADDR_STRING GatewayList; IP_ADDR_STRING DhcpServer; BOOL HaveWins; IP_ADDR_STRING PrimaryWinsServer; IP_ADDR_STRING SecondaryWinsServer; time_t LeaseObtained; time_t LeaseExpires;} IP_ADAPTER_INFO, *PIP_ADAPTER_INFO;
2.声明iphlpapi.dll中需要调用参数的调用方式为__stdcall,及参数类型
typedef DWORD (__stdcall* PGAINFO)(PIP_ADAPTER_INFO, PULONG);
3.主函数
HMODULE hInst = LoadLibrary("iphlpapi.dll");if(!hInst)printf("iphlpapi.dll no supported in this platform!\n");PGAINFO pGAInfo = (PGAINFO)GetProcAddress(hInst, "GetAdaptersInfo");if(pGAInfo == NULL){printf("can't found GetAdapterInfo function!\n");exit(0);}ULONG ulSize = 0;PIP_ADAPTER_INFO pInfo=NULL, d=NULL;while(pGAInfo(pInfo, &ulSize) != ERROR_SUCCESS){delete pInfo;int eSize = ulSize/sizeof(IP_ADAPTER_INFO);if(ulSize%sizeof(IP_ADAPTER_INFO)){eSize++;}pInfo = (PIP_ADAPTER_INFO)new(IP_ADAPTER_INFO[eSize]);}//GetAdapterInfo返回的是一个键表结构的网卡信息,可以用循环遍历得到每一个网卡的信息int i=0;for(d=pInfo; d!=NULL; d=d->Next){CString szNetInfo;szNetInfo.Format("%d. 网卡:%s", ++i, d->Description);cout<<szNetInfo<<endl;szNetInfo.Format("MAC 地址: %02x-%02x-%02x-%02x-%02x-%02x", d->Address[0], d->Address[1], d->Address[2], d->Address[3], d->Address[4], d->Address[5]);cout<<szNetInfo<<endl;szNetInfo.Format("IP 地址:%s", d->IpAddressList.IpAddress.String);cout<<szNetInfo<<endl;szNetInfo.Format("子网掩码:%s", d->IpAddressList.IpMask.String);cout<<szNetInfo<<endl;szNetInfo.Format("网关:%s", d->GatewayList.IpAddress.String);cout<<szNetInfo<<endl;}delete []pInfo;delete []d;FreeLibrary(hInst);
- 用加载动态库Iphlpapi.dll的方法获取网卡信息
- 一个专门获取网卡信息的 没有Iphlpapi.h与Iphlpapi.lib,怎么处理?
- 在vb中使用Iphlpapi.dll获取网络信息 第三章 第一节 IPHLPAPI 的其它函数
- 在vb中使用Iphlpapi.dll获取网络信息 第三章 第一节 IPHLPAPI 的其它函数
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第九节 获取网卡–IP地址映射表
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第九节 获取网卡–IP地址映射表
- VS6.0下使用 IP Help API(Iphlpapi.dll)系列函数之GetAdaptersAddresses(GetAdaptersInfo) 获取网卡信息简述
- [转]在vb中使用Iphlpapi.dll获取网络信息
- 在vb中使用Iphlpapi.dll获取网络信息
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第一节 获取本机网络适配器的信息
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十一节 获取当前计算机的IP信息
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第一节 获取本机网络适配器的信息
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十一节 获取当前计算机的IP信息
- 动态加载dll的方法
- DLL的动态加载方法
- IPHLPAPI.DLL的作用
- Iphlpapi.dll的应用
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十三节 获得目的地IP对应的物理地址
- 中文分词 测试用例
- 图片
- WireShark抓包的pcap文件格式分析
- 二维码简介和ios的读取二维码例子
- 图学PowerBuilder---PB自带的DataWindow学习工具
- 用加载动态库Iphlpapi.dll的方法获取网卡信息
- C语言实现封装、继承和多态
- javabean
- 数字转换成字符串
- 防晒旧原则已经过时,新原则告诉你
- shell 重定向
- Java 为什么使用wait()/notify()机制?
- MCU接收串口字符型数据转换成数据型数据
- 在Unix中运行多个mysql服务器