源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2021-03-03 17:34 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:获取本地网卡适配器信息具体代码
效果如下: [img]http://files.jb51.net/file_images/article/201312/20131231163535293.jpg[/img] 具体代码如下:
[u]复制代码[/u] 代码如下:
#include <Windows.h> #include <IPHlpApi.h> #include <stdio.h> #pragma comment(lib, "IPHlpApi") #pragma comment(lib, "ws2_32") int main(int argc, char **argv) {     PIP_ADAPTER_INFO pAdapterInfo = NULL;     ULONG ulLen = sizeof(IP_ADAPTER_INFO);     struct tm newtime;     char szBuffer[32];     errno_t error;     //为适配器结构申请内存     //pAdapterInfo = (PIP_ADAPTER_INFO)GlobalAlloc(GPTR, ulLen);     pAdapterInfo = (PIP_ADAPTER_INFO)HeapAlloc(GetProcessHeap(), 0, sizeof(IP_ADAPTER_INFO));     if (NULL == pAdapterInfo)     {         printf("Error allocating memory needed to call GetAdaptersInfo.\n");         return 1;     }     if (ERROR_BUFFER_OVERFLOW == GetAdaptersInfo(pAdapterInfo, &ulLen))     {         HeapFree(GetProcessHeap(), 0, pAdapterInfo);         pAdapterInfo = (PIP_ADAPTER_INFO)HeapAlloc(GetProcessHeap(), 0, ulLen);         if (NULL == pAdapterInfo)         {             printf("Error allocating memory needed to call GetAdaptersInfo.\n");             return 1;         }     }     //取得本地适配器结构信息     if (ERROR_SUCCESS != GetAdaptersInfo(pAdapterInfo, &ulLen))     {         printf("GetAdaptersInfo error!\n");         return 0;     }     if (NULL == pAdapterInfo)     {         printf("There is no adapters!\n");         return 0;     }     SetConsoleTitle(TEXT("本地网卡适配器信息"));     do     {         printf("ComboIndex:%d\n", pAdapterInfo->ComboIndex);         printf("Adapter Name:%s\n", pAdapterInfo->AdapterName);         printf("Adapter Desc:%s\n", pAdapterInfo->Description);         printf("Adapter Addr:");         for (size_t i = 0; i < pAdapterInfo->AddressLength; i++)         {             if (i == (pAdapterInfo->AddressLength - 1))             {                 printf("X", (int)pAdapterInfo->Address[i]);             }             else             {                 printf("X-", (int)pAdapterInfo->Address[i]);             }         }         printf("\n");         printf("Index:%d\n", pAdapterInfo->Index);         printf("Type:");         switch (pAdapterInfo->Type)         {         case MIB_IF_TYPE_OTHER:printf("Other\n"); break;         case MIB_IF_TYPE_ETHERNET:printf("Ethernet\n"); break;         case MIB_IF_TYPE_TOKENRING:printf("Token Ring\n"); break;         case MIB_IF_TYPE_FDDI:printf("FDDI\n"); break;         case MIB_IF_TYPE_PPP:printf("PPP\n"); break;         case MIB_IF_TYPE_LOOPBACK:printf("Lookback\n"); break;         case MIB_IF_TYPE_SLIP:printf("Slip\n"); break;         default:printf("Unknow type %ld\n", pAdapterInfo->Type); break;         }         printf("IP Address:%s\n", pAdapterInfo->IpAddressList.IpAddress.String);         printf("IP Mask:%s\n", pAdapterInfo->IpAddressList.IpMask.String);         printf("Gateway:%s\n", pAdapterInfo->GatewayList.IpAddress.String);         if (pAdapterInfo->DhcpEnabled)         {             printf("DHCP Enabled:Yes\n");             printf("DHCP Server:%s\n", pAdapterInfo->DhcpServer.IpAddress.String);             printf("Lease Obtained:");             error = _localtime32_s(&newtime, (__time32_t*)&pAdapterInfo->LeaseObtained);             if (error)             {                 printf("Invalid Argument to _localtime32_s.\n");             }             else             {                 error = asctime_s(szBuffer, 32, &newtime);                 if (error)                 {                     printf("Invalid Argument to asctime_s.\n");                 }                 else                 {                     printf("%s", szBuffer);                 }             }             printf("Lease Expires:");             error = _localtime32_s(&newtime, (__time32_t*)&pAdapterInfo->LeaseExpires);             if (error)             {                 printf("Invalid Argument to _localtime32_s.\n");             }             else             {                 error = asctime_s(szBuffer, 32, &newtime);                 if (error)                 {                     printf("Invalid Argument to asctime_s.\n");                 }                 else                 {                     printf("%s", szBuffer);                 }             }         }         else         {             printf("DHCP Enabled:No\n");         }         if (pAdapterInfo->HaveWins)         {             printf("Have Wins:Yes\n");             printf("Primary Wins Server:%s\n", pAdapterInfo->PrimaryWinsServer.IpAddress.String);             printf("Secondary Wins Server:%s\n", pAdapterInfo->SecondaryWinsServer.IpAddress.String);         }         else         {             printf("Have Wins:No\n");         }         printf("=================================================================\n");         pAdapterInfo = pAdapterInfo->Next;     } while (pAdapterInfo);     if (pAdapterInfo)     {         HeapFree(GetProcessHeap(), 0, pAdapterInfo);     }     return 0; }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部