获取本机MAC地址
2014-10-15 11:04
155 查看
主要还是参考MSDN关于IP_ADAPTER_INFO的描述:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa366062%28v=vs.85%29.aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/aa366062%28v=vs.85%29.aspx
#include <winsock2.h> #include <iphlpapi.h> #include <stdio.h> #include <stdlib.h> #pragma comment(lib, "IPHLPAPI.lib") #define MALLOC(x) HeapAlloc(GetProcessHeap(), 0, (x)) #define FREE(x) HeapFree(GetProcessHeap(), 0, (x)) int GetMacAddress(char *pMacAddr) { unsigned char pMac[6]; PIP_ADAPTER_INFO pAdapterInfo = NULL; ULONG uLong = sizeof (IP_ADAPTER_INFO); int ret = -1; ULONG ulOutBufLen = sizeof (IP_ADAPTER_INFO); pAdapterInfo = (IP_ADAPTER_INFO *) MALLOC(sizeof (IP_ADAPTER_INFO)); if (pAdapterInfo == NULL) { TRACE("Error allocating memory needed to call GetAdaptersinfo\n"); return 1; } // Make an initial call to GetAdaptersInfo to get // the necessary size into the ulOutBufLen variable if (GetAdaptersInfo(pAdapterInfo, &ulOutBufLen) == ERROR_BUFFER_OVERFLOW) { FREE(pAdapterInfo); pAdapterInfo = (IP_ADAPTER_INFO *) MALLOC(ulOutBufLen); if (pAdapterInfo == NULL) { TRACE("Error allocating memory needed to call GetAdaptersinfo\n"); return 1; } } if (GetAdaptersInfo(pAdapterInfo, &ulOutBufLen) != NO_ERROR) { goto EXIT; } if(NULL == pAdapterInfo) { goto EXIT; } ret = 0; sprintf(pMacAddr, "%02X:%02X:%02X:%02X:%02X:%02X", pAdapterInfo->Address[0], pAdapterInfo->Address[1], pAdapterInfo->Address[2], pAdapterInfo->Address[3], pAdapterInfo->Address[4], pAdapterInfo->Address[5]); EXIT: if (NULL != pAdapterInfo) { FREE(pAdapterInfo); } return ret; }
相关文章推荐
- ASP获取客户端MAC地址
- 怎样获取本地机器的MAC地址
- 获取Mac地址
- java简单的获取windows系统网卡mac地址
- [译]获取系统网络MAC地址的三种方法
- VC学习资料收集(25):获取硬盘ID信息及网卡MAC地址的代码
- 网卡MAC地址相关信息大全-4 获取远程网卡MAC地址
- C#获取本地计算机名IP,Mac地址
- C#获取本地计算机名IP,Mac地址
- 网卡MAC地址相关信息大全-2 获取网卡MAC的3个方法
- 如何获取本机所有MAC地址
- 获取同网段其它机器的Mac地址
- Linux 下获取LAN中指定IP的网卡的MAC(物理地址)
- C#调用WMI获取本机MAC地址列表。
- C#获取本地计算机名,IP,MAC(物理)地址
- 获取指定IP的终端的MAC地址
- 获取MAC地址
- 如何用ASP来获取网卡的MAC地址
- 如何获取客户端MAC地址
- 利用windows内置的控件获取客户端网卡MAC地址