300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > c语言 mac windows C语言获取windows系统mac列表

c语言 mac windows C语言获取windows系统mac列表

时间:2019-03-22 11:27:35

相关推荐

c语言 mac windows C语言获取windows系统mac列表

使用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中。

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。