Добавление беспроводной точки доступа через Smart Device Framework - PullRequest
0 голосов
/ 23 сентября 2011

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

В общем, какова общая разница между пространством имен 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 Ответ

1 голос
/ 23 сентября 2011

История немного сбивает с толку, да. По сути, в 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 чипсет / адаптер вы используете?

...