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

Get the ip address of Windows wifi hosted network device in c++ (WLANAPI)

本文关键字:网络设备 地址 ip wifi Windows c++ WLANAPI 获取      更新时间:2023-10-16

我正在应用程序中添加创建wifi托管网络的功能。我终于得到了在Windows7sdk上运行的示例应用程序。

我没有发现的是一种内置的方式来获取用于创建托管网络的wifi设备的IP地址。我需要那个地址来绑定服务器。

我能想到的唯一方法可能是使用设备的MAC地址,并将其与机器上所有网络设备列表中的条目匹配?这是唯一的办法吗?既然wifi托管设备是虚拟的(根据文件),这还能起作用吗?

看起来有一种方法(WlanHostedNetworkQueryStatus)可以获得使用的无线局域网设备的MAC地址和GUID,但将其转换为实际IP地址的最佳方法让我无法…

我对C++和Windows开发还很陌生,所以也许我缺少一些简单的东西。

更新--

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

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

由于我使用Qt,我使用索引来获得QNetworkInterface,并从中获得IPv4地址。这比计算NotifyAddrChange或NotifyIpInterfaceChange更简单,尽管如果你只是使用Windows API,其中之一将是可行的。

WlanHostedNetworkQueryStatus函数返回一个具有成员IPDeviceIDWLAN_HOSTED_NETWORK_STATUS结构。该成员的文件规定:

This is member是虚拟无线设备的GUID,该设备无法通过调用WlanEnumInterfaces函数获得。此GUID可用于调用使用设备GUID的其他更高层网络功能(例如,IP Helper功能)。

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