WlanConnect(), как подключиться к беспроводной точке доступа и открыть ее

#c #wlanapi

#c #wlanapi

Вопрос:

для подключения к открытой точке доступа я заполняю структуру WLAN_CONNECTION_PARAMETERS, как показано ниже

 WLAN_CONNECTION_PARAMETERS ConnectionParameters;
ConnectionParameters.wlanConnectionMode = wlan_connection_mode_discovery_unsecure;
ConnectionParameters.strProfile         = L"";
ConnectionParameters.pDot11Ssid         = amp;Dot11Ssid;
ConnectionParameters.pDesiredBssidList  = nullptr;
ConnectionParameters.dot11BssType       = dot11_BSS_type_independent;
ConnectionParameters.dwFlags            = WLAN_CONNECTION_ADHOC_JOIN_ONLY;
 

WlanConnect() Функция возвращает ERROR_SUCCESS .

NotificationCallback() Функция выводит:

 wlan_notification_acm_connection_start
Currently connecting to "BT.03" using profile "BT.03" **// Correct**
WLAN_NOTIFICATION_SOURCE_ACM
**wlan_notification_acm_connection_attempt_fail**
The connection failed. wlanReasonCode:  163851
The reason is "La rete specificata non è disponibile."
 

Где ошибка?

У вас есть фрагмент кода для подключения к новой открытой беспроводной точке доступа с определенным ssid?

Комментарии:

1. Пожалуйста, опубликуйте код, который настраивает Dot11Ssid .

2. Ваш код говорит strProfile = L"" , но на вашем выходном дисплее написано «BT.03». Пожалуйста, опубликуйте свой фактический код или дайте понять, что вы скрываете секреты.

Ответ №1:

Документация для WLAN_CONNECTION_PARAMETERS состояний, которые strProfile должны быть установлены NULL при использовании wlan_connection_mode_discovery_unsecure , но ваш код устанавливает его L"" .

Если wlanConnectionMode установлено значение wlan_connection_mode_discovery_secure или wlan_connection_mode_discovery_unsecure , то strProfile должно быть установлено значение NULL .

Поэтому измените свой код на это:

 ConnectionParameters.strProfile = NULL;
 

Комментарии:

1. @DenisGottardello nullptr — это не то же самое, NULL что если бы. Win32 по-прежнему является C (не C ) API, поэтому всегда используйте NULL вместо nullptr при использовании Win32.

2. @DenisGottardello Просто отредактируйте свой первоначальный вопрос.

Ответ №2:

ConnectionParameters.strProfile= nullptr;

не решить.

Решение заключается в добавлении

 memset(amp;ConnectionParameters, 0, sizeof(WLAN_CONNECTION_PARAMETERS));