wince下获取mac地址的简单方法!

下,可以通过访问注册表获取mac地址,可是非常可惜的是有些系统的注册表不提供这个键值,另外也可以通过 DeviceIoControl这类函数获得,但是所有方法要么不全面,要么不够简单或者有些平台bsp包根本就不支持,我捉摸了一个比较通用的方法,通过SendArp函数来获得,下面是代码,用起来比较简单,查msdn,获得方法如下
  1. //   
  2. // Link with ws2_32.lib and iphlpapi.lib   
  3. //   
  4. #include <windows.h>   
  5. #include <stdio.h>   
  6. #include <tchar.h>   
  7. #include <iphlpapi.h>   
  8.   
  9. int __cdecl main()  
  10. {  
  11.     HRESULT hr;  
  12.     IPAddr  ipAddr;  
  13.     ULONG   pulMac[2];  
  14.     ULONG   ulLen;  
  15.     ipAddr = inet_addr ("192.168.25.31");//设备自身的ip  
  16.     memset (pulMac, 0xff, sizeof (pulMac));  
  17.     ulLen = 6;  
  18.       
  19.     hr = SendARP (ipAddr, 0, pulMac, &ulLen);  
  20.     printf ("Return %08x, length %8d/n", hr, ulLen);  
  21.       
  22.     size_t i, j;  
  23.     char * szMac = new char[ulLen*3];  
  24.     PBYTE pbHexMac = (PBYTE) pulMac;  
  25.     //   
  26.     // Convert the binary MAC address into human-readable  
  27.     //   
  28.     for (i = 0, j = 0; i < ulLen - 1; ++i) {  
  29.         j += sprintf (szMac + j, "%02X:", pbHexMac[i]);  
  30.     }  
  31.       
  32.     sprintf (szMac + j, "%02X", pbHexMac[i]);  
  33.     printf ("MAC address %s/n", szMac);  
  34.       
  35.     delete [] szMac;  
  36.     return 0;  
  37. }   

需要注意的是本机ip不能用环回地址,否则SendArp操作会失败

获得本机ip的方法很多,这里不列举,访问注册表即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值