如何获得相同的MAC地址?

Joh*_*ohn 5 c c++ winapi

我使用以下代码获取MAC地址:

IP_ADAPTER_INFO adpInfo[16];
DWORD len = sizeof(adpInfo);
GetAdaptersInfo(adpInfo, &len );
printf("%02x%02x%02x%02x%02x%02x", adpInfo[0].Address[0], adpInfo[0].Address[1], adpInfo[0].Address[2], adpInfo[0].Address[3], adpInfo[0].Address[4], adpInfo[0].Address[5]);
Run Code Online (Sandbox Code Playgroud)

但是,如果计算机有许多网络适配器(例如:以太网和WiFi),那么每次调用此代码时,我都会获得不同的MAC地址.

有没有办法始终获得相同的MAC地址(例如:以太网).

Cir*_*ini 3

由于 GetAdaptersInfo 方法包含几乎与IPCONFIG /ALL一样多的信息(包括 DHCP 服务器、网关、IP 地址列表、子网掩码和 WINS 服务器),因此您可以使用它。它还枚举 PC 上的所有 NIC,即使它们未连接到有效网络(但 NIC 必须在 Windows 中“启用”)

样例,打印所有接口:

static void GetMACaddress(void)
{
  IP_ADAPTER_INFO AdapterInfo[16];

  DWORD dwBufLen = sizeof(AdapterInfo);

  DWORD dwStatus = GetAdaptersInfo(AdapterInfo, &dwBufLen);

  assert(dwStatus == ERROR_SUCCESS);

  PIP_ADAPTER_INFO pAdapterInfo = AdapterInfo;

  do {
    PrintMACaddress(pAdapterInfo->Address);
    pAdapterInfo = pAdapterInfo->Next;
  }
  while(pAdapterInfo);
}
Run Code Online (Sandbox Code Playgroud)

您可以保存AdapterName,然后在下次调用中进行比较,以确保检索到指定适配器的 MAC。

查看此处的IP_ADAPTER_INFO结构:https://msdn.microsoft.com/en-us/library/windows/desktop/aa366062%28v=vs.85%29.aspx

代码来自:http://www.codeguru.com/cpp/in/network/networkinformation/article.php/c5451/Three-ways-to-get-your-MAC-address.htm