Note: disabled adapters will not be enumerated.

Source Code:

DWORD EnumNetworkAdapters()
{
    IP_ADAPTER_INFO* pAdapterList = NULL;
    IP_ADAPTER_INFO* pAdapter = NULL;
    ULONG ulBufLen = 0;
    DWORD err;

    err = ::GetAdaptersInfo(pAdapterList, &ulBufLen);
    if (err == ERROR_BUFFER_OVERFLOW)
    {
        pAdapterList = (IP_ADAPTER_INFO*) ::HeapAlloc(::GetProcessHeap(), HEAP_ZERO_MEMORY, ulBufLen);
        err = ::GetAdaptersInfo(pAdapterList, &ulBufLen);
    }
    else if (err != ERROR_SUCCESS)
    {
        return err;
    }

    if (pAdapterList == NULL)
    {
        return ERROR_BAD_ARGUMENTS;
    }

    pAdapter = pAdapterList;
    while (pAdapter != NULL) {
        cout << "-----------------------------------------------" << endl;
        cout << pAdapter->AdapterName << endl;
        cout << pAdapter->Description << endl;
        IP_ADDR_STRING *ipAddrString = &pAdapter->IpAddressList;
        while (ipAddrString != NULL) {
            cout << ipAddrString->IpAddress.String << endl;
            ipAddrString = ipAddrString->Next;
        }

        pAdapter = pAdapter->Next;
    }

    ::HeapFree(::GetProcessHeap(), 0, pAdapterList);
    return 0;
}

posted on 2012-07-05 14:27  YUVU  阅读(246)  评论(0编辑  收藏  举报