/// <summary> /// 获得入口参数 /// </summary> /// <param name="strEntryName">条目名称</param> /// <param name="strPhoneNumber">电话号码</param> /// <param name="strUserName">用户名</param> /// <param name="strPassword">密码</param> /// <param name="bRememberPassword">记住密码</param> /// <param name="strError">错误</param> /// <returns>结果</returns> public bool GetEntryParams(string strEntryName, out string strPhoneNumber, out string strUserName, out string strPassword, out bool bRememberPassword, out string strError) { bool lpfPassword = false; RASDIALPARAMS structure = new RASDIALPARAMS(); structure.dwSize = Marshal.SizeOf(structure); structure.szEntryName = strEntryName; int nErrorValue = RasGetEntryDialParams(null, ref structure, ref lpfPassword); if (nErrorValue != 0) { strError = this.GetErrorString(nErrorValue); strPhoneNumber = null; strUserName = null; strPassword = null; bRememberPassword = false; strError = null; return(false); } strPhoneNumber = structure.szPhoneNumber; strUserName = structure.szUserName; if (lpfPassword) { strPassword = structure.szPassword; } else { strPassword = null; } bRememberPassword = lpfPassword; strError = null; return(true); }
public static extern uint RasDial( [In] RASDIALEXTENSIONS lpRasDialExtensions, [In] string lpszPhonebook, [In] RASDIALPARAMS lpRasDialParams, uint dwNotifierType, Delegate lpvNotifier, ref IntPtr lphRasConn);
/// <summary> /// 拨号 /// </summary> /// <param name="strEntryName">条目名称</param> /// <param name="strError">错误</param> /// <returns>结果</returns> public bool DialUp(string strEntryName, out string strError) { bool lpfPassword = false; RASDIALPARAMS structure = new RASDIALPARAMS(); structure.dwSize = Marshal.SizeOf(structure); structure.szEntryName = strEntryName; RasDialEvent lpvNotifier = new RasDialEvent(this.RasDialFunc); int nErrorValue = RasGetEntryDialParams(null, ref structure, ref lpfPassword); if (nErrorValue != 0) { strError = this.GetErrorString(nErrorValue); return(false); } this.ConnectNotify("正在连接" + structure.szEntryName + "...", 1); this.EntryName = strEntryName; this.hrasconn = 0; nErrorValue = RasDial(0, null, ref structure, 0, lpvNotifier, ref this.hrasconn); if (nErrorValue != 0) { strError = this.GetErrorString(nErrorValue); this.ConnectNotify(strError, 3); return(false); } this.ConnectNotify("正在打开端口...", 1); strError = null; return(true); }
public static uint UpLink(string phoneBookEntry) { if (phoneBookEntry == String.Empty) { throw new ArgumentNullException("phoneBookEntry"); } RASCONN[] rasConnArr = GetAllConnections(); RASCONN rConn = new RASCONN(); rConn = Array.Find <RASCONN>(rasConnArr, delegate(RASCONN rasConn) { return(rasConn.szEntryName == phoneBookEntry ? true : false); }); if (rConn.hrasconn != IntPtr.Zero) { RasHangUp(rConn.hrasconn); Thread.Sleep(3000); } IntPtr hConnection = IntPtr.Zero; RASDIALPARAMS rasDialParams = new RASDIALPARAMS(); rasDialParams.dwSize = Marshal.SizeOf(rasDialParams); rasDialParams.szEntryName += phoneBookEntry; rasDialParams.szUserName += "\0"; rasDialParams.szPassword += "\0"; UInt32 result = RasDial(0, null, ref rasDialParams, 0, null, ref hConnection); return(result); }
public void RasGetEntryDialParamsAsExpected() { var lpszPhoneBook = @"C:\Users\My.pbk"; RASDIALPARAMS lpDialParams = new RASDIALPARAMS(); bool lpfPassword; api.Setup(o => o.RasGetEntryDialParams(lpszPhoneBook, ref It.Ref <RASDIALPARAMS> .IsAny, out It.Ref <bool> .IsAny)).Returns(new RasGetEntryDialParamsCallback( (string o1, ref RASDIALPARAMS o2, out bool o3) => { o3 = true; return(SUCCESS); })); eventLoggingPolicy.Setup(o => o.LogEvent(It.IsAny <EventLevel>(), It.IsAny <PInvokeInt32CallCompletedTraceEvent>())).Callback(new LogEventCallback( (level, o1) => { Assert.AreEqual(EventLevel.Verbose, level); var eventData = (PInvokeInt32CallCompletedTraceEvent)o1; Assert.True(eventData.Args.ContainsKey(nameof(lpszPhoneBook))); Assert.True(eventData.OutArgs.ContainsKey(nameof(lpDialParams))); Assert.True(eventData.OutArgs.ContainsKey(nameof(lpfPassword))); Assert.True(eventData.Duration > TimeSpan.Zero); Assert.AreEqual(SUCCESS, eventData.Result); })).Verifiable(); var target = new RasApi32LoggingAdvice(api.Object, eventLoggingPolicy.Object); var result = target.RasGetEntryDialParams(lpszPhoneBook, ref lpDialParams, out lpfPassword); eventLoggingPolicy.Verify(); Assert.AreEqual(SUCCESS, result); Assert.True(lpfPassword); }
public static extern int RasDial( [In] ref RASDIALEXTENSIONS lpRasDialExtensions, string lpszPhoneBook, [In] ref RASDIALPARAMS lpRasDialParams, NotifierType dwNotifierType, Delegate lpvNotifier, out IntPtr lphRasConn);
private void ConfigureOptions(RasDialerOptions options, ref RASDIALPARAMS rasDialParams) { if (options == null) { return; } rasDialParams.dwIfIndex = options.InterfaceIndex; }
private void ConfigureCredentials(NetworkCredential credentials, ref RASDIALPARAMS rasDialParams) { if (credentials == null) { return; } rasDialParams.szUserName = credentials.UserName; rasDialParams.szPassword = credentials.Password; rasDialParams.szDomain = credentials.Domain; }
/// <summary> /// 设置输入参数个数 /// </summary> /// <param name="strEntryName">条目名称</param> /// <param name="strPhoneNumber">电话号码</param> /// <param name="strUserName">用户名</param> /// <param name="strPassword">密码</param> /// <param name="bRememberPassword">记住密码</param> /// <param name="strError">错误</param> /// <returns>结果</returns> public bool SetEntryParams(string strEntryName, string strPhoneNumber, string strUserName, string strPassword, bool bRememberPassword, out string strError) { RASDIALPARAMS structure = new RASDIALPARAMS(); structure.dwSize = Marshal.SizeOf(structure); structure.szEntryName = strEntryName; structure.szPhoneNumber = strPhoneNumber; structure.szUserName = strUserName; structure.szPassword = strPassword; int nErrorValue = RasSetEntryDialParams(null, ref structure, !bRememberPassword); if (nErrorValue != 0) { strError = this.GetErrorString(nErrorValue); return(false); } strError = null; return(true); }
public void RasDialAsExpected() { var lpRasDialExtensions = new RASDIALEXTENSIONS(); var lpszPhoneBook = @"C:\Users\My.pbk"; var lpRasDialParams = new RASDIALPARAMS(); var dwNotifierType = NotifierType.RasDialFunc2; RasDialFunc2 lpvNotifier = null; var lphRasConn = IntPtr.Zero; api.Setup(o => o.RasDial(ref It.Ref <RASDIALEXTENSIONS> .IsAny, lpszPhoneBook, ref It.Ref <RASDIALPARAMS> .IsAny, dwNotifierType, lpvNotifier, out It.Ref <IntPtr> .IsAny)).Returns(new RasDialCallback( (ref RASDIALEXTENSIONS o1, string o2, ref RASDIALPARAMS o3, NotifierType o4, RasDialFunc2 o5, out IntPtr o6) => { o6 = new IntPtr(1); return(SUCCESS); })); eventLoggingPolicy.Setup(o => o.LogEvent(It.IsAny <EventLevel>(), It.IsAny <PInvokeInt32CallCompletedTraceEvent>())).Callback(new LogEventCallback( (level, o1) => { Assert.AreEqual(EventLevel.Verbose, level); var eventData = (PInvokeInt32CallCompletedTraceEvent)o1; Assert.True(eventData.Args.ContainsKey(nameof(lpRasDialExtensions))); Assert.True(eventData.Args.ContainsKey(nameof(lpszPhoneBook))); Assert.True(eventData.Args.ContainsKey(nameof(lpRasDialParams))); Assert.True(eventData.Args.ContainsKey(nameof(dwNotifierType))); Assert.True(eventData.Args.ContainsKey(nameof(lpvNotifier))); Assert.True(eventData.OutArgs.ContainsKey(nameof(lphRasConn))); Assert.True(eventData.Duration > TimeSpan.Zero); Assert.AreEqual(SUCCESS, eventData.Result); })).Verifiable(); var target = new RasApi32LoggingAdvice(api.Object, eventLoggingPolicy.Object); var result = target.RasDial(ref lpRasDialExtensions, lpszPhoneBook, ref lpRasDialParams, dwNotifierType, null, out lphRasConn); eventLoggingPolicy.Verify(); Assert.AreEqual(SUCCESS, result); Assert.AreEqual(new IntPtr(1), lphRasConn); }
public static bool connectToVPN(string vpnName) { // Initialize unmanged memory to hold the struct. IntPtr pnt = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(RASDIALPARAMS))); var lpRasDialParams = new RASDIALPARAMS(); lpRasDialParams.szEntryName = vpnName; lpRasDialParams.dwSize = Marshal.SizeOf(typeof(RASDIALPARAMS)); // Copy the struct to unmanaged memory. Marshal.StructureToPtr(lpRasDialParams, pnt, true); bool lprPassword = false; var nRet = RasGetEntryDialParamsW(null, pnt, out lprPassword); if (nRet != 0) { // Clear unmanaged memory Marshal.FreeHGlobal(pnt); //throw new Exception("Error text"); return(false); } // Copy unmanaged memory to the struct. //lpRasDialParams = (RASDIALPARAMS)Marshal.PtrToStructure(pnt, typeof(RASDIALPARAMS)); // Clear unmanaged memory //Marshal.FreeHGlobal(pnt); //RASCONN ras = new RASCONN(); //ras.dwSize = Marshal.SizeOf(typeof(RASCONN)); IntPtr hrassconn = IntPtr.Zero; //Marshal.AllocHGlobal(Marshal.SizeOf(typeof(RASCONN))); //RasHandle rhandle = null; var ret = RasDial(IntPtr.Zero, null, pnt, 0, null, ref hrassconn); return(true); }
public int RasGetEntryDialParams(string lpszPhoneBook, ref RASDIALPARAMS lpDialParams, out bool lpfPassword) { var stopwatch = Stopwatch.StartNew(); var result = AttachedObject.RasGetEntryDialParams(lpszPhoneBook, ref lpDialParams, out lpfPassword); stopwatch.Stop(); var callEvent = new PInvokeInt32CallCompletedTraceEvent { DllName = RasApi32Dll, Duration = stopwatch.Elapsed, MethodName = nameof(RasGetEntryDialParams), Result = result, }; callEvent.Args.Add(nameof(lpszPhoneBook), lpszPhoneBook); callEvent.OutArgs.Add(nameof(lpDialParams), lpDialParams); callEvent.OutArgs.Add(nameof(lpfPassword), lpfPassword); LogVerbose(callEvent); return(result); }
public bool DialUp(string strEntryName, string szUserName, string szPassWord, out string strError) { bool lpfPassword = false; strError = null; RASDIALPARAMS structure = new RASDIALPARAMS(); structure.dwSize = Marshal.SizeOf(structure); structure.szEntryName = strEntryName; int nErrorValue = RasGetEntryDialParams(null, ref structure, ref lpfPassword); structure.szUserName = szUserName; structure.szPassword = szPassWord; if (nErrorValue != 0) { strError = "宽带重拨发生错误!"; return(false); } int lphrsaConn = 0; nErrorValue = RasDial(0, null, ref structure, 0, IntPtr.Zero, ref lphrsaConn); if (nErrorValue != 0) { strError = "宽带重拨返回" + nErrorValue.ToString() + "错误!"; //this.ConnectNotify(strError, 3); return(false); } strError = "宽带重拨成功!"; strError = GetIP(lphrsaConn); if (strError == "") { strError = "查询IP发生未知错误!"; return(false); } return(true); }
public RasManager() { Connection = 0; RasDialParams = new RASDIALPARAMS(); RasDialParams.dwSize = Marshal.SizeOf(RasDialParams); }
public int RasDial(ref RASDIALEXTENSIONS lpRasDialExtensions, string lpszPhoneBook, ref RASDIALPARAMS lpRasDialParams, NotifierType dwNotifierType, RasDialFunc2 lpvNotifier, out IntPtr lphRasConn) { var stopwatch = Stopwatch.StartNew(); var result = AttachedObject.RasDial(ref lpRasDialExtensions, lpszPhoneBook, ref lpRasDialParams, dwNotifierType, lpvNotifier, out lphRasConn); stopwatch.Stop(); var callEvent = new PInvokeInt32CallCompletedTraceEvent { DllName = RasApi32Dll, Duration = stopwatch.Elapsed, MethodName = nameof(RasDial), Result = result, }; callEvent.Args.Add(nameof(lpRasDialExtensions), lpRasDialExtensions); callEvent.Args.Add(nameof(lpszPhoneBook), lpszPhoneBook); callEvent.Args.Add(nameof(lpRasDialParams), lpRasDialParams); callEvent.Args.Add(nameof(dwNotifierType), dwNotifierType); callEvent.Args.Add(nameof(lpvNotifier), lpvNotifier); callEvent.OutArgs.Add(nameof(lphRasConn), lphRasConn); LogVerbose(callEvent); return(result); }
private static extern int RasDial(int lpRasDialExtensions, string lpszPhonebook, ref RASDIALPARAMS lpRasDialParams, int dwNotifierType, IntPtr lpvNotifier, ref int lphRasConn);
public CRasDial() { rasSession = 0; RasDialParams = new RASDIALPARAMS(); RasDialParams.dwSize = Marshal.SizeOf(RasDialParams); }
private static extern int RasGetEntryDialParams(string lpszPhonebook, ref RASDIALPARAMS lprasdialparams, ref bool lpfPassword);
/// <summary> /// 构造 /// </summary> public RasManager() { Connection = 0; RasDialParams = new RASDIALPARAMS(); RasDialParams.dwSize = Marshal.SizeOf(RasDialParams); }
public static extern int RasDial(int lpRasDialExtensions, string lpszPhonebook, ref RASDIALPARAMS lprasdialparams, int dwNotifierType, Callback lpvNotifier, ref int lphRasConn);
/// <summary> /// 拨号 /// </summary> /// <param name="strEntryName">条目名称</param> /// <param name="strError">错误</param> /// <returns>结果</returns> public bool DialUp(string strEntryName, out string strError) { bool lpfPassword = false; RASDIALPARAMS structure = new RASDIALPARAMS(); structure.dwSize = Marshal.SizeOf(structure); structure.szEntryName = strEntryName; RasDialEvent lpvNotifier = new RasDialEvent(this.RasDialFunc); int nErrorValue = RasGetEntryDialParams(null, ref structure, ref lpfPassword); if (nErrorValue != 0) { strError = this.GetErrorString(nErrorValue); return false; } this.ConnectNotify("正在连接" + structure.szEntryName + "...", 1); this.EntryName = strEntryName; this.hrasconn = 0; nErrorValue = RasDial(0, null, ref structure, 0, lpvNotifier, ref this.hrasconn); if (nErrorValue != 0) { strError = this.GetErrorString(nErrorValue); this.ConnectNotify(strError, 3); return false; } this.ConnectNotify("正在打开端口...", 1); strError = null; return true; }
private static extern int RasDial(int lpRasDialExtensions, string lpszPhonebook, ref RASDIALPARAMS lpRasDialParams, int dwNotifierType, RasDialEvent lpvNotifier, ref int lphRasConn);
/// <summary> /// 设置输入参数个数 /// </summary> /// <param name="strEntryName">条目名称</param> /// <param name="strPhoneNumber">电话号码</param> /// <param name="strUserName">用户名</param> /// <param name="strPassword">密码</param> /// <param name="bRememberPassword">记住密码</param> /// <param name="strError">错误</param> /// <returns>结果</returns> public bool SetEntryParams(string strEntryName, string strPhoneNumber, string strUserName, string strPassword, bool bRememberPassword, out string strError) { RASDIALPARAMS structure = new RASDIALPARAMS(); structure.dwSize = Marshal.SizeOf(structure); structure.szEntryName = strEntryName; structure.szPhoneNumber = strPhoneNumber; structure.szUserName = strUserName; structure.szPassword = strPassword; int nErrorValue = RasSetEntryDialParams(null, ref structure, !bRememberPassword); if (nErrorValue != 0) { strError = this.GetErrorString(nErrorValue); return false; } strError = null; return true; }
private static extern int RasSetEntryDialParams(string lpszPhonebook, ref RASDIALPARAMS lprasdialparams, bool fRemovePassword);
public int RasGetEntryDialParams(string lpszPhoneBook, ref RASDIALPARAMS lpDialParams, out bool lpfPassword) { return(SafeNativeMethods.RasGetEntryDialParams(lpszPhoneBook, ref lpDialParams, out lpfPassword)); }
public int RasDial(ref RASDIALEXTENSIONS lpRasDialExtensions, string lpszPhoneBook, ref RASDIALPARAMS lpRasDialParams, NotifierType dwNotifierType, RasDialFunc2 lpvNotifier, out IntPtr lphRasConn) { return(UnsafeNativeMethods.RasDial(ref lpRasDialExtensions, lpszPhoneBook, ref lpRasDialParams, dwNotifierType, lpvNotifier, out lphRasConn)); }
public static extern int RasGetEntryDialParams( string lpszPhoneBook, [In, Out] ref RASDIALPARAMS lpDialParams, [Out] out bool lpfPassword);
static extern uint RasGetEntryDialParams( string lpszPhonebook, [In, Out] ref RASDIALPARAMS lprasdialparams, out bool lpfPassword);