当前位置:  开发笔记 > 编程语言 > 正文

如何在Win32 API C++中枚举网络适配器并获取其MAC地址?

如何解决《如何在Win32APIC++中枚举网络适配器并获取其MAC地址?》经验,为你挑选了1个好方法。

如何在Win32 API C++中枚举网络适配器并获取其MAC地址?



1> Christopher..:

这段代码应该有效:

{
    ULONG outBufLen = 0;
    DWORD dwRetVal = 0;
    IP_ADAPTER_INFO* pAdapterInfos = (IP_ADAPTER_INFO*) malloc(sizeof(IP_ADAPTER_INFO));

    // retry up to 5 times, to get the adapter infos needed
    for( int i = 0; i < 5 && (dwRetVal == ERROR_BUFFER_OVERFLOW || dwRetVal == NO_ERROR); ++i )
    {
        dwRetVal = GetAdaptersInfo(pAdapterInfos, &outBufLen);
        if( dwRetVal == NO_ERROR )
        {
            break;
        }
        else if( dwRetVal == ERROR_BUFFER_OVERFLOW )
        {
            free(pAdapterInfos);
            pAdapterInfos = (IP_ADAPTER_INFO*) malloc(outBufLen);
        }
        else
        {
            pAdapterInfos = 0;
            break;
        }
    }
    if( dwRetVal == NO_ERROR )
    {
        IP_ADAPTER_INFO* pAdapterInfo = pAdapterInfos;
        while( pAdapterInfo )
        {
            IP_ADDR_STRING* pIpAddress = &(pAdapterInfo->IpAddressList);
            while( pIpAddress != 0 )
            {
                          // 
                          // <<<<
                          // here pAdapterInfo->Address should contain the MAC address
                          // >>>>
                          // 

                pIpAddress = pIpAddress->Next;
            }
            pAdapterInfo = pAdapterInfo->Next;
        }
    }
    free(pAdapterInfos);
    return false;
}

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有