我有一些代码可以成功迭代Wi-Fi网络列表,并提供有关可用网络的反馈。这里显示的基本通话...从连接管理器获取Wi-Fi连接状态
WlanOpenHandle(WLAN_API_VERSION, NULL, &dwVersion, &hSession);
PWLAN_INTERFACE_INFO_LIST pInterfaceInfoList = NULL;
WlanEnumInterfaces(hSession, NULL, &pInterfaceInfoList);
for(int i ...)
{
PWLAN_AVAILABLE_NETWORK_LIST pAvailableNetworkList = NULL;
WlanGetAvailableNetworkList(hSession, &interfaceGUID,
WLAN_AVAILABLE_NETWORK_INCLUDE_ALL_ADHOC_PROFILES |
WLAN_AVAILABLE_NETWORK_INCLUDE_ALL_MANUAL_HIDDEN_PROFILES,
NULL, &pAvailableNetworkList);
for(int j ...)
{
WLAN_AVAILABLE_NETWORK network = pAvailableNetworkList->Network[j];
:
}
}
这一切工作正常,而内环内,我能够访问所有我需要的属性,如信号强度,安全标志等通过的网络数据结构。我不是能获得
的一件事是关于信息的连接状态,如验证或AUTHENTICATION_FAILED,等等,所以我试图引进如下环路内的另一个电话...
CM_CONNECTION_DETAILS connectionDetails;
memset(&connectionDetails, 0, sizeof(CM_CONNECTION_DETAILS));
connectionDetails.Version = CM_CURRENT_VERSION;
const char* ccp = reinterpret_cast<const char*>(network.dot11Ssid.ucSSID);
mbstowcs(connectionDetails.szName, &ccp[0], network.dot11Ssid.uSSIDLength);
DWORD dwCount = sizeof(CM_CONNECTION_DETAILS);
CM_RESULT cmr = CmGetConnectionDetailsByName(connectionDetails.szName,
&connectionDetails, &dwCount);
if (cmr == CMRE_SUCCESS)
{
:
}
在调用CmGetConnectionDetailsByName()函数后,CM_CONNECTION_DETAILS结构中的详细信息看起来是正确的(名称和版本),但该函数返回CMRE_INVALID_CONNECTION并且结构未被填充。
我一直没有找到任何这个调用成功的例子(只有几个引用返回相同的CMRE_INVALID_CONNECTION代码的调用)。
有没有人有任何成功使用呼叫的经验,或者提出一个更好的方法来找出网络的连接状态(即如果AUTHENTICATION正在进行或者如果AUTHENTICATION失败等)?
[我使用Visual Studio 2013 C++(原生Windows应用程序,而不是MFC),目标是32位和Unicode,在Windows上运行的紧凑2013]