private void setNetworkSettings(string ssid, int maxPeers) { NativeWLanAPI._DOT11_SSID ossid = new NativeWLanAPI._DOT11_SSID(); NativeWLanAPI._WLAN_HOSTED_NETWORK_CONNECTION_SETTINGS settings = new NativeWLanAPI._WLAN_HOSTED_NETWORK_CONNECTION_SETTINGS(); if (ssid.Length > 32) { throw new ArgumentException("Wi-Fi名称必须小于32个字符"); } else { ossid.uSSIDLength = (uint)ssid.Length; ossid.ucSSID = ssid; settings.hostedNetworkSSID = ossid; } if (maxPeers == 0) { throw new ArgumentException("Max number of peers must be greater than 0"); } settings.dwMaxNumberOfPeers = (uint)maxPeers; int size = Marshal.SizeOf(settings); IntPtr pSettings = Marshal.AllocHGlobal(size); Marshal.StructureToPtr(settings, pSettings, true); NativeWLanAPI._WLAN_HOSTED_NETWORK_OPCODE opcode = NativeWLanAPI._WLAN_HOSTED_NETWORK_OPCODE._WLAN_HOSTED_NETWORK_OPCODE_connection_settings; NativeWLanAPI.WlanHostedNetworkSetProperty(handle, opcode, (uint)size, pSettings, out lastError, IntPtr.Zero); checkStatusAndThrow("设置Wi-Fi名称失败"); Marshal.FreeHGlobal(pSettings); }
/// <summary> /// Enables the Software AP. Sometimes when Start() won't work, Enable() and then Start() might work. /// </summary> public void Enable() { NativeWLanAPI._WLAN_HOSTED_NETWORK_OPCODE opcode = NativeWLanAPI._WLAN_HOSTED_NETWORK_OPCODE._WLAN_HOSTED_NETWORK_OPCODE_enable; int size = Marshal.SizeOf(new Int32()); IntPtr setting = Marshal.AllocHGlobal(size); Marshal.WriteInt32(setting, 1); lastErrorCode = (int)NativeWLanAPI.WlanHostedNetworkSetProperty(handle, opcode, (uint)size, setting, out lastError, IntPtr.Zero); Marshal.FreeHGlobal(setting); checkStatusAndThrow("Could not enable Hosted Access Point! "); }