Esempio n. 1
0
        public static void DiconnectConnection(DialupConnectInfo dialupConnectInfo)
        {
            if (dialupConnectInfo != null)
            {
                throw new ArgumentNullException("dialupConnectInfo");
            }

            int flags = 0;

            InternetGetConnectedState(ref flags, 0);
            if (!((flags & INTERNET_RAS_INSTALLED) == INTERNET_RAS_INSTALLED))
            {
                throw new NotSupportedException();
            }


            if (dialupConnectInfo.Handle != IntPtr.Zero)
            {
                RasHangUp(dialupConnectInfo.Handle);
            }
        }
Esempio n. 2
0
        private static DialupConnectInfo[] getConnectedDialupInfoWinXP()
        {
            RASCONN_XP[] lprasConn = new[] { new RASCONN_XP() };
            lprasConn[0].dwSize   = Marshal.SizeOf(typeof(RASCONN_XP));
            lprasConn[0].hrasconn = IntPtr.Zero;

            int lpcb           = 0;
            int lpcConnections = 0;
            int nRet           = 0;

            lpcb = Marshal.SizeOf(typeof(RASCONN_XP));
            nRet = RasEnumConnections_XP(lprasConn, ref lpcb, ref lpcConnections);

            if (nRet != 0 && lpcConnections <= 0)
            {
                //throw new Exception(nRet.ToString());
                return(null);
            }

            if (lpcConnections <= 0)
            {
                return(null);
            }

            lprasConn = new RASCONN_XP[lpcConnections];

            for (int i = 0; i < lpcConnections; i++)
            {
                lprasConn[i].dwSize = lpcb;
            }

            nRet = RasEnumConnections_XP(lprasConn, ref lpcb, ref lpcConnections);

            if (nRet != 0 && lpcConnections <= 0)
            {
                //throw new Exception(nRet.ToString());
                return(null);
            }

            var infoList = new DialupConnectInfo[lpcConnections];

            for (int i = 0; i < lpcConnections; i++)
            {
                var status = new RasStats();

                status.dwSize = Marshal.SizeOf(typeof(RasStats));

                var newRet = RasGetConnectionStatistics(lprasConn[i].hrasconn, ref status);

                if (newRet != 0)
                {
                    //throw new Exception(newRet.ToString());
                    return(null);
                }

                int hours   = 0;
                int minutes = 0;
                int seconds = 0;

                hours   = ((status.dwConnectionDuration / 1000) / 3600);
                minutes = ((status.dwConnectionDuration / 1000) / 60) - (hours * 60);
                seconds = ((status.dwConnectionDuration / 1000)) - (minutes * 60) - (hours * 3600);

                var name       = Encoding.Default.GetString(lprasConn[i].szEntryNameBytes).TrimEnd('\0');
                var deviceName = Encoding.Default.GetString(lprasConn[i].szDeviceName).TrimEnd('\0');
                infoList[i] = new DialupConnectInfo(name, 0, deviceName, new TimeSpan(hours, minutes, seconds), lprasConn[i].hrasconn);;
            }

            return(infoList);
        }