WlanOpenHandle failed with error: 1220

文章讲述了在使用QT编程时遇到的WlanOpenHandle错误1220,原因是服务器句柄数量超出限制。解决方法是在适当位置添加WlanCloseHandle函数以关闭多余句柄。

在QT中调用WlanOpenHandle 时出现了1220这个错误

查阅官方文档,错误码为:

ERROR_REMOTE_SESSION_LIMIT_EXCEEDED

服务器发出的句柄过多。

意思大概是我开句柄太多了没关。

解决方案: 

在程序中适当的位置加上关闭句柄的操作即可

WlanCloseHandle(hClientHandle, nullptr);

void test_t() { setlocale(LC_ALL, "zh_ON.UTF-8"); //生成xml文件使用 XML_file xml; unsigned char ssid_name[] = "Redmi Note 13 Pro"; unsigned char keymaterial[] = "11111111"; unsigned char connection_type[11] = "ESS"; unsigned char connection_mode[11] = "auto"; unsigned char authentication[11] = "WPA2PSK"; unsigned char encryption[11] = "AES"; unsigned char useOnex[6] = "false"; unsigned char keytpye[21] = "passPhrase"; unsigned char _protected[6] = "false"; //以下可选 unsigned char autoSwitch[6] = "true"; unsigned char enableRandomization[6] = "true"; unsigned char randomizationSeed[51] = "123456"; unsigned char preference[3] = "5"; unsigned char cost[21] = "unrestricted"; xml.generate_xml(ssid_name, ssid_name, connection_type, connection_mode, authentication, encryption, useOnex, keytpye, _protected, keymaterial, autoSwitch, enableRandomization, randomizationSeed, NULL, NULL); DWORD dwMAXCLient = 2; //通过WlanOpenHandle();获取当前使用的 WLAN API 的版本 DWORD CurVersion = 0; //HANDLE应用使用句柄 HANDLE hClient = NULL; CoInitializeEx(NULL, COINIT_MULTITHREADED); //#include <wlanapi.h>来自 DWORD dwResult = WlanOpenHandle(dwMAXCLient, NULL, &CurVersion, &hClient); if (dwResult != ERROR_SUCCESS) { wprintf(L"WlanOpenHandle failed with error: %lu\n", dwResult); CoUninitialize(); return ; } PWLAN_INTERFACE_INFO_LIST pwlan_list = NULL; //可能hCLient是当前电脑的WiFi句柄 dwResult = WlanEnumInterfaces(hClient, NULL, &pwlan_list); if (dwResult != ERROR_SUCCESS) { wprintf(L"WlanEnumInterfaces 失败: 0x%08X\n", dwResult); WlanCloseHandle(hClient, NULL); CoUninitialize(); return ; } GUID interfaceGUID = pwlan_list->InterfaceInfo[0].InterfaceGuid; dwResult = WlanScan(hClient, &interfaceGUID, NULL, NULL, NULL); if (dwResult != ERROR_SUCCESS) { wprintf(L"接口 %d 扫描失败: 0x%08X\n", 0, dwResult); return ; } // 等待扫描完成 (5秒) Sleep(4); //获取扫描结果t PWLAN_BSS_LIST pBssList = NULL; dwResult = WlanGetNetworkBssList(hClient, &interfaceGUID, NULL, dot11_BSS_type_any, false, NULL, &pBssList); wprintf(L"\n接口 %d 发现 %d 个网络:\n", 0, pBssList->dwNumberOfItems); unsigned char t[] = "Redmi Note 13 Pro"; for (int i = 0;i < pBssList->dwNumberOfItems;++i) { PWLAN_BSS_ENTRY pBssEntry = &pBssList->wlanBssEntries[i]; if (!my_strcmp<unsigned char>(pBssEntry->dot11Ssid.ucSSID, t)) { continue; } //std::cout << t << '\n'; DWORD dwReason; WLAN_CONNECTION_PARAMETERS connParames; connParames.wlanConnectionMode = wlan_connection_mode_discovery_unsecure; connParames.strProfile = reinterpret_cast<const wchar_t*>(t); connParames.pDot11Ssid = &pBssEntry->dot11Ssid; connParames.pDesiredBssidList = NULL; connParames.dot11BssType = dot11_BSS_type_any; connParames.dwFlags = 0; //reinterpret_cast<const WCHAR*>(xml.get_xml()); DWORD dw =WlanSetProfile(hClient, &interfaceGUID, 0, reinterpret_cast<const WCHAR*>(xml.get_xml()), NULL, true, NULL, &dwReason); if (dw != ERROR_SUCCESS) { std::cout << "失败\n"; } dw=WlanConnect(&hClient, &interfaceGUID, &connParames, nullptr); if (dw != ERROR_SUCCESS) { std::cout << "lllllllll\n"; } } }
最新发布
10-29
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值