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

时间:2012-05-30 16:40:24

标签: c++ windows wifi

我有这个:

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

我通过WlanGetAvailableNetworkList()函数获取有关网络的信息。

但是在这个信息中没有mac地址或频道。 怎么做到的?

2 个答案:

答案 0 :(得分:4)

我认为您要查找的信息位于WLAN_BSS_ENTRY结构中。

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

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

  

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


顺便说一下:我认为您不需要为WLAN_AVAILABLE_NETWORK_LIST结构分配缓冲区WlanAllocateMemory。 MSDN:

  

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

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

另请参阅example in msdn library(该页面底部)。

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

答案 1 :(得分:0)

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