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; } })); }
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; } }
protected void onHostedNetworkStarted() { this._HostedNetworkState = WLAN_HOSTED_NETWORK_STATE.wlan_hosted_network_active; if (this.HostedNetworkStarted != null) { this.HostedNetworkStarted(this, EventArgs.Empty); } }
protected void onHostedNetworkUnavailable() { this._HostedNetworkState = WLAN_HOSTED_NETWORK_STATE.wlan_hosted_network_unavailable; if (this.HostedNetworkUnavailable != null) { this.HostedNetworkUnavailable(this, EventArgs.Empty); } }
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); }
protected void OnHostedNetworkAvailable() { _hostedNetworkState = WLAN_HOSTED_NETWORK_STATE.wlan_hosted_network_idle; if (HostedNetworkAvailable != null) { HostedNetworkAvailable(this, EventArgs.Empty); } }
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); }
protected void onHostedNetworkStopped() { this._HostedNetworkState = WLAN_HOSTED_NETWORK_STATE.wlan_hosted_network_idle; _Stations.Clear(); //我加的 if (this.HostedNetworkStopped != null) { this.HostedNetworkStopped(this, EventArgs.Empty); } }
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); }
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); }
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); }
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)); } }
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); }
protected void onHostedNetworkAvailable() { this._HostedNetworkState = WLAN_HOSTED_NETWORK_STATE.wlan_hosted_network_idle; if (this.HostedNetworkAvailable != null) { this.HostedNetworkAvailable(this, EventArgs.Empty); } }
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; }