a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C > 正文

獲取本地網(wǎng)卡適配器信息具體代碼

2020-01-26 15:38:55
字體:
供稿:網(wǎng)友

效果如下:

具體代碼如下:

復(fù)制代碼 代碼如下:

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

    //為適配器結(jié)構(gòu)申請(qǐng)內(nèi)存
    //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;
        }
    }

    //取得本地適配器結(jié)構(gòu)信息
    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("本地網(wǎng)卡適配器信息"));

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

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 中文字幕在线一区二区三区 | 精品亚洲永久免费精品 | 午夜三区 | 在线播放av片| 免费观看特级毛片 | 97人人插| 亚洲人成人一区二区在线观看 | 99pao成人国产永久免费视频 | 国产成人一区二区三区影院在线 | 国产精品久久婷婷六月丁香 | 青青青草视频在线 | 91视频观看 | 狠狠插狠狠操 | 国产最新精品视频 | 久久久久久久久久久久福利 | 国产精品一区在线 | 亚洲三级视频 | 国产成人精品一区二三区四区五区 | 伊人久操| 欧美视频亚洲视频 | 成人免费在线观看视频 | 久久久精品高清 | 精品亚洲一区二区 | 操操操夜夜操 | 精品国产乱码久久久久久1区2区 | 玖玖免费| 国产第1页| 国产午夜视频 | 精品国产一区二区三区性色av | 亚洲一区二区三区四区五区午夜 | 久久性 | 日本中文字幕一区 | 久久综合狠狠综合久久 | 中文幕av一区二区三区佐山爱 | av成人免费 | 人人澡人人射 | 中文字幕国产一区 | 中文字幕在线观看 | 国产精品高潮呻吟久久a | 欧美精品网站 | 一区二区免费视频 |