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

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

我正在应用程序中添加创建 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/

相关文章:

mysql - 我在 mysqld.exe (Xampp) 中遇到高磁盘使用率

c++ - Win32API - 如何从进程句柄中获取进程的文件名?

windows - “程序没有响应”是什么意思?

c++ - 如何在类中有一个二维数组作为私有(private)变量,然后在构造函数中设置

c++ - 在从字符串流读取和写入自定义对象时测试失败

c++ - 大型3D阵列性能: contiguous 1D storage vs T***

python - 如何让py2exe内置版权信息

c# - msgpack 可以在 C# 中打包用户定义的对象,将包发送到 C++ 应用程序,然后在其中解包吗?

c++ - 如何使用 C++ 将 Windows 系统时钟设置为正确的本地时间?

c - 从子进程中获取父进程 ID