如何获得本地Wifi API C ++的MAC地址和频道信息

我有这个:

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

我用WlanGetAvailableNetworkList()函数获取有关networking的信息。

但在这个信息没有MAC地址或通道。 如何得到这个?

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

由于网络中可能有多个接入点,因此对我来说,至少对我来说,网络没有单个MAC地址(也可以考虑临时网络),因此MAC地址不是网络属性(不是WLAN_AVAILABLE_NETWORK结构的数据成员)。

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

为每个无线网络返回的信息列表还包含每个接入点为基础设施BSS网络或独立BSS网络(自组织网络)的网络对等体返回的信息元素的列表。


顺便说一下:我认为你不需要为WLAN_AVAILABLE_NETWORK_LISTWLAN_AVAILABLE_NETWORK_LIST结构分配一个缓冲区。 MSDN:

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

然而,你必须通过WlanFreeMemory释放函数为列表分配的内存。

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

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

也许你会先尝试使用WlanScan。 我尝试在汇编中写入WlanApi,呃。 我使用WlanGetNetworkBssList。 一切工作,作为回报,我得到6字节的Mac,但只有前3是像Mac一样的我的路由器。 我不明白为什么。 也许我写错了在WlanApi.h sruct我仍然在学习ASM WlanApi.h MyCode