zl程序教程

您现在的位置是:首页 >  硬件

当前栏目

获取本地网卡适配器信息具体代码

网卡代码 获取 信息 本地 具体 适配器
2023-06-13 09:15:15 时间

效果如下:

具体代码如下:

复制代码代码如下:


#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;
}