如何在Win32 API C++中枚举网络适配器并获取其MAC地址?
这段代码应该有效:
{ 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; }