Добавление беспроводной точки доступа через Smart Device Framework

У меня есть пара вопросов:

В общем, какова общая разница между OpenNETCF.Net пространство имен и OpenNETCF.Net.NetworkInformation пространство имен в Smart Device Framework? Кажется, что между ними много общего. Это OpenNETCF.Net пространство имен теперь устарело в пользу пространства имен NetworkInformation?

Точнее, у меня есть устройство с беспроводным адаптером. Моя цель - иметь возможность запрашивать близлежащие точки доступа, а затем подключаться к ним через мой собственный пользовательский интерфейс.

OpenNETCF.Net.Networking.GetAdapters()[1] дает мне мой объект адаптера, представляющий беспроводной адаптер. Несмотря на то, что это беспроводной адаптер, IsWireless и IsWirelessZeroConfigCompatible оба возвращают значение false. Однако NearbyAccessPoints возвращает список ближайших точек доступа, как и следовало ожидать от беспроводного адаптера.

Мне нужен способ добавить одну из обнаруженных точек доступа в коллекцию PreferredAccessPoints. Я не нашел способ сделать это в течение OpenNETCF.Net Пространство имен. Я нашел единственный способ добавить AccessPoint через AddPreferredNetwork() метод OpenNETCF.Net.NetworkInformation.WirelessZeroConfigNetworkInterface учебный класс. Проблема в том, что я не смог найти способ получить WirelessZeroConfigNetworkInterface объект. Объект, возвращаемый NetworkInterface.GetAllNetworkInterfaces() Метод это просто старый объект NetWorkInterface, а не WirelessZeroConfigNetworkInterface возражать, как я надеялся. Я уверен, что это, вероятно, связано с проблемой, когда IsWireless возвращает false в NetworkAdapter объект.

Есть ли способ построить WirelessZeroConfigNetworkInterface объект, даже если кажется, что фреймворк не беспроводной? Похоже, что функциональность там как продемонстрирована беспроводными методами NetworkAdapter объект.

1 ответ

Да, история немного запутанная. В основном в SDF 2.2 (или более ранней, я уже не помню) было все в пространстве имен OpenNETCF.Net. Когда я добавлял функции в 2.3, я добавил множество вещей в пространство имен OpenNETCF.Net.NetworkInformation, которое было параллельно с полной структурой. Некоторые из них имели функциональное совпадение с тем, что мы делали в беспроводных технологиях, поэтому я принял решение перенести все в пространство имен OpenNETCF.Net.NetworkInformation. Я оставил оригиналы и отметил их как устаревшие, чтобы попытаться быть дружественными к существующим развертываниям. Элементы, которые вы должны использовать, находятся в пространстве имен OpenNETCF.Net.NetworkInformation.

Теперь о том, как работает материал. Сначала мы запрашиваем NDIS для всех сетевых интерфейсов. Это дает нам проводную, RNDIS, беспроводную связь и т. Д. - в основном все, что знает сетевой стек. NDIS, однако, мало что знает о "беспроводных" вещах - хотя некоторые знают.

Получив список известных адаптеров, мы спрашиваем NDIS, является ли оно беспроводным устройством, - оно может, по крайней мере, сказать нам, что драйвер сообщает NDIS при регистрации.

Получив список беспроводных адаптеров, мы просматриваем их и спрашиваем подсистему WZC, знает ли она об адаптере. WZC - это интерфейс, который знает все о беспроводных устройствах, что позволяет нам взаимодействовать с ним через общий опубликованный интерфейс. Если WZC знает об этом (имеется в виду, что драйвер сообщил о себе при инициализации в WZC), то мы создадим для него WirelessZeroConfigNetworkInterface. Если WZC не знает об этом, то мы знаем, что он беспроводной (NDIS сказал нам, что это так), но у нас есть только методы NDIS для взаимодействия с ним.

NDIS не дает нам возможность общаться. Это дает нам возможность запросить близлежащие идентификаторы SSID. Интерфейс адаптера, который у вас есть, раскрывает возможности, о которых мы знаем.

В некоторых случаях драйвер имеет собственный API для управления настройками WiFi (например, старые карты Cisco).

На какой версии ОС вы работаете? Какой WiFi чипсет / адаптер вы используете?

Другие вопросы по тегам