Beispiel #1
0
        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);
        }
Beispiel #2
0
        /// <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! ");
        }
Beispiel #3
0
        /// <summary>
        /// Queries the settings of Software Access Point
        /// </summary>
        /// <returns>Current settings of the AP</returns>
        public HostedNetworkSettings getSettings()
        {
            UInt32 pdwDataSize = new UInt32();
            IntPtr ppvData     = IntPtr.Zero;

            NativeWLanAPI._WLAN_OPCODE_VALUE_TYPE     pWlanOpcodeValueType = new NativeWLanAPI._WLAN_OPCODE_VALUE_TYPE();
            NativeWLanAPI._WLAN_HOSTED_NETWORK_OPCODE opcode = NativeWLanAPI._WLAN_HOSTED_NETWORK_OPCODE._WLAN_HOSTED_NETWORK_OPCODE_connection_settings;

            lastErrorCode = (int)NativeWLanAPI.WlanHostedNetworkQueryProperty(handle, opcode, out pdwDataSize, out ppvData, out pWlanOpcodeValueType, IntPtr.Zero);

            checkStatusAndThrow("Could not get network settings at this time");

            NativeWLanAPI._WLAN_HOSTED_NETWORK_CONNECTION_SETTINGS qsettings = (NativeWLanAPI._WLAN_HOSTED_NETWORK_CONNECTION_SETTINGS)Marshal.PtrToStructure(ppvData, typeof(NativeWLanAPI._WLAN_HOSTED_NETWORK_CONNECTION_SETTINGS));

            int    maxPeers = (int)qsettings.dwMaxNumberOfPeers;
            string ssid     = qsettings.hostedNetworkSSID.ucSSID;
            string password = getPassword();

            NativeWLanAPI.WlanFreeMemory(ppvData);

            return(new HostedNetworkSettings(ssid, password, maxPeers));
        }