Можно ли сбросить интервал обновления уровня сигнала Windows Native Wifi?

Я пишу библиотеку классов .Net для подключения к определенной сети Wi-Fi, имя которой известно заранее, когда уровень сигнала превышает определенный порог.

Все работает прекрасно, ЗА ИСКЛЮЧЕНИЕМ того, что производительность немного неравномерна. У меня есть поток опроса, который неоднократно вызывает WlanGetAvailableNetworks(). Этот цикл работает хорошо — WLanGetAvailableNetworks() обычно занимает всего 10–20 мс. ОДНАКО, атрибут уровня сигнала в структуре WLAN_AVAILALBLE_NETWORK, по-видимому, требует много времени для обновления. Я видел, что для регистрации обновленного значения требуется до 100 секунд при перемещении в область с известным уровнем сигнала.

Я нашел загадочные ссылки на интервал обновления, включая эту, от парня, который внедрил генератор NETSH: http://www.codeproject.com/KB/gadgets/WifiScanner.aspx?msg=3031431

Но я не нашел никого, кто задавался бы этим конкретным вопросом: можно ли настроить интервал обновления для уровня сигнала и других параметров сети в Native Wifi API?

Или я упустил еще одну полезную концепцию? (Я полный нуб, что касается Wi-Fi).

Возможно актуальная информация об окружающей среде: -- .Net 3.5 -- Исправление XP plus KB для WlanApi -- C#/VS 2008 (доступны версии 4.0 и VS2010)

thanks --
Carl

person Carl Niedner    schedule 09.09.2010    source источник


Ответы (1)


Упс. Я пропустил это в документации WLANAPI: WlanScan()! Вызовите это перед WlanGetAvailableNetworks(), чтобы убедиться, что WlanGetAvailableNetworks() возвращает более или менее актуальную информацию. Согласно документу (http://msdn.microsoft.com/en-us/library/ms706783(VS.85).aspx), WlanScan() завершается немедленно и запускает асинхронное сканирование.

Эмпирически кажется, что следующий WlanGetAvailableNetworks() останавливается до завершения сканирования (3,085 секунды, +/- 0,031 секунды, в моем тестировании). Итак, как указывает документ, вы не хотите делать это где-либо, что приведет к снижению производительности. Кроме того, три секунды, вероятно, являются наилучшим временным разрешением для проверки сигнала Wi-Fi, по крайней мере, на XP (Vista и 7 версии WLANAPI поддерживают односетевое WlanScan(), которое может выполняться быстрее).

Проблема решена, более-менее.

person Carl Niedner    schedule 09.09.2010