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

Get the ip address of Windows wifi hosted network device in 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 to convert the WLAN GUID to LUID and then LUID to Index。包含的头文件有点烦人,因为大多数文档似乎都是针对设备驱动程序的。我需要的是。

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

因为我使用的是 Qt,所以我使用索引获取 QNetworkInterface,并从中获取 IPv4 地址。这比弄清楚 NotifyAddrChange or NotifyIpInterfaceChange 更简单,但如果您只是使用 Windows API.

,其中一个方法就是可行的方法

具有成员IPDeviceIDWlanHostedNetworkQueryStatus function returns a WLAN_HOSTED_NETWORK_STATUS结构。该成员的文档指定:

This is member is the GUID of a virtual wireless device which would not be available through calls to the WlanEnumInterfaces function. This GUID can be used for calling other higher layer networking functions that use the device GUID (IP Helper functions, for example).

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