MAC地址获取

mac地址获取一般用于软件的IP绑定或加密等功能,一个电脑可能有多个网卡,使用不同的算法可以轻松获取网卡物理地址,而且地址是唯一不变的.

BOOL GetLocalAdaptersInfo(CStringArray& strIP)
{
	//IP_ADAPTER_INFO结构体
	PIP_ADAPTER_INFO pIpAdapterInfo = NULL;
	pIpAdapterInfo = new IP_ADAPTER_INFO;

	//结构体大小
	unsigned long ulSize = sizeof(IP_ADAPTER_INFO);

	//获取适配器信息
	int nRet = GetAdaptersInfo(pIpAdapterInfo,&ulSize);

	if (ERROR_BUFFER_OVERFLOW == nRet)
	{
		//空间不足,删除之前分配的空间
		delete []pIpAdapterInfo;

		//重新分配大小
		pIpAdapterInfo = (PIP_ADAPTER_INFO) new BYTE[ulSize];

		//获取适配器信息
		nRet = GetAdaptersInfo(pIpAdapterInfo,&ulSize);

		//获取失败
		if (ERROR_SUCCESS  != nRet)
		{
				if (pIpAdapterInfo != NULL)
			{
				delete []pIpAdapterInfo;
			}
			return FALSE;
		}
		}
//MAC 地址信息
	char szMacAddr[20];
	//赋值指针
	PIP_ADAPTER_INFO pIterater = pIpAdapterInfo;
	strIP.RemoveAll();
	while(pIterater)
	{
		macCount++;
		cout<<"网卡名称:"<<pIterater->AdapterName<<endl;

		cout<<"网卡描述:"<<pIterater->Description<<endl;

	sprintf_s(szMacAddr,20,"%02X-%02X-%02X-%02X-%02X-%02X",
			pIterater->Address[0],
			pIterater->Address[1],
			pIterater->Address[2],
			pIterater->Address[3],
			pIterater->Address[4],
			pIterater->Address[5]);
					strIP.Add((CString)szMacAddr);
	PIP_ADDR_STRING pIpAddr = &pIterater->IpAddressList;
		while (pIpAddr)
		{
			cout<<"IP地址:  "<<pIpAddr->IpAddress.String<<endl;
			cout<<"子网掩码:"<<pIpAddr->IpMask.String<<endl;

			//指向网关列表
			PIP_ADDR_STRING pGateAwayList = &pIterater->GatewayList;
			while(pGateAwayList)
			{
					pGateAwayList = pGateAwayList->Next;
			}
				pIpAddr = pIpAddr->Next;
		}
		}
			//清理
	if (pIpAdapterInfo)
	{
		delete []pIpAdapterInfo;
	}
		return TRUE;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值