欢迎转载,但转载时请注明本博客出处:http://blog.csdn.net/pingd/article/details/22397983,谢谢!
使用C语言获取windows操作系统MAC列表,包含实际存在的物理网卡以及虚拟网卡,话不多说,直接上代码:
//获取系统mac列表,每一个mac地址保存空间大小为18字节 //成功返回0,失败返回-1
int GetSysMac(int &macNum,char macList[][18]) { char mac[18] = { 0 }; //记录网卡数量 int netCardNum = 0; PIP_ADAPTER_INFO pIpAdapterInfo = (PIP_ADAPTER_INFO)malloc(sizeof(IP_ADAPTER_INFO)); unsigned long stSize = sizeof(IP_ADAPTER_INFO); int nRel = GetAdaptersInfo(pIpAdapterInfo,&stSize); if (ERROR_BUFFER_OVERFLOW == nRel) { free(pIpAdapterInfo); //重新申请内存 pIpAdapterInfo = (PIP_ADAPTER_INFO)malloc(stSize); nRel=GetAdaptersInfo(pIpAdapterInfo,&stSize); } if (ERROR_SUCCESS == nRel) { while (pIpAdapterInfo) { char temp[4] = { 0 }; for (DWORD i = 0; i < pIpAdapterInfo->AddressLength; i++) { if (i < pIpAdapterInfo->AddressLength-1) { sprintf(temp,"%02X:", pIpAdapterInfo->Address[i]); strcat(mac,temp); memset(temp,0,sizeof(temp)); } else { sprintf(temp,"%02X", pIpAdapterInfo->Address[i]); strcat(mac,temp); memset(temp,0,sizeof(temp)); } } memcpy(macList[netCardNum],mac,sizeof(mac)); memset(mac,0,sizeof(mac)); pIpAdapterInfo = pIpAdapterInfo->Next; netCardNum++; } } //释放内存空间 if (pIpAdapterInfo) { free (pIpAdapterInfo); } macNum = netCardNum; return 0; }
完整代码下载请猛戳右边红色→(下载)
C语言获取windows系统mac列表,布布扣,bubuko.com
原文:http://blog.csdn.net/pingd/article/details/22397983