C语言获取windows系统mac列表

来源:互联网 发布:手机淘宝分销平台在哪 编辑:程序博客网 时间:2024/05/09 22:36

欢迎转载,但转载时请注明本博客出处: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;}

其中macNum是所获取到的系统MAC数量,MAC列表存放在macList中。


完整代码下载请猛戳右边红色→(下载)

0 0