获取网卡信息 c语言程序设计,获取本地网卡适配器信息具体代码

#include

#include

#include

#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("%02X", (int)pAdapterInfo->Address[i]);

}

else

{

printf("%02X-", (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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值