我正在应用程序中添加创建 wifi 托管网络的功能。我终于得到了example app working from the Windows 7 sdk .
我没有找到一种内置方法来获取用于创建托管网络的 wifi 设备的 IP 地址。我需要该地址来将服务器绑定(bind)到它。
我能想到的唯一方法是使用设备的 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 地址。这比弄清楚 NotifyAddrChange 更简单或 NotifyIpInterfaceChange ,尽管如果您只是使用 Windows API,其中一种方法是可行的。
最佳答案
WlanHostedNetworkQueryStatus
函数返回 WLAN_HOSTED_NETWORK_STATUS
具有成员 IPDeviceID
的结构。该成员的文档指定:
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函数有函数ConvertInterfaceGuidToLuid
,这将为您提供一个 LUID
,您可以将其与该列表中的其他函数一起使用。
关于c++ - 在 C++ (WLANAPI) 中获取 Windows wifi 托管网络设备的 ip 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37621103/