通过智能设备框架添加无线接入点

时间:2011-09-23 16:14:40

标签: windows-ce wireless smart-device-framework

我有几个问题:

通常,智能设备框架中OpenNETCF.Net命名空间和OpenNETCF.Net.NetworkInformation命名空间之间的一般区别是什么?两者之间似乎有很多功能重叠。现在是否已弃用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在NetworkAdapter对象中返回false的问题有关。

有没有办法构建WirelessZeroConfigNetworkInterface对象,即使框架似乎认为它不是无线的?看起来功能就像NetworkAdapter对象的无线相关方法所证明的那样。

1 个答案:

答案 0 :(得分: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设置(例如旧的思科卡)。

您正在运行哪个版本的操作系统?您使用的是什么WiFi芯片组/适配器?