开发者

How to enumerate network adapters and get their MAC addresses in Win32 API C++?

How do 开发者_如何转开发I enumerate network adapters and get their MAC addresses in Win32 API C++?


This code should work:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜