示例#1
0
        /// <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(WlanConnectionMode connectionMode, Dot11BssType bssType, Dot11Ssid ssid, WlanConnectionFlags flags)
        {
            WlanConnectionParameters connectionParams = new 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);
        }
示例#2
0
		/// <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(WlanConnectionMode connectionMode, Dot11BssType bssType, Dot11Ssid ssid, WlanConnectionFlags flags)
		{
			WlanConnectionParameters connectionParams = new 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);
		}
示例#3
0
        public bool ConnectSync(WlanConnectionMode mode, string profile, PhysicalAddress[] bssids, Dot11BssType bssType, Dot11Ssid?ssid, WlanConnectionFlags flags, int timeout)
        {
            WlanConnectionParameters cp = new WlanConnectionParameters();
            bool value;

            try {
                cp    = CreateConnectionParameters(mode, profile, bssids, bssType, ssid, flags);
                value = ConnectSync(cp, timeout);
            } finally {
                DestroyConnectionParameters(cp);
            }
            return(value);
        }
示例#4
0
        private static WlanConnectionParameters CreateConnectionParameters(WlanConnectionMode mode, string profile, PhysicalAddress[] bssids, Dot11BssType bssType, Dot11Ssid?ssid, WlanConnectionFlags flags)
        {
            WlanConnectionParameters cp = new WlanConnectionParameters();

            cp.BssType        = bssType;
            cp.ConnectionMode = mode;
            cp.Flags          = flags;
            cp.Profile        = profile;

            Dot11BssidList bssidList = new Dot11BssidList();

            if (bssids != null)
            {
                Dot11MacAddress[] macs = Util.ConvertPhysicalAddresses(bssids);
                bssidList           = Dot11BssidList.Build(macs);
                cp.DesiredBssidList = Marshal.AllocHGlobal(bssidList.Header.Size);
                Int64 address = cp.DesiredBssidList.ToInt64();
                Marshal.StructureToPtr(bssidList.Header, new IntPtr(address), false);
                address += Marshal.SizeOf(typeof(NdisObjectHeader));
                Marshal.StructureToPtr(bssidList.ListHeader, new IntPtr(address), false);
                address += Marshal.SizeOf(typeof(Dot11BssidListHeader));
                Int64 offset = Marshal.SizeOf(typeof(Dot11MacAddress));
                for (int i = 0; i < bssidList.Entries.Length; i++)
                {
                    Marshal.StructureToPtr(bssidList.Entries[i], new IntPtr(address), false);
                    address += offset;
                }
            }
            if (ssid.HasValue)
            {
                cp.Ssid = Marshal.AllocHGlobal(Marshal.SizeOf(ssid.Value));
                Marshal.StructureToPtr(ssid.Value, cp.Ssid, false);
            }
            return(cp);
        }
示例#5
0
        public void Connect(WlanConnectionMode mode, string profile, PhysicalAddress[] bssids, Dot11BssType bssType, Dot11Ssid?ssid, WlanConnectionFlags flags)
        {
            WlanConnectionParameters cp = new WlanConnectionParameters();

            try {
                cp = CreateConnectionParameters(mode, profile, bssids, bssType, ssid, flags);
                Connect(cp);
            } finally {
                DestroyConnectionParameters(cp);
            }
        }