首页 > 编程语言 > 详细

C语言获取windows系统mac列表

时间:2014-03-28 16:35:52      阅读:597      评论:0      收藏:0      [点我收藏+]

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

bubuko.com,布布扣

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

C语言获取windows系统mac列表,布布扣,bubuko.com

C语言获取windows系统mac列表

原文:http://blog.csdn.net/pingd/article/details/22397983

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!