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); } }
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); }