在c ++(WLANAPI)中获取Windows wifi托管网络设备的IP地址

时间:2016-06-03 18:22:06

标签: c++ windows winapi visual-c++ wlanapi

我在应用中添加了创建wifi托管网络的功能。我终于得到了example app working from the Windows 7 sdk

我找不到的是获取用于创建托管网络的wifi设备的IP地址的内置方法。我需要该地址将服务器绑定到它。

我能想到这样做的唯一方法是使用设备的MAC地址并将其与机器上所有网络设备列表中的条目相匹配?这是唯一的方法吗?这甚至可以工作,因为wifi托管设备是虚拟的(根据文档)?

看起来有一种方法(WlanHostedNetworkQueryStatus)来获取所使用的wlan设备的MAC地址和GUID,但是将其转换为实际IP地址的最佳方式使我无法...

我对C ++和Windows开发很陌生,所以也许这是我想念的简单。

更新 -

我最终使用IP Helper API转换WLAN GUID to LUID,然后转换LUID to Index。包含的头文件有点烦人,因为大多数文档似乎都适合设备驱动程序。我需要的是。

#include <windows.h>
#include <wlanapi.h>
#include <iphlpapi.h>
#include <netioapi.h>

由于我正在使用Qt,我使用索引来获取QNetworkInterface,并从中获得了IPv4地址。这比找出NotifyAddrChangeNotifyIpInterfaceChange更简单,但如果您只是使用Windows API,那么其中一种方法就可以了。

1 个答案:

答案 0 :(得分:1)

WlanHostedNetworkQueryStatus函数返回具有成员IPDeviceID的{​​{3}}结构。该成员的文档指定:

  

这是成员是虚拟无线设备的GUID,通过调用WlanEnumInterfaces函数无法使用它。此GUID可用于调用使用设备GUID的其他更高层网络功能(例如,IP帮助程序功能)。

WLAN_HOSTED_NETWORK_STATUS函数有一个函数IP Helper,它将为您提供一个LUID,您可以将该函数与该列表中的其他函数一起使用。