GetAdaptersAddresses获取适配器信息

教材上面的知识总是慢上几拍。

用于获取适配器信息的GetAdaptersInfo函数已经不是推荐函数。

在Windows Xp及以上的操作系统中推荐使用GetAdaptersAddresses。

 

我们先来看看函数原型:

ULONG WINAPI GetAdaptersAddresses(
  __in          ULONG Family,
  __in          ULONG Flags,
  __in          PVOID Reserved,
  __in_out      PIP_ADAPTER_ADDRESSES AdapterAddresses,
  __in_out      PULONG SizePointer
);

 

参考资料:

GetAdaptersAddresses function
http://msdn.microsoft.com/en-us/library/windows/desktop/aa365915(v=vs.85).aspx

 

在使用过程中有一点需要注意:

由于GetAdaptersAddresses函数获取数据是通过复制内存到指定堆的方式,  而适配器数量为一个不确定值,导致堆的大小不为确定值。  所以第一次运行改函数时,仅获取需要申请的堆的大小, 并返回ERROR_BUFFER_OVERFLOW值。因此,获取适配器信息该函数至少需要运行两次。 如果数据正常填充,在第二次填充数据时,由于pAdapterAddresses所指向的内存堆空间已申请, 将不再返回ERROR_BUFFER_OVERFLOW值这时跳出循环即可获取到所需数据。

 

 

参考源码:点击下载

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值