BOOL GetLocoalIPandMac(vector<MacIp> &macip)
{
CString myIP, myMAC;
bool bNetReady =false;
ULONG outBufLen = 0;
DWORD dwRetVal = 0;
PIP_ADAPTER_INFO pAadpterInfo;
PIP_ADAPTER_INFO pAadpterInfoTmp = NULL;
MacIp tmpmacip;
pAadpterInfo = (IP_ADAPTER_INFO*)GlobalAlloc(GMEM_ZEROINIT,sizeof(IP_ADAPTER_INFO));
if(GetAdaptersInfo(pAadpterInfo, &outBufLen) != ERROR_SUCCESS)
{
GlobalFree(pAadpterInfo);
pAadpterInfo = (IP_ADAPTER_INFO*)GlobalAlloc(GMEM_ZEROINIT, outBufLen);
}
if ((dwRetVal = GetAdaptersInfo(pAadpterInfo, &outBufLen)) == NO_ERROR)
{
pAadpterInfoTmp = pAadpterInfo;
myIP = "";
while(pAadpterInfoTmp)
{
if (pAadpterInfoTmp->Type == MIB_IF_TYPE_ETHERNET)
{
if (pAadpterInfoTmp->CurrentIpAddress)
{
myIP = pAadpterInfoTmp->CurrentIpAddress->IpAddress.String;
}
else
{
myIP = pAadpterInfoTmp->IpAddressList.IpAddress.String;
}
}
if (!myIP.IsEmpty() && (myIP.CompareNoCase(_T("0.0.0.0")) != 0))
{
bNetReady = true;
myMAC.Format(_T("%02X-%02X-%02X-%02X-%02X-%02X"),
pAadpterInfoTmp->Address[0],
pAadpterInfoTmp->Address[1],
pAadpterInfoTmp->Address[2],
pAadpterInfoTmp->Address[3],
pAadpterInfoTmp->Address[4],
pAadpterInfoTmp->Address[5]);
tmpmacip.ip = myIP;
tmpmacip.mac = myMAC;
macip.push_back(tmpmacip);
break;
}
pAadpterInfoTmp = pAadpterInfoTmp->Next;
}
}
GlobalFree(pAadpterInfo);
return bNetReady;
}
MFC 获取本地电脑的IP和MAC地址
最新推荐文章于 2022-10-28 16:00:27 发布