2011-09-23 3 views
0

나는 몇 가지 질문이를 통해 무선는 AccessPoint 추가 : 일반적으로스마트 장치 프레임 워크

을의 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() 메서드에 의해 반환 된 객체는 내가 바라는대로 WirelessZeroConfigNetworkInterface 객체가 아닌 보통의 오래된 NetWorkInterface 객체입니다. 이것은 아마도 NetworkAdapter 개체에서 IsWireless가 false를 반환하는 문제와 관련이있을 것이라고 확신합니다.

WirelessZeroConfigNetworkInterface 개체를 구성하는 방법은 프레임 워크가 무선이 아니라고 생각하는 것 같습니다. 기능이 NetworkAdapter 오브젝트의 무선 관련 메소드에 의해 demostrated 된 것처럼 보입니다.

답변

1

역사가 약간 혼란 스럽습니다. 그렇습니다. 기본적으로 SDF 2.2 (또는 그 이전에는 더 이상 기억하지 않습니다)는 OpenNETCF.Net 네임 스페이스의 모든 것을 가지고있었습니다. 2.3에서 기능을 추가 할 때 전체 프레임 워크와 나란히있는 OpenNETCF.Net.NetworkInformation 네임 스페이스에 많은 양의 항목을 추가했습니다. 그 중 일부는 무선 작업에서 수행했던 작업과 기능적으로 겹치기 때문에 모든 것을 OpenNETCF.Net.NetworkInformation 네임 스페이스로 이동하기로 결정했습니다. 원본을두고 기존 배포에 익숙해 지도록 사용 중단 된 것으로 표시했습니다. 사용해야하는 항목은 OpenNETCF.Net.NetworkInformation 네임 스페이스의 항목입니다.

이제는 어떻게 작동하는지. 먼저 모든 네트워크 인터페이스에 대해 NDIS를 쿼리합니다. 이것은 우리에게 유선, RNDIS, 무선 등을 제공합니다. 기본적으로 네트워크 스택이 알고있는 모든 것입니다. 그러나 NDIS는 "무선"기능에 대해 많이 알지 못합니다.

알려진 어댑터 목록을 얻은 다음 NDIS에 무선 장치인지 묻습니다. 드라이버가 NDIS에 등록 할 때 알려주기 때문에 NDIS에 알려줄 수 있습니다.

무선 어댑터 목록을 얻은 후에는 걸어서 WZC 하위 시스템에 어댑터에 대해 알고 있는지 묻습니다. WZC는 무선 장치에 대한 모든 것을 아는 인터페이스로 공용 인터페이스를 통해 상호 작용할 수 있습니다. WZC가 그것에 대해 알면 (즉, 드라이버가 WZC로 초기화 될 때 자체적으로보고 함을 의미), WirelessZeroConfigNetworkInterface를 작성합니다. WZC에 알려지지 않았다면, 우리는 그것이 무선이라는 것을 알고 있습니다. (NDIS는 우리에게 그렇게 말한 것입니다.) 그러나 우리는 그것과 상호 작용하기위한 NDIS 방법만을 가지고 있습니다.

NDIS는 연결하는 방법을 제공하지 않습니다. 가까운 SSID를 요청하는 방법을 제공합니다. 가지고있는 어댑터 인터페이스는 우리가 알고있는 기능을 제공합니다.

경우에 따라 드라이버에 Wi-Fi 설정 (예 : 이전 Cisco 카드)을 조작하기위한 독점 API가 있습니다.

실행중인 OS의 버전은 무엇입니까? 어떤 WiFi 칩셋/어댑터를 사용하고 있습니까?

+0

ctacke, 지연된 응답은 유감스럽게 생각합니다. 귀하의 질문에 후속 조치를 취하기 전에 프로젝트가 취소되었습니다. 도움을 주셔서 감사합니다! – eoldre