Пытаюсь подключится к уже обнаруженной сети (точке) через WlanConnect. Из справки следует, что для Windows XP SP2 c установленным Wireless LAN API можно подключится только к сети, внесенной в предпочитаемые сети (preferred network list). Сделать это можно, вызвав WlanSetProfile. Из справки: DWORD WINAPI WlanSetProfile( HANDLE hClientHandle, const GUID* pInterfaceGuid, DWORD dwFlags, LPCWSTR strProfileXml, LPCWSTR strAllUserProfileSecurity, BOOL bOverwrite, PVOID pReserved, DWORD* pdwReasonCode ); Все параметры здесь понятны кроме: LPCWSTR strProfileXml - содержит XML-представление профиля (Contains the XML representation of the profile). ВОПРОС: В каком виде нужно передавать XML-текст? В виде строки текста в памяти или нужно хитрым образом загружать XML-файл? Какой-нибудь простейший исходник в полном виде очень бы пригодился (поисковики не помогли) Пока выполнение WlanSetProfile выдает такую ошибку: ERROR_BAD_PROFILE 1206 The network connection profile is corrupted. Пробовал загружать в strProfileXml текст XML в памяти. pdwReasonCode при этом выдает ошибку WLAN_REASON_CODE_INVALID_PROFILE_SCHEMA. Сразу добавлю: оборудование работает нормально; функции WlanOpenHandle, WlanEnumInterfaces, WlanGetAvailableNetworkList дают результаты; операционка Windows XP SP2 Wireless LAN API (почти то же, что и SP3 для беспроводных сетей).
Замечательно... Главное правильно поставить вопрос. А там и сам разберешься. Что я и сделал. Такое ощущение, что подобную тему в интернете обсуждал только я и еще максимум десяток людей из англоязычных стран. Трудолюбиво отвечу сам на свой вопрос. Вдруг когда-то мне понадобится, а то и кому-то пригодится. Для правильной работы функции WlanSetProfile параметр strProfileXml должен адресоваться к строке с текстом формата XML. Для WinXP SP2 подходит такая: Код (Text): <?xml version="1.0"?> <WLANProfile xmlns="http://www.microsoft.com/networking/WLAN/profile/v1"> <name>DOT</name> <SSIDConfig> <SSID> <name>DOT</name> </SSID> </SSIDConfig> <connectionType>ESS</connectionType> <MSM> <security> <authEncryption> <authentication>open</authentication> <encryption>none</encryption> <useOneX>false</useOneX> </authEncryption> </security> </MSM> </WLANProfile> Примечание: <SSID><name>DOT</name></SSID>. DOT имя профиля (он же SSID точки), которое вносится в предпочтительные сети. Таким образом ошибка ERROR_BAD_PROFILE более не появляется. В меню "беспроводные сети" появится сеть "DOT" с автоматическим подключением. И скорее всего операционка подключит к ней Wifi-устройство автоматом. Если нет, то это сделает функция WlanConnect: // Код (Text): WLAN_CONNECTION_PARAMETERS ConnectP1; ConnectP1.wlanConnectionMode = wlan_connection_mode_profile; ConnectP1.strProfile=L"DOT"; ConnectP1.pDot11Ssid=0; ConnectP1.pDesiredBssidList=0; ConnectP1.dot11BssType = dot11BssType; // взять с подключаемой точки ConnectP1.dwFlags=0; WlanConnect (hClientHandle,&pInterfaceGuid, &ConnectP1, 0); (Пока для ассемблера библиотеки Wifi мной не найдены, поэтому все это воспроизводилось на Си). Но тема все-таки больше подходит для Win32, чем для Си.