资源简介

使用windows sdk提供的API函数GetAdaptersInfo获得本机所有网卡的网卡名、网卡描述、网卡MAC地址、网卡IP、网卡类型等信息,并用IP_ADAPTER_INFO结构体存储,使用GetIfEntry获取网卡的状态,可有效判断出网卡通讯是否正常,是否插入网线等......

资源截图

代码片段和文件信息

#include 
#include 
#include 
using namespace std;
#pragma comment(lib“Iphlpapi.lib“) //需要添加Iphlpapi.lib库

bool getAdapterState(DWORD index);

//int _tmain(int argc _TCHAR* argv[])
int __cdecl main()
{
//PIP_ADAPTER_INFO结构体指针存储本机网卡信息
PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO();
PIP_ADAPTER_INFO pAdapter = NULL;
//得到结构体大小用于GetAdaptersInfo参数
unsigned long stSize = sizeof(IP_ADAPTER_INFO);
//调用GetAdaptersInfo函数填充pIpAdapterInfo指针变量;其中stSize参数既是一个输入量也是一个输出量
int nRel = GetAdaptersInfo(pIpAdapterInfo&stSize);
//记录网卡数量
int netCardNum = 0;
//记录每张网卡上的IP地址数量
int IPnumPerNetCard = 0;
if (ERROR_BUFFER_OVERFLOW == nRel)
{
//如果函数返回的是ERROR_BUFFER_OVERFLOW
//则说明GetAdaptersInfo参数传递的内存空间不够同时其传出stSize表示需要的空间大小
//这也是说明为什么stSize既是一个输入量也是一个输出量
//释放原来的内存空间
delete pIpAdapterInfo;
//重新申请内存空间用来存储所有网卡信息
pIpAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[stSize];
//再次调用GetAdaptersInfo函数填充pIpAdapterInfo指针变量
nRel=GetAdaptersInfo(pIpAdapterInfo&stSize);    
}
if (ERROR_SUCCESS == nRel)
{
//输出网卡信息
//可能有多网卡因此通过循环去判断
pAdapter = pIpAdapterInfo;
while (pAdapter)
{
cout<<“网卡数量:“<<++netCardNum< cout<<“网卡名称:“<AdapterName< cout<<“网卡描述:“<Description< switch(pAdapter->Type)
{
case MIB_IF_TYPE_OTHER:
cout<<“网卡类型:“<<“OTHER“< break;
case MIB_IF_TYPE_ETHERNET:
cout<<“网卡类型:“<<“ETHERNET“< break;
case MIB_IF_TYPE_TOKENRING:
cout<<“网卡类型:“<<“TOKENRING“< break;
case MIB_IF_TYPE_FDDI:
cout<<“网卡类型:“<<“FDDI“< break;
case MIB_IF_TYPE_PPP:
printf(“PP\n“);
cout<<“网卡类型:“<<“PPP“< break;
case MIB_IF_TYPE_LOOPBACK:
cout<<“网卡类型:“<<“LOOPBACK“< break;
case MIB_IF_TYPE_SLIP:
cout<<“网卡类型:“<<“SLIP“< break;
default:

break;
}
cout<<“网卡MAC地址:“;
for (DWORD i = 0; i < pAdapter->AddressLength; i++)
if (i < pAdapter->AddressLength-1)
{
printf(“%02X-“ pAdapter->Address[i]);
}
else
{
printf(“%02X\n“ pAdapter->Address[i]);
}
cout<<“网卡IP地址如下:“< //可能网卡有多IP因此通过循环去判断
IP_ADDR_STRING *pIpAddrString =&(pAdapter->IpAddressList);
IPnumPerNetCard = 0;
do 
{
cout<<“该网卡上的IP数量:“<<++IPnumPerNetCard< cout<<“IP 地址:“<IpAddress.String< cout<<“子网地址:“<IpMask.String< cout<<“网关地址:“<GatewayList.IpAddress.String< pIpAddrString=pIpAddrString->Next;
} while (pIpAddrString);
if(getAdapterState(pAdapter->Index))
cout<<“网卡工作正常“< else
cout<<“网卡工作异常“< pAdapter = pAdapter->Next;
cout<<“--------------------------------------------------------------------“< }

}
//释放内存空间
if (pIpAdapterInfo)
{
delete []pIpAdapterInfo;
pIpAdapterInfo=NULL;
}
return 0;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3934  2016-06-29 08:19  AdapterInfoInEng\AdapterInfoInEng\AdapterInfoInEng.vcproj

     文件       1419  2016-06-29 09:27  AdapterInfoInEng\AdapterInfoInEng\AdapterInfoInEng.vcproj.LUHAISONG-N.LHS.user

     文件        663  2016-06-29 08:19  AdapterInfoInEng\AdapterInfoInEng\Debug\AdapterInfoInEng.exe.embed.manifest

     文件        728  2016-06-29 08:19  AdapterInfoInEng\AdapterInfoInEng\Debug\AdapterInfoInEng.exe.embed.manifest.res

     文件        621  2016-06-29 08:43  AdapterInfoInEng\AdapterInfoInEng\Debug\AdapterInfoInEng.exe.intermediate.manifest

     文件       6900  2016-06-29 08:43  AdapterInfoInEng\AdapterInfoInEng\Debug\BuildLog.htm

     文件      41357  2016-06-29 08:43  AdapterInfoInEng\AdapterInfoInEng\Debug\main.obj

     文件         60  2016-06-29 08:43  AdapterInfoInEng\AdapterInfoInEng\Debug\mt.dep

     文件     420864  2016-06-29 08:43  AdapterInfoInEng\AdapterInfoInEng\Debug\vc90.idb

     文件     126976  2016-06-29 08:43  AdapterInfoInEng\AdapterInfoInEng\Debug\vc90.pdb

     文件       5554  2016-06-29 08:43  AdapterInfoInEng\AdapterInfoInEng\main.cpp

     文件   11865088  2016-06-29 09:27  AdapterInfoInEng\AdapterInfoInEng.ncb

     文件        914  2016-06-29 08:17  AdapterInfoInEng\AdapterInfoInEng.sln

    ..A..H.      8192  2016-06-29 09:27  AdapterInfoInEng\AdapterInfoInEng.suo

     文件      31744  2016-06-29 08:43  AdapterInfoInEng\Debug\AdapterInfoInEng.exe

     文件     326348  2016-06-29 08:43  AdapterInfoInEng\Debug\AdapterInfoInEng.ilk

     文件     510976  2016-06-29 08:43  AdapterInfoInEng\Debug\AdapterInfoInEng.pdb

     文件       3934  2016-06-29 08:57  AdapterInfoInCHN\AdapterInfoInCHN\AdapterInfoInCHN.vcproj

     文件       1419  2016-06-29 09:25  AdapterInfoInCHN\AdapterInfoInCHN\AdapterInfoInCHN.vcproj.LUHAISONG-N.LHS.user

     文件        663  2016-06-29 08:58  AdapterInfoInCHN\AdapterInfoInCHN\Debug\AdapterInfoInCHN.exe.embed.manifest

     文件        728  2016-06-29 08:58  AdapterInfoInCHN\AdapterInfoInCHN\Debug\AdapterInfoInCHN.exe.embed.manifest.res

     文件        621  2016-06-29 08:58  AdapterInfoInCHN\AdapterInfoInCHN\Debug\AdapterInfoInCHN.exe.intermediate.manifest

     文件      10656  2016-06-29 08:58  AdapterInfoInCHN\AdapterInfoInCHN\Debug\BuildLog.htm

     文件      69287  2016-06-29 08:58  AdapterInfoInCHN\AdapterInfoInCHN\Debug\main.obj

     文件         60  2016-06-29 08:58  AdapterInfoInCHN\AdapterInfoInCHN\Debug\mt.dep

     文件     527360  2016-06-29 08:58  AdapterInfoInCHN\AdapterInfoInCHN\Debug\vc90.idb

     文件     266240  2016-06-29 08:58  AdapterInfoInCHN\AdapterInfoInCHN\Debug\vc90.pdb

     文件       4027  2016-06-29 08:58  AdapterInfoInCHN\AdapterInfoInCHN\main.cpp

     文件   12897280  2016-06-29 09:25  AdapterInfoInCHN\AdapterInfoInCHN.ncb

     文件        914  2016-06-29 08:54  AdapterInfoInCHN\AdapterInfoInCHN.sln

............此处省略16个文件信息

评论

共有 条评论