コード例 #1
0
        private void OnHostedNetworkStateChange(WLAN_HOSTED_NETWORK_STATE WlanHnkState)
        {
            this?.Invoke(new Action(() =>
            {
                switch (WlanHnkState)
                {
                case WLAN_HOSTED_NETWORK_STATE.wlan_hosted_network_unavailable:
                    StatusLabel.Text = $"Status: Unavailable";
                    ShareButton.Text = "Share";
                    NetIList.Enabled = true;
                    break;

                case WLAN_HOSTED_NETWORK_STATE.wlan_hosted_network_idle:
                    StatusLabel.Text = $"Status: Idle";
                    ShareButton.Text = "Share";
                    NetIList.Enabled = true;
                    break;

                case WLAN_HOSTED_NETWORK_STATE.wlan_hosted_network_active:
                    StatusLabel.Text = $"Status: Active";
                    ShareButton.Text = "Stop";
                    NetIList.Enabled = NetIList.SelectedIndex >= 0 ? false : true;
                    break;
                }
            }));
        }
コード例 #2
0
        private void Init()
        {
            try {
                WlanUtils.Throw_On_Win32_Error(wlanapi.WlanOpenHandle(wlanapi.WLAN_CLIENT_VERSION_VISTA, IntPtr.Zero, out this._ServerVersion, ref this._WlanHandle));


                WLAN_NOTIFICATION_SOURCE notifSource;
                WlanUtils.Throw_On_Win32_Error(wlanapi.WlanRegisterNotification(this._WlanHandle, WLAN_NOTIFICATION_SOURCE.All, true, this._notificationCallback, IntPtr.Zero, IntPtr.Zero, out notifSource));


                WLAN_HOSTED_NETWORK_REASON failReason = this.InitSettings();
                if (failReason != WLAN_HOSTED_NETWORK_REASON.wlan_hosted_network_reason_success)
                {
                    throw new Exception("Init Error WlanHostedNetworkInitSettings: " + failReason.ToString());
                }

                //我加的
                var netStat = QueryStatus();
                _HostedNetworkState = netStat.HostedNetworkState;
                foreach (var i in netStat.PeerList)
                {
                    WlanStation station = new WlanStation(i);
                    _Stations[station.MacAddress] = station;
                }
            } catch {
                wlanapi.WlanCloseHandle(this._WlanHandle, IntPtr.Zero);
                throw;
            }
        }
コード例 #3
0
 protected void onHostedNetworkStarted()
 {
     this._HostedNetworkState = WLAN_HOSTED_NETWORK_STATE.wlan_hosted_network_active;
     if (this.HostedNetworkStarted != null)
     {
         this.HostedNetworkStarted(this, EventArgs.Empty);
     }
 }
コード例 #4
0
 protected void onHostedNetworkUnavailable()
 {
     this._HostedNetworkState = WLAN_HOSTED_NETWORK_STATE.wlan_hosted_network_unavailable;
     if (this.HostedNetworkUnavailable != null)
     {
         this.HostedNetworkUnavailable(this, EventArgs.Empty);
     }
 }
コード例 #5
0
        public WLAN_HOSTED_NETWORK_REASON StopUsing()
        {
            WLAN_HOSTED_NETWORK_REASON failReason;

            WlanUtils.Throw_On_Win32_Error(wlanapi.WlanHostedNetworkStopUsing(this._WlanHandle, out failReason, IntPtr.Zero));
            this._HostedNetworkState = WLAN_HOSTED_NETWORK_STATE.wlan_hosted_network_idle;
            return(failReason);
        }
コード例 #6
0
 protected void onHostedNetworkStarted()
 {
     this._HostedNetworkState = WLAN_HOSTED_NETWORK_STATE.wlan_hosted_network_active;
     if (this.HostedNetworkStarted != null)
     {
         this.HostedNetworkStarted(this, EventArgs.Empty);
     }
 }
コード例 #7
0
        protected void OnHostedNetworkAvailable()
        {
            _hostedNetworkState = WLAN_HOSTED_NETWORK_STATE.wlan_hosted_network_idle;

            if (HostedNetworkAvailable != null)
            {
                HostedNetworkAvailable(this, EventArgs.Empty);
            }
        }
コード例 #8
0
        public WLAN_HOSTED_NETWORK_REASON ForceStart()
        {
            WLAN_HOSTED_NETWORK_REASON failReason;

            WlanUtils.Throw_On_Win32_Error(WlanApi.WlanHostedNetworkForceStart(this._WlanHandle, out failReason, IntPtr.Zero));

            this._HostedNetworkState = WLAN_HOSTED_NETWORK_STATE.wlan_hosted_network_active;

            return(failReason);
        }
コード例 #9
0
        protected void onHostedNetworkStopped()
        {
            this._HostedNetworkState = WLAN_HOSTED_NETWORK_STATE.wlan_hosted_network_idle;
            _Stations.Clear();            //我加的

            if (this.HostedNetworkStopped != null)
            {
                this.HostedNetworkStopped(this, EventArgs.Empty);
            }
        }
コード例 #10
0
        public WLAN_HOSTED_NETWORK_REASON StopUsing()
        {
            WLAN_HOSTED_NETWORK_REASON failReason;

            WlanUtils.Throw_On_Win32_Error(wlanapi.WlanHostedNetworkStopUsing(_wlanHandle, out failReason, IntPtr.Zero));

            _hostedNetworkState = WLAN_HOSTED_NETWORK_STATE.wlan_hosted_network_idle;

            _stations.Clear();
            RaiseStationLeave();

            return(failReason);
        }
コード例 #11
0
        public WLAN_HOSTED_NETWORK_REASON StopUsing()
        {
            if (this._HostedNetworkState != WLAN_HOSTED_NETWORK_STATE.wlan_hosted_network_active)
            {
                this.onHostedNetworkAvailable();
                return(WLAN_HOSTED_NETWORK_REASON.wlan_hosted_network_reason_success);
            }
            WLAN_HOSTED_NETWORK_REASON failReason;

            WiFiUtils.Throw_On_Win32_Error(wlanapi.WlanHostedNetworkStopUsing(this._WlanHandle, out failReason, IntPtr.Zero));

            this._HostedNetworkState = WLAN_HOSTED_NETWORK_STATE.wlan_hosted_network_idle;

            return(failReason);
        }
コード例 #12
0
        public WLAN_HOSTED_NETWORK_REASON StartUsing()
        {
            if (this._HostedNetworkState == WLAN_HOSTED_NETWORK_STATE.wlan_hosted_network_active)
            {
                //         this.onHostedNetworkStarted();
                return(WLAN_HOSTED_NETWORK_REASON.wlan_hosted_network_reason_success);
            }
            Trace.TraceInformation("WiFi AdHoc Starting");
            WLAN_HOSTED_NETWORK_REASON failReason;

            WiFiUtils.Throw_On_Win32_Error(wlanapi.WlanHostedNetworkStartUsing(this._WlanHandle, out failReason, IntPtr.Zero));

            this._HostedNetworkState = WLAN_HOSTED_NETWORK_STATE.wlan_hosted_network_active;

            return(failReason);
        }
コード例 #13
0
 public WLAN_HOSTED_NETWORK_STATUS(IntPtr pStatus)
 {
     HostedNetworkState     = (WLAN_HOSTED_NETWORK_STATE)Marshal.ReadInt32(pStatus, 0);
     IPDeviceID             = (Guid)Marshal.PtrToStructure(new IntPtr(pStatus.ToInt64() + 4), typeof(Guid));
     wlanHostedNetworkBSSID = new byte[6];
     Marshal.Copy(new IntPtr(pStatus.ToInt64() + 4 + 16), wlanHostedNetworkBSSID, 0, 6);
     dot11PhyType       = (DOT11_PHY_TYPE)Marshal.ReadInt32(pStatus, 4 + 16 + 6 + 2); //pack 4
     ulChannelFrequency = (uint)Marshal.ReadInt32(pStatus, 4 + 16 + 6 + 2 + 4);
     dwNumberOfPeers    = (uint)Marshal.ReadInt32(pStatus, 4 + 16 + 6 + 2 + 4 + 4);
     PeerList           = new WLAN_HOSTED_NETWORK_PEER_STATE[dwNumberOfPeers];
     for (int i = 0; i < dwNumberOfPeers; i++)
     {
         IntPtr pPeerItem = new IntPtr(pStatus.ToInt64() + 4 + 16 + 6 + 2 + 4 + 4 + 4 + (i * WLAN_HOSTED_NETWORK_PEER_STATE_SIZE));
         PeerList[i] = (WLAN_HOSTED_NETWORK_PEER_STATE)Marshal.PtrToStructure(pPeerItem, typeof(WLAN_HOSTED_NETWORK_PEER_STATE));
     }
 }
コード例 #14
0
        public WLAN_HOSTED_NETWORK_REASON ForceStop()
        {
            switch (this._HostedNetworkState)
            {
            case WLAN_HOSTED_NETWORK_STATE.wlan_hosted_network_active:
                Trace.TraceInformation("WiFi AdHoc Stopping");
                WLAN_HOSTED_NETWORK_REASON failReason;
                WiFiUtils.Throw_On_Win32_Error(wlanapi.WlanHostedNetworkForceStop(this._WlanHandle, out failReason, IntPtr.Zero));
                this._HostedNetworkState = WLAN_HOSTED_NETWORK_STATE.wlan_hosted_network_idle;
                return(failReason);

            case WLAN_HOSTED_NETWORK_STATE.wlan_hosted_network_idle:
                //        this.onHostedNetworkAvailable();
                break;

            case WLAN_HOSTED_NETWORK_STATE.wlan_hosted_network_unavailable:
                //        this.onHostedNetworkUnavailable();
                break;
            }
            return(WLAN_HOSTED_NETWORK_REASON.wlan_hosted_network_reason_success);
        }
コード例 #15
0
ファイル: WlanManager.cs プロジェクト: mtx33q/virtualrouter
        protected void onHostedNetworkAvailable()
        {
            this._HostedNetworkState = WLAN_HOSTED_NETWORK_STATE.wlan_hosted_network_idle;

            if (this.HostedNetworkAvailable != null)
            {
                this.HostedNetworkAvailable(this, EventArgs.Empty);
            }
        }
コード例 #16
0
ファイル: WlanManager.cs プロジェクト: mtx33q/virtualrouter
        public WLAN_HOSTED_NETWORK_REASON StopUsing()
        {
            WLAN_HOSTED_NETWORK_REASON failReason;
            WlanUtils.Throw_On_Win32_Error(wlanapi.WlanHostedNetworkStopUsing(this._WlanHandle, out failReason, IntPtr.Zero));

            this._HostedNetworkState = WLAN_HOSTED_NETWORK_STATE.wlan_hosted_network_idle;

            return failReason;
        }