Сбой WlanSetProfile из wlanapi.dll в Windows XP

Я создаю программу, которая сможет автоматически подключаться к беспроводной сети. Для этого я использую библиотеку ManagedWifi, в которой используется библиотека wlanapi.dll. Когда я пытаюсь использовать код в Windows Vista, все в порядке, но когда я использую его в Windows XP, происходит сбой. Я проверил, что на нем установлен Service Pack 3, а "wlanapi.dll" находится в Windows/system32. Проблема в том, что ManagedWifi вызывает этот метод:

[DllImport("wlanapi.dll")]
        public static extern int WlanSetProfile(
            [In] IntPtr clientHandle,
            [In, MarshalAs(UnmanagedType.LPStruct)] Guid interfaceGuid,
            [In] WlanProfileFlags flags,
            [In, MarshalAs(UnmanagedType.LPWStr)] string profileXml,
            [In, Optional, MarshalAs(UnmanagedType.LPWStr)] string allUserProfileSecurity,
            [In] bool overwrite,
            [In] IntPtr pReserved,
            [Out] out WlanReasonCode reasonCode);

Вы можете просмотреть описание этого метода здесь. Я получаю следующую ошибку: 1206 (ERROR_BAD_PROFILE). Как вы можете видеть на этой странице, это известная ошибка, и единственное, что мне нужно сделать, это загрузить и установить исправление. Ну, я сделал это, и ошибка все еще там. Профиль правильный, потому что я получаю его из вызова WlanGetProfile

Я просто хочу подключиться к сети, используя WlanConnect, но, как видно на странице функции: Windows XP с пакетом обновления 3 (SP3) и API беспроводной локальной сети для Windows XP с пакетом обновления 2 (SP2): вы можете использовать WlanConnect только для подключения к сетей в списке предпочтительных сетей. Чтобы добавить сеть в список предпочтительных сетей, вызовите WlanSetProfile.

Я действительно в отчаянии, я несколько дней боролся с этой ошибкой, и мне нужно пройти через это...

И, если я попытаюсь вызвать метод WlanConnect, не вызывая SetProfile, результат всегда один и тот же: он не подключается.

Я буду признателен за любую идею, которую вы можете предоставить.


person DarthRoman    schedule 01.12.2011    source источник


Ответы (1)


Существует выходной параметр WlanReasonCode, который должен сообщить вам, почему профиль недействителен. Это какая-то помощь?

С какой машины вы взяли профиль? IIRC XP поддерживает только часть профилей, поддерживаемых на более поздних платформах.

О, и я не знаю, можете ли вы WlanConnect к сети IBSS (ad-hoc) на XP.

person malloc    schedule 10.01.2012