获取本地网卡适配器信息具体代码
效果如下:
具体代码如下:
#include<Windows.h>
#include<IPHlpApi.h>
#include<stdio.h>
#pragmacomment(lib,"IPHlpApi")
#pragmacomment(lib,"ws2_32")
intmain(intargc,char**argv)
{
PIP_ADAPTER_INFOpAdapterInfo=NULL;
ULONGulLen=sizeof(IP_ADAPTER_INFO);
structtmnewtime;
charszBuffer[32];
errno_terror;
//为适配器结构申请内存
//pAdapterInfo=(PIP_ADAPTER_INFO)GlobalAlloc(GPTR,ulLen);
pAdapterInfo=(PIP_ADAPTER_INFO)HeapAlloc(GetProcessHeap(),0,sizeof(IP_ADAPTER_INFO));
if(NULL==pAdapterInfo)
{
printf("ErrorallocatingmemoryneededtocallGetAdaptersInfo.\n");
return1;
}
if(ERROR_BUFFER_OVERFLOW==GetAdaptersInfo(pAdapterInfo,&ulLen))
{
HeapFree(GetProcessHeap(),0,pAdapterInfo);
pAdapterInfo=(PIP_ADAPTER_INFO)HeapAlloc(GetProcessHeap(),0,ulLen);
if(NULL==pAdapterInfo)
{
printf("ErrorallocatingmemoryneededtocallGetAdaptersInfo.\n");
return1;
}
}
//取得本地适配器结构信息
if(ERROR_SUCCESS!=GetAdaptersInfo(pAdapterInfo,&ulLen))
{
printf("GetAdaptersInfoerror!\n");
return0;
}
if(NULL==pAdapterInfo)
{
printf("Thereisnoadapters!\n");
return0;
}
SetConsoleTitle(TEXT("本地网卡适配器信息"));
do
{
printf("ComboIndex:%d\n",pAdapterInfo->ComboIndex);
printf("AdapterName:%s\n",pAdapterInfo->AdapterName);
printf("AdapterDesc:%s\n",pAdapterInfo->Description);
printf("AdapterAddr:");
for(size_ti=0;i<pAdapterInfo->AddressLength;i++)
{
if(i==(pAdapterInfo->AddressLength-1))
{
printf("%02X",(int)pAdapterInfo->Address[i]);
}
else
{
printf("%",(int)pAdapterInfo->Address[i]);
}
}
printf("\n");
printf("Index:%d\n",pAdapterInfo->Index);
printf("Type:");
switch(pAdapterInfo->Type)
{
caseMIB_IF_TYPE_OTHER:printf("Other\n");break;
caseMIB_IF_TYPE_ETHERNET:printf("Ethernet\n");break;
caseMIB_IF_TYPE_TOKENRING:printf("TokenRing\n");break;
caseMIB_IF_TYPE_FDDI:printf("FDDI\n");break;
caseMIB_IF_TYPE_PPP:printf("PPP\n");break;
caseMIB_IF_TYPE_LOOPBACK:printf("Lookback\n");break;
caseMIB_IF_TYPE_SLIP:printf("Slip\n");break;
default:printf("Unknowtype%ld\n",pAdapterInfo->Type);break;
}
printf("IPAddress:%s\n",pAdapterInfo->IpAddressList.IpAddress.String);
printf("IPMask:%s\n",pAdapterInfo->IpAddressList.IpMask.String);
printf("Gateway:%s\n",pAdapterInfo->GatewayList.IpAddress.String);
if(pAdapterInfo->DhcpEnabled)
{
printf("DHCPEnabled:Yes\n");
printf("DHCPServer:%s\n",pAdapterInfo->DhcpServer.IpAddress.String);
printf("LeaseObtained:");
error=_localtime32_s(&newtime,(__time32_t*)&pAdapterInfo->LeaseObtained);
if(error)
{
printf("InvalidArgumentto_localtime32_s.\n");
}
else
{
error=asctime_s(szBuffer,32,&newtime);
if(error)
{
printf("InvalidArgumenttoasctime_s.\n");
}
else
{
printf("%s",szBuffer);
}
}
printf("LeaseExpires:");
error=_localtime32_s(&newtime,(__time32_t*)&pAdapterInfo->LeaseExpires);
if(error)
{
printf("InvalidArgumentto_localtime32_s.\n");
}
else
{
error=asctime_s(szBuffer,32,&newtime);
if(error)
{
printf("InvalidArgumenttoasctime_s.\n");
}
else
{
printf("%s",szBuffer);
}
}
}
else
{
printf("DHCPEnabled:No\n");
}
if(pAdapterInfo->HaveWins)
{
printf("HaveWins:Yes\n");
printf("PrimaryWinsServer:%s\n",pAdapterInfo->PrimaryWinsServer.IpAddress.String);
printf("SecondaryWinsServer:%s\n",pAdapterInfo->SecondaryWinsServer.IpAddress.String);
}
else
{
printf("HaveWins:No\n");
}
printf("=================================================================\n");
pAdapterInfo=pAdapterInfo->Next;
}while(pAdapterInfo);
if(pAdapterInfo)
{
HeapFree(GetProcessHeap(),0,pAdapterInfo);
}
return0;
}
相关文章
- 使用Cacti监控Linux服务器网卡流量的配置方法
- 雅虎杨致远投资的SDN公司又融资了,它曾想干掉网卡!
- Linux使用 iftop 实时监控网卡的流量
- Linux离线安装:无网卡也可以运行(linux无网卡)
- 探索Linux系统下查看网卡地址之旅(linux查看网卡地址)
- Linux重置网卡:轻松搞定网络故障(linux重置网卡)
- Linux系统如何配置网卡DNS(linux网卡配置dns)
- 界面图形界面下 Linux 网卡配置简易指南(linux配置网卡图形)
- Linux启动配置:如何快速设置网卡?(linux启动网卡)
- 安装Linux驱动:网卡驱动解决方案(网卡驱动linux)
- 探究Linux系统对无线网卡的支持与适配:选购、安装、优化全方位解析(linux支持的无线网卡)
- Linux网卡配置路径详解(linux网卡配置路径)
- SQL Server多网卡架构的优势及应用(sqlserver多网卡)
- Linux检查网卡驱动:把问题解决了!(linux检查网卡驱动)
- 获取客户端网卡MAC地址和IP地址实现JS代码