• vc 获取windows 网卡信息


    #include "stdafx.h"
    #include <Windows.h>
    #include <IPHlpApi.h>
    #include <iostream>
    #pragma comment(lib,"IPHlpApi.lib")
    using namespace std;
    
    BOOL GetLocalAdaptersInfo()
    {
        //IP_ADAPTER_INFO结构体
        PIP_ADAPTER_INFO pIpAdapterInfo = NULL;
        pIpAdapterInfo = new IP_ADAPTER_INFO;
    
        //结构体大小
        unsigned long ulSize = sizeof(IP_ADAPTER_INFO);
    
        //获取适配器信息
        int nRet = GetAdaptersInfo(pIpAdapterInfo,&ulSize);
    
        if (ERROR_BUFFER_OVERFLOW == nRet)
        {
            //空间不足,删除之前分配的空间
            delete []pIpAdapterInfo;
    
            //重新分配大小
            pIpAdapterInfo = (PIP_ADAPTER_INFO) new BYTE[ulSize];
    
            //获取适配器信息
            nRet = GetAdaptersInfo(pIpAdapterInfo,&ulSize);
    
            //获取失败
            if (ERROR_SUCCESS  != nRet)
            {
                if (pIpAdapterInfo != NULL)
                {
                    delete []pIpAdapterInfo;
                }
                return FALSE;
            }
        }
    
        //MAC 地址信息
        char szMacAddr[20];
        //赋值指针
        PIP_ADAPTER_INFO pIterater = pIpAdapterInfo;
        while(pIterater)
        {
            cout<<"网卡名称:"<<pIterater->AdapterName<<endl;
    
            cout<<"网卡描述:"<<pIterater->Description<<endl;
    
            sprintf_s(szMacAddr,20,"%02X-%02X-%02X-%02X-%02X-%02X",
                                                  pIterater->Address[0],
                                                  pIterater->Address[1],
                                                  pIterater->Address[2],
                                                  pIterater->Address[3],
                                                  pIterater->Address[4],
                                                  pIterater->Address[5]);
    
            cout<<"MAC 地址:"<<szMacAddr<<endl;
    
            cout<<"IP地址列表:"<<endl<<endl;
    
            //指向IP地址列表
            PIP_ADDR_STRING pIpAddr = &pIterater->IpAddressList;
            while (pIpAddr)
            {
                cout<<"IP地址:  "<<pIpAddr->IpAddress.String<<endl;
                cout<<"子网掩码:"<<pIpAddr->IpMask.String<<endl;
    
                //指向网关列表
                PIP_ADDR_STRING pGateAwayList = &pIterater->GatewayList;
                while(pGateAwayList)
                {
                    cout<<"网关:    "<<pGateAwayList->IpAddress.String<<endl;
    
                    pGateAwayList = pGateAwayList->Next;
                }
    
                pIpAddr = pIpAddr->Next;
            }
            cout<<endl<<"--------------------------------------------------"<<endl;
    
            pIterater = pIterater->Next;
        }
    
        //清理
        if (pIpAdapterInfo)
        {
            delete []pIpAdapterInfo;
        }
    
        return TRUE;
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        GetLocalAdaptersInfo();
    
        cin.get();
        return 0;
    }
  • 相关阅读:
    【题解】一本通例题 S-Nim
    【题解】一本通例题 取石子游戏
    【题解】[USACO09NOV]A Coin Game S
    【题解】取火柴游戏
    【题解】CF375D Tree and Queries
    Linux sudo用户提权与日志审计
    No space left on device
    CentOS下多种方法显示文本行号
    Python之行-01之初识python
    约瑟夫问题
  • 原文地址:https://www.cnblogs.com/M4ster/p/network_cards.html
Copyright © 2020-2023  润新知