如何使用本机 Wifi API C++获取 MAC 地址和信道信息



>我有这个:

WLAN_AVAILABLE_NETWORK_LIST *wlanNetworkList = (WLAN_AVAILABLE_NETWORK_LIST*)WlanAllocateMemory(sizeof(WLAN_AVAILABLE_NETWORK_LIST));

我得到有关带有WlanGetAvailableNetworkList()函数的网络的信息。

但是在此信息中没有MAC地址或频道。如何得到它?

我认为您正在寻找的信息在WLAN_BSS_ENTRY结构中。

由于一个网络可能有多个接入点,因此至少对我来说,一个网络没有一个 MAC 地址(

也考虑点对点网络)是有意义的,因此,MAC 地址不是网络属性的一部分(不是WLAN_AVAILABLE_NETWORK结构的数据成员)。

使用 WlanGetNetworkBssList(msdn 库条目),您可以获取特定网络(通过传递 SSID)或无线 LAN 接口的所有网络的 BSS 条目列表。请注意,此函数查询接入点:

为每个无线网络返回的信息列表还包含基础结构 BSS 网络的每个接入点或独立 BSS 网络(点对点网络)的网络对等方返回的信息元素列表。


顺便说一句:我认为您不需要为 WlanAllocateMemoryWLAN_AVAILABLE_NETWORK_LIST结构分配缓冲区.MSDN:

如果调用成功,则返回WLAN_AVAILABLE_NETWORK_LIST的缓冲区由 WlanGetAvailableNetworkList 函数分配。

但是,您必须通过 WlanFreeMemory 释放函数为列表分配的内存。

另请参阅 msdn 库中的示例(该页底部)。

编辑:这个例子有点令人困惑,有一个名为pBssList的变量,它的类型是PWLAN_AVAIBLE_NETWORK_LIST的,而不是PWLAN_BSS_LIST,顾名思义。

也许你会先尝试使用WlanScan。我尝试在汇编中编写WlanApi,goasm。我使用WlanGetNetworkBssList。一切正常,作为回报,我得到了 6 字节的 mac,但只有前 3 个与 Mac 我的路由器相同。我不明白为什么。也许我在 WlanApi.h 中写错了 sruct我还在学习 ASMWlanApi.h我的代码

最新更新