Defines the Native Wifi API through P/Invoke interop.
This class is intended for internal use. Use the WlanCliient class instead.
コード例 #1
2
        private bool IsSentByCorrectNetworkInterface(Wlan.WlanNotificationData notificationData)
        {
            WlanClient.WlanInterface wifiInterface = GetInterfaceByInterfaceId(notificationData.interfaceGuid);
            if (wifiInterface == currentWifiInterface)
                return true;

            return false;
        }
コード例 #2
2
ファイル: WiFi.cs プロジェクト: cboseak/GUI
 static string GetStringForSSID(Wlan.Dot11Ssid ssid)
 {
     return Encoding.ASCII.GetString(ssid.SSID, 0, (int)ssid.SSIDLength);
 }
コード例 #3
2
ファイル: WlanApi.cs プロジェクト: StabilityofWT/MoSoWT
 /// <summary>
 /// Connects to a network defined by a connection parameters structure.
 /// </summary>
 /// <param name="connectionParams">The connection paramters.</param>
 protected void Connect(Wlan.WlanConnectionParameters connectionParams)
 {
     Wlan.ThrowIfError(
         Wlan.WlanConnect(client.clientHandle, info.interfaceGuid, ref connectionParams, IntPtr.Zero));
 }
コード例 #4
2
ファイル: WiFiConnect.cs プロジェクト: geexmmo/SmartConnect
        public void WlanEventHandler(Wlan.WlanNotificationData eventData)
        {
            switch (eventData.notificationSource)
            {
                case Wlan.WlanNotificationSource.ACM:
                    switch ((Wlan.WlanNotificationCodeAcm)eventData.notificationCode)
                    {
                        case Wlan.WlanNotificationCodeAcm.ConnectionAttemptFail:
                            log.Debug("ConnectionAttemptFail");
                            break;
                        case Wlan.WlanNotificationCodeAcm.ConnectionComplete:
                            log.Debug("ConnectionComplete");
                            break;
                        case Wlan.WlanNotificationCodeAcm.ConnectionStart:
                            state = WiFiState.Connecting;
                            updaterNetStatus.Update();
                            log.Debug("ConnectionStart");
                            break;
                        case Wlan.WlanNotificationCodeAcm.Disconnected:
                            state = WiFiState.Disconnected;
                            updaterNetStatus.Update();
                            log.Debug("ACM.Disconnected");
                            break;
                        case Wlan.WlanNotificationCodeAcm.Disconnecting:
                            state = WiFiState.Disconnecting;
                            updaterNetStatus.Update();
                            log.Debug("Disconnecting");
                            break;
                        case Wlan.WlanNotificationCodeAcm.InterfaceRemoval:
                            state = WiFiState.NoWirelessInterface;
                            updaterNetStatus.Update();
                            log.Debug("InterfaceRemoval");
                            break;

                    }
                    break;
                case Wlan.WlanNotificationSource.MSM:
                    switch ((Wlan.WlanNotificationCodeMsm)eventData.notificationCode)
                    {
                        case Wlan.WlanNotificationCodeMsm.AdapterOperationModeChange:
                            log.Debug("AdapterOperationModeChange");
                            break;
                        case Wlan.WlanNotificationCodeMsm.AdapterRemoval:
                           state = WiFiState.NoWirelessInterface;
                            updaterNetStatus.Update();
                            log.Debug("AdapterRemoval");
                            break;
                        case Wlan.WlanNotificationCodeMsm.SignalQualityChange:
                            log.Debug("SignalQualityChange");
                            break;
                        case Wlan.WlanNotificationCodeMsm.Associated:
                            log.Debug("Associated");
                            break;
                        case Wlan.WlanNotificationCodeMsm.Associating:
                            log.Debug("Associating");
                            break;
                        case Wlan.WlanNotificationCodeMsm.Authenticating:
                            log.Debug("Authenticating");
                            break;
                        case Wlan.WlanNotificationCodeMsm.Connected:
                            state = WiFiState.Connected;
                            updaterNetStatus.Update();
                            log.Debug("MSM.Connected");
                            break;
                        case Wlan.WlanNotificationCodeMsm.Disassociating:
                            log.Debug("Disassociating");
                            break;
                        case Wlan.WlanNotificationCodeMsm.Disconnected:
                            state = WiFiState.Disconnected;
                            updaterNetStatus.Update();
                            log.Debug("MSM.Disconnected");
                            break;
                    }
                    break;
            }
        }
コード例 #5
2
ファイル: WlanApi.cs プロジェクト: maurodx/netprofilesmod
        private void OnWlanNotification(ref Wlan.WlanNotificationData notifyData, IntPtr context)
        {
            WlanInterface wlanIface = ifaces.ContainsKey(notifyData.interfaceGuid) ? ifaces[notifyData.interfaceGuid] : null;

            switch(notifyData.notificationSource)
            {
                case Wlan.WlanNotificationSource.ACM:
                    switch((Wlan.WlanNotificationCodeAcm)notifyData.notificationCode)
                    {
                        case Wlan.WlanNotificationCodeAcm.ConnectionStart:
                        case Wlan.WlanNotificationCodeAcm.ConnectionComplete:
                        case Wlan.WlanNotificationCodeAcm.ConnectionAttemptFail:
                        case Wlan.WlanNotificationCodeAcm.Disconnecting:
                        case Wlan.WlanNotificationCodeAcm.Disconnected:
                            Wlan.WlanConnectionNotificationData? connNotifyData = ParseWlanConnectionNotification(ref notifyData);
                            if (connNotifyData.HasValue)
                                if (wlanIface != null)
                                    wlanIface.OnWlanConnection(notifyData, connNotifyData.Value);
                            break;
                        case Wlan.WlanNotificationCodeAcm.ScanFail:
                            {
                                //HACK: Prevents exception on WLAN connection: System.ArgumentException: Type 'NativeWifi.Wlan+WlanReasonCode' cannot be marshaled as an unmanaged structure; no meaningful size or offset can be computed.
                                int expectedSize = 0;//Marshal.SizeOf(typeof (Wlan.WlanReasonCode));
                                if (notifyData.dataSize >= expectedSize)
                                {
                                    Wlan.WlanReasonCode reasonCode = (Wlan.WlanReasonCode) Marshal.ReadInt32(notifyData.dataPtr);
                                    if (wlanIface != null)
                                        wlanIface.OnWlanReason(notifyData, reasonCode);
                                }
                            }
                            break;
                    }
                    break;
                case Wlan.WlanNotificationSource.MSM:
                    switch((Wlan.WlanNotificationCodeMsm)notifyData.notificationCode)
                    {
                        case Wlan.WlanNotificationCodeMsm.Associating:
                        case Wlan.WlanNotificationCodeMsm.Associated:
                        case Wlan.WlanNotificationCodeMsm.Authenticating:
                        case Wlan.WlanNotificationCodeMsm.Connected:
                        case Wlan.WlanNotificationCodeMsm.RoamingStart:
                        case Wlan.WlanNotificationCodeMsm.RoamingEnd:
                        case Wlan.WlanNotificationCodeMsm.Disassociating:
                        case Wlan.WlanNotificationCodeMsm.Disconnected:
                        case Wlan.WlanNotificationCodeMsm.PeerJoin:
                        case Wlan.WlanNotificationCodeMsm.PeerLeave:
                        case Wlan.WlanNotificationCodeMsm.AdapterRemoval:
                            Wlan.WlanConnectionNotificationData? connNotifyData = ParseWlanConnectionNotification(ref notifyData);
                            if (connNotifyData.HasValue)
                                if (wlanIface != null)
                                    wlanIface.OnWlanConnection(notifyData, connNotifyData.Value);
                            break;
                    }
                    break;
            }

            if (wlanIface != null)
                wlanIface.OnWlanNotification(notifyData);
        }
コード例 #6
2
ファイル: WlanApi.cs プロジェクト: StabilityofWT/MoSoWT
 /// <summary>
 /// Requests a connection (association) to the specified wireless network.
 /// </summary>
 /// <remarks>
 /// The method returns immediately. Progress is reported through the <see cref="WlanNotification"/> event.
 /// </remarks>
 public void Connect(Wlan.WlanConnectionMode connectionMode, Wlan.Dot11BssType bssType, string profile)
 {
     Wlan.WlanConnectionParameters connectionParams = new Wlan.WlanConnectionParameters();
     connectionParams.wlanConnectionMode = connectionMode;
     connectionParams.profile = profile;
     connectionParams.dot11BssType = bssType;
     connectionParams.flags = 0;
     Connect(connectionParams);
 }
コード例 #7
1
ファイル: Helper.cs プロジェクト: davinx/MediaPortal-2
    /// <summary>
    /// Create a valid Profile xml according to: http://msdn.microsoft.com/en-us/library/ms707381(v=VS.85).aspx
    /// </summary>
    /// <param name="ssid"></param>
    /// <param name="key"></param>
    /// <param name="authAlg"></param>
    /// <param name="encAlg"></param>
    /// <returns></returns>
    internal static string GetProfileXml(string ssid, string key, Wlan.Dot11AuthAlgorithm authAlg, Wlan.Dot11CipherAlgorithm encAlg)
    {
      WinProfileAuthenticationEnumeration? auth = null;
      WinProfileEncryptionEnumeration? enc = null;
      switch (authAlg)
      {
        case Wlan.Dot11AuthAlgorithm.IEEE80211_SharedKey:
          auth = WinProfileAuthenticationEnumeration.open;
          enc = WinProfileEncryptionEnumeration.WEP;
          break;
        case Wlan.Dot11AuthAlgorithm.WPA_PSK:
          auth = WinProfileAuthenticationEnumeration.WPAPSK;
          break;
        case Wlan.Dot11AuthAlgorithm.RSNA_PSK:
          auth = WinProfileAuthenticationEnumeration.WPA2PSK;
          break;
      }
      switch (encAlg)
      {
        case Wlan.Dot11CipherAlgorithm.TKIP:
          enc = WinProfileEncryptionEnumeration.TKIP;
          break;
        case Wlan.Dot11CipherAlgorithm.CCMP:
          enc = WinProfileEncryptionEnumeration.AES;
          break;
      }

      if (enc != null && auth != null)
      {
        return string.Format(@"<?xml version=""1.0""?>
<WLANProfile xmlns=""http://www.microsoft.com/networking/WLAN/profile/v1"">
	<name>{0}</name>
	<SSIDConfig>
		<SSID>
			<name>{0}</name>
		</SSID>
	</SSIDConfig>
	<connectionType>ESS</connectionType>
	<connectionMode>auto</connectionMode>
	<MSM>
		<security>
			<authEncryption>
				<authentication>{2}</authentication>
				<encryption>{3}</encryption>
				<useOneX>false</useOneX>
			</authEncryption>
			<sharedKey>
				<keyType>passPhrase</keyType>
				<protected>false</protected>
				<keyMaterial>{1}</keyMaterial>
			</sharedKey>
		</security>
	</MSM>
</WLANProfile>", ssid, key, auth.ToString(), enc.ToString());
      }
      else
      {
        return null;
      }
    }
コード例 #8
1
ファイル: EventHandler.cs プロジェクト: ATNoG/ODTONE
        public static void HandleLinkDown(Wlan.WlanNotificationData notifyData)
        {
            NativeWifi.WlanClient.WlanInterface wlanIface = null;// = GenericInfo.WlanInterface;
            foreach (NativeWifi.WlanClient.WlanInterface wli in Information.GenericInfo.ClientInstance.Interfaces)
                if (wli.InterfaceGuid == notifyData.interfaceGuid)
                    if (wli.NetworkInterface.GetPhysicalAddress().Equals(PhysicalAddress.Parse(Program.MAC.Replace(":", "-").ToUpper()))) //Event filtering
                        wlanIface = wli;

            if (wlanIface != null)
            {
                ConnectionHelper ch = Program.toMihf;
                ID myLinkID = new ID(new OctetString(GenericInfo.myID));
                ID mihfID = new ID(new OctetString(GenericInfo.mihfID));

                if (Subscriptions.List.Link_Down)
                    ch.Send(MessageBuilders.Link_Down_Indication_802_11_MsgBuilder(myLinkID, mihfID,
                        new String(Encoding.ASCII.GetChars(wlanIface.LatestConnection.wlanAssociationAttributes.dot11Ssid.SSID)),
                        wlanIface.LatestConnection.wlanAssociationAttributes.Dot11Bssid,
                        Link_Dn_Reason.ExplicitDisconnect).ByteValue);//TODO get reasons
            }
        }
コード例 #9
1
ファイル: WlanApi.cs プロジェクト: StabilityofWT/MoSoWT
 /// <summary>
 /// Gets a string that describes a specified reason code.
 /// </summary>
 /// <param name="reasonCode">The reason code.</param>
 /// <returns>The string.</returns>
 public string GetStringForReasonCode(Wlan.WlanReasonCode reasonCode)
 {
     StringBuilder sb = new StringBuilder(1024); // the 1024 size here is arbitrary; the WlanReasonCodeToString docs fail to specify a recommended size
     Wlan.ThrowIfError(
         Wlan.WlanReasonCodeToString(reasonCode, sb.Capacity, sb, IntPtr.Zero));
     return sb.ToString();
 }
コード例 #10
1
ファイル: WlanApi.cs プロジェクト: StabilityofWT/MoSoWT
        private void OnWlanNotification(ref Wlan.WlanNotificationData notifyData, IntPtr context)
        {
            WlanInterface wlanIface;
            ifaces.TryGetValue(notifyData.interfaceGuid, out wlanIface);

            switch (notifyData.notificationSource)
            {
                case Wlan.WlanNotificationSource.ACM:
                    switch ((Wlan.WlanNotificationCodeAcm)notifyData.notificationCode)
                    {
                        case Wlan.WlanNotificationCodeAcm.ConnectionStart:
                        case Wlan.WlanNotificationCodeAcm.ConnectionComplete:
                        case Wlan.WlanNotificationCodeAcm.ConnectionAttemptFail:
                        case Wlan.WlanNotificationCodeAcm.Disconnecting:
                        case Wlan.WlanNotificationCodeAcm.Disconnected:
                            Wlan.WlanConnectionNotificationData? connNotifyData = ParseWlanConnectionNotification(ref notifyData);
                            if (connNotifyData.HasValue)
                                if (wlanIface != null)
                                    wlanIface.OnWlanConnection(notifyData, connNotifyData.Value);
                            break;
                        case Wlan.WlanNotificationCodeAcm.ScanFail:
                            {
                                int expectedSize = Marshal.SizeOf(typeof(int));
                                if (notifyData.dataSize >= expectedSize)
                                {
                                    Wlan.WlanReasonCode reasonCode = (Wlan.WlanReasonCode)Marshal.ReadInt32(notifyData.dataPtr);
                                    if (wlanIface != null)
                                        wlanIface.OnWlanReason(notifyData, reasonCode);
                                }
                            }
                            break;
                    }
                    break;
                case Wlan.WlanNotificationSource.MSM:
                    switch ((Wlan.WlanNotificationCodeMsm)notifyData.notificationCode)
                    {
                        case Wlan.WlanNotificationCodeMsm.Associating:
                        case Wlan.WlanNotificationCodeMsm.Associated:
                        case Wlan.WlanNotificationCodeMsm.Authenticating:
                        case Wlan.WlanNotificationCodeMsm.Connected:
                        case Wlan.WlanNotificationCodeMsm.RoamingStart:
                        case Wlan.WlanNotificationCodeMsm.RoamingEnd:
                        case Wlan.WlanNotificationCodeMsm.Disassociating:
                        case Wlan.WlanNotificationCodeMsm.Disconnected:
                        case Wlan.WlanNotificationCodeMsm.PeerJoin:
                        case Wlan.WlanNotificationCodeMsm.PeerLeave:
                        case Wlan.WlanNotificationCodeMsm.AdapterRemoval:
                            Wlan.WlanConnectionNotificationData? connNotifyData = ParseWlanConnectionNotification(ref notifyData);
                            if (connNotifyData.HasValue)
                                if (wlanIface != null)
                                    wlanIface.OnWlanConnection(notifyData, connNotifyData.Value);
                            break;
                    }
                    break;
            }

            if (wlanIface != null)
                wlanIface.OnWlanNotification(notifyData);
        }
コード例 #11
1
ファイル: WlanApi.cs プロジェクト: StabilityofWT/MoSoWT
 internal void OnWlanNotification(Wlan.WlanNotificationData notifyData)
 {
     if (WlanNotification != null)
         WlanNotification(notifyData);
 }
コード例 #12
1
ファイル: WlanApi.cs プロジェクト: StabilityofWT/MoSoWT
            internal void OnWlanConnection(Wlan.WlanNotificationData notifyData, Wlan.WlanConnectionNotificationData connNotifyData)
            {
                if (WlanConnectionNotification != null)
                    WlanConnectionNotification(notifyData, connNotifyData);

                if (queueEvents)
                {
                    WlanConnectionNotificationEventData queuedEvent = new WlanConnectionNotificationEventData();
                    queuedEvent.notifyData = notifyData;
                    queuedEvent.connNotifyData = connNotifyData;
                    EnqueueEvent(queuedEvent);
                }
            }
コード例 #13
1
ファイル: WlanApi.cs プロジェクト: StabilityofWT/MoSoWT
 /// <summary>
 /// Connects to the specified wireless network.
 /// </summary>
 /// <remarks>
 /// The method returns immediately. Progress is reported through the <see cref="WlanNotification"/> event.
 /// </remarks>
 public void Connect(Wlan.WlanConnectionMode connectionMode, Wlan.Dot11BssType bssType, Wlan.Dot11Ssid ssid, Wlan.WlanConnectionFlags flags)
 {
     Wlan.WlanConnectionParameters connectionParams = new Wlan.WlanConnectionParameters();
     connectionParams.wlanConnectionMode = connectionMode;
     connectionParams.dot11SsidPtr = Marshal.AllocHGlobal(Marshal.SizeOf(ssid));
     Marshal.StructureToPtr(ssid, connectionParams.dot11SsidPtr, false);
     connectionParams.dot11BssType = bssType;
     connectionParams.flags = flags;
     Connect(connectionParams);
     Marshal.DestroyStructure(connectionParams.dot11SsidPtr, ssid.GetType());
     Marshal.FreeHGlobal(connectionParams.dot11SsidPtr);
 }
コード例 #14
1
        private void ProcessWifiNotificatioEvent(Wlan.WlanNotificationData notificationData)
        {
            if (currentState != DroneNetworkConnectionState.ScanningForNewNetworks)
                return;
            if (!IsSentByCorrectNetworkInterface(notificationData))
                return;

            if (notificationData.notificationCode == notificationCodeScanSuccessful)
            {
                DiscoverNetwork();
            }
            else if (notificationData.notificationCode == notificationCodeScanErroneous)
            {
                ScanCurrentNetworkInterface();
            }
        }
コード例 #15
1
ファイル: WlanApi.cs プロジェクト: StabilityofWT/MoSoWT
 /// <summary>
 /// Retrieves the basic service sets (BSS) list of the specified network.
 /// </summary>
 /// <param name="ssid">Specifies the SSID of the network from which the BSS list is requested.</param>
 /// <param name="bssType">Indicates the BSS type of the network.</param>
 /// <param name="securityEnabled">Indicates whether security is enabled on the network.</param>
 public Wlan.WlanBssEntry[] GetNetworkBssList(Wlan.Dot11Ssid ssid, Wlan.Dot11BssType bssType, bool securityEnabled)
 {
     IntPtr ssidPtr = Marshal.AllocHGlobal(Marshal.SizeOf(ssid));
     Marshal.StructureToPtr(ssid, ssidPtr, false);
     try
     {
         IntPtr bssListPtr;
         Wlan.ThrowIfError(
             Wlan.WlanGetNetworkBssList(client.clientHandle, info.interfaceGuid, ssidPtr, bssType, securityEnabled, IntPtr.Zero, out bssListPtr));
         try
         {
             return ConvertBssListPtr(bssListPtr);
         }
         finally
         {
             Wlan.WlanFreeMemory(bssListPtr);
         }
     }
     finally
     {
         Marshal.FreeHGlobal(ssidPtr);
     }
 }
コード例 #16
1
ファイル: WlanApi.cs プロジェクト: StabilityofWT/MoSoWT
 /// <summary>
 /// Connects (associates) to the specified wireless network, returning either on a success to connect
 /// or a failure.
 /// </summary>
 /// <param name="connectionMode"></param>
 /// <param name="bssType"></param>
 /// <param name="profile"></param>
 /// <param name="connectTimeout"></param>
 /// <returns></returns>
 public bool ConnectSynchronously(Wlan.WlanConnectionMode connectionMode, Wlan.Dot11BssType bssType, string profile, int connectTimeout)
 {
     queueEvents = true;
     try
     {
         Connect(connectionMode, bssType, profile);
         while (queueEvents && eventQueueFilled.WaitOne(connectTimeout, true))
         {
             lock (eventQueue)
             {
                 while (eventQueue.Count != 0)
                 {
                     object e = eventQueue.Dequeue();
                     if (e is WlanConnectionNotificationEventData)
                     {
                         WlanConnectionNotificationEventData wlanConnectionData = (WlanConnectionNotificationEventData)e;
                         // Check if the conditions are good to indicate either success or failure.
                         if (wlanConnectionData.notifyData.notificationSource == Wlan.WlanNotificationSource.ACM)
                         {
                             switch ((Wlan.WlanNotificationCodeAcm)wlanConnectionData.notifyData.notificationCode)
                             {
                                 case Wlan.WlanNotificationCodeAcm.ConnectionComplete:
                                     if (wlanConnectionData.connNotifyData.profileName == profile)
                                         return true;
                                     break;
                             }
                         }
                         break;
                     }
                 }
             }
         }
     }
     finally
     {
         queueEvents = false;
         eventQueue.Clear();
     }
     return false; // timeout expired and no "connection complete"
 }
コード例 #17
0
        void frmConnectWifiAdaptor_WlanNotification(Wlan.WlanNotificationData notifyData)
        {
            System.Diagnostics.Debug.WriteLine(notifyData.NotificationCode);
            int x = Convert.ToInt32(notifyData.NotificationCode);
            if (x == 7)
            {

            }    
        }
コード例 #18
0
ファイル: Network.cs プロジェクト: sailee/EnergyHub
 public Network(Wlan.WlanAvailableNetwork network)
 {
     profileName = network.profileName;
     dot11Ssid = Encoding.ASCII.GetString(network.dot11Ssid.SSID, 0, (int)network.dot11Ssid.SSIDLength);
     dot11BssType = network.dot11BssType.ToString();
     wlanNotConnectableReason = network.wlanNotConnectableReason.ToString();
     defaultAuthAlgorithm= network.dot11DefaultAuthAlgorithm.ToString();
     defaultCipherAlgo= network.dot11DefaultCipherAlgorithm.ToString();
     numberOfBssids = network.numberOfBssids;
     //numberOfPhyTypes = network.Dot11PhyTypes.GetLength(network);
     wlanSignalQuality = network.wlanSignalQuality;
     securityEnabled = network.securityEnabled;
     isConnectable = network.networkConnectable;
 }
コード例 #19
0
ファイル: Converter.cs プロジェクト: joshball/wifi-positioner
        /// <summary>
        /// converts the <c>WlanBssEntry</c> type into a readable MAC address
        /// </summary>
        /// <param name="bss">Wlan.WlanBssEntry</param>
        /// <returns>string</returns>
        public static string getBssid(Wlan.WlanBssEntry bss)
        {
            string bssid = "";

            for (int i = 0; i < bss.dot11Bssid.Length; i++)
            {
                if(i == bss.dot11Bssid.Length-1)
                    bssid += "" + hex[bss.dot11Bssid[i] / 16] + hex[bss.dot11Bssid[i] % 16] + "|";
                else
                    bssid += "" + hex[bss.dot11Bssid[i] / 16] + hex[bss.dot11Bssid[i] % 16] + ":";
            }

            return bssid;
        }
コード例 #20
0
        private void ProcessWifiConnectionEvent(Wlan.WlanNotificationData notificationData, Wlan.WlanConnectionNotificationData connectionData)
        {
            if (!IsSentByCorrectNetworkInterface(notificationData))
                return;

            String ssid = CurrentDroneNetworkSsid;
            if (ssid == null)
                return;

            if (ssid.StartsWith(droneNetworkIdentifierStart) && IsDroneNetworkConnected)
                ProcessNetworkConnected();       
        }
コード例 #21
0
ファイル: WlanApi.cs プロジェクト: StabilityofWT/MoSoWT
 /// <summary>
 /// Sets the profile.
 /// </summary>
 /// <param name="flags">The flags to set on the profile.</param>
 /// <param name="profileXml">The XML representation of the profile. On Windows XP SP 2, special care should be taken to adhere to its limitations.</param>
 /// <param name="overwrite">If a profile by the given name already exists, then specifies whether to overwrite it (if <c>true</c>) or return an error (if <c>false</c>).</param>
 /// <returns>The resulting code indicating a success or the reason why the profile wasn't valid.</returns>
 public Wlan.WlanReasonCode SetProfile(Wlan.WlanProfileFlags flags, string profileXml, bool overwrite)
 {
     Wlan.WlanReasonCode reasonCode;
     Wlan.ThrowIfError(
             Wlan.WlanSetProfile(client.clientHandle, info.interfaceGuid, flags, profileXml, null, overwrite, IntPtr.Zero, out reasonCode));
     return reasonCode;
 }
コード例 #22
0
 private void wlanInterface_WlanNotification(Wlan.WlanNotificationData notificationData)
 {
     ProcessWifiNotificatioEvent(notificationData);
 }
コード例 #23
0
ファイル: WlanApi.cs プロジェクト: StabilityofWT/MoSoWT
 internal void OnWlanReason(Wlan.WlanNotificationData notifyData, Wlan.WlanReasonCode reasonCode)
 {
     if (WlanReasonNotification != null)
         WlanReasonNotification(notifyData, reasonCode);
     if (queueEvents)
     {
         WlanReasonNotificationData queuedEvent = new WlanReasonNotificationData();
         queuedEvent.notifyData = notifyData;
         queuedEvent.reasonCode = reasonCode;
         EnqueueEvent(queuedEvent);
     }
 }
コード例 #24
0
 private void wlanInterface_WlanConnectionNotification(Wlan.WlanNotificationData notificationData, Wlan.WlanConnectionNotificationData connectionData)
 {
     ProcessWifiConnectionEvent(notificationData, connectionData);
 }
コード例 #25
0
ファイル: WlanApi.cs プロジェクト: StabilityofWT/MoSoWT
        private static Wlan.WlanConnectionNotificationData? ParseWlanConnectionNotification(ref Wlan.WlanNotificationData notifyData)
        {
            int expectedSize = Marshal.SizeOf(typeof(Wlan.WlanConnectionNotificationData));
            if (notifyData.dataSize < expectedSize)
                return null;

            Wlan.WlanConnectionNotificationData connNotifyData =
                (Wlan.WlanConnectionNotificationData)
                Marshal.PtrToStructure(notifyData.dataPtr, typeof(Wlan.WlanConnectionNotificationData));
            if (connNotifyData.wlanReasonCode == Wlan.WlanReasonCode.Success)
            {
                IntPtr profileXmlPtr = new IntPtr(
                    notifyData.dataPtr.ToInt64() +
                    Marshal.OffsetOf(typeof(Wlan.WlanConnectionNotificationData), "profileXml").ToInt64());
                connNotifyData.profileXml = Marshal.PtrToStringUni(profileXmlPtr);
            }

            return connNotifyData;
        }
コード例 #26
0
    void OnWlanNotification(Wlan.WlanNotificationData notifyData)
    {
      if (notifyData.notificationSource == Wlan.WlanNotificationSource.ACM)
      {
        if (_scanningNICs.Count > 0 && (notifyData.notificationCode == (int)Wlan.WlanNotificationCodeAcm.ScanComplete || notifyData.notificationCode == (int)Wlan.WlanNotificationCodeAcm.ScanFail))
        {
          _scanningNICs[notifyData.interfaceGuid].WlanNotification -= OnWlanNotification;
          _scanningNICs.Remove(notifyData.interfaceGuid);
          if (_scanningNICs.Count <= 0)
          {
            if (StateChanged != null)
              StateChanged();

            WifiConnectionMessaging.SendWifiConnectionMessage(WifiConnectionMessaging.MessageType.ScanCompleted);
          }
        }
      }
    }
コード例 #27
0
ファイル: WlanApi.cs プロジェクト: StabilityofWT/MoSoWT
 internal WlanInterface(WlanClient client, Wlan.WlanInterfaceInfo info)
 {
     this.client = client;
     this.info = info;
 }
コード例 #28
0
ファイル: WlanApi.cs プロジェクト: StabilityofWT/MoSoWT
 /// <summary>
 /// Gets a parameter of the interface whose data type is <see cref="int"/>.
 /// </summary>
 /// <param name="opCode">The opcode of the parameter.</param>
 /// <returns>The integer value.</returns>
 private int GetInterfaceInt(Wlan.WlanIntfOpcode opCode)
 {
     IntPtr valuePtr;
     int valueSize;
     Wlan.WlanOpcodeValueType opcodeValueType;
     Wlan.ThrowIfError(
         Wlan.WlanQueryInterface(client.clientHandle, info.interfaceGuid, opCode, IntPtr.Zero, out valueSize, out valuePtr, out opcodeValueType));
     try
     {
         return Marshal.ReadInt32(valuePtr);
     }
     finally
     {
         Wlan.WlanFreeMemory(valuePtr);
     }
 }
コード例 #29
0
ファイル: WlanApi.cs プロジェクト: StabilityofWT/MoSoWT
 /// <summary>
 /// Sets a parameter of the interface whose data type is <see cref="int"/>.
 /// </summary>
 /// <param name="opCode">The opcode of the parameter.</param>
 /// <param name="value">The value to set.</param>
 private void SetInterfaceInt(Wlan.WlanIntfOpcode opCode, int value)
 {
     IntPtr valuePtr = Marshal.AllocHGlobal(sizeof(int));
     Marshal.WriteInt32(valuePtr, value);
     try
     {
         Wlan.ThrowIfError(
             Wlan.WlanSetInterface(client.clientHandle, info.interfaceGuid, opCode, sizeof(int), valuePtr, IntPtr.Zero));
     }
     finally
     {
         Marshal.FreeHGlobal(valuePtr);
     }
 }
コード例 #30
0
ファイル: WlanApi.cs プロジェクト: StabilityofWT/MoSoWT
 /// <summary>
 /// Retrieves the list of available networks.
 /// </summary>
 /// <param name="flags">Controls the type of networks returned.</param>
 /// <returns>A list of the available networks.</returns>
 public Wlan.WlanAvailableNetwork[] GetAvailableNetworkList(Wlan.WlanGetAvailableNetworkFlags flags)
 {
     IntPtr availNetListPtr;
     Wlan.ThrowIfError(
         Wlan.WlanGetAvailableNetworkList(client.clientHandle, info.interfaceGuid, flags, IntPtr.Zero, out availNetListPtr));
     try
     {
         return ConvertAvailableNetworkListPtr(availNetListPtr);
     }
     finally
     {
         Wlan.WlanFreeMemory(availNetListPtr);
     }
 }