RasDial功能在RAS客户端和RAS服务器之间建立RAS连接。连接数据包括回拨和用户认证信息。
DWORD RasDial(
LPRASDIALEXTENSIONS 【lpRasDialExtensions】, | //指向函数扩展名的数据 |
LPTSTR 【lpszPhonebook】, | //指向电话簿文件的完整路径和文件名 |
LPRASDIALPARAMS 【lpRasDialParams】, | //指向调用参数的数据 |
DWORD 【dwNotifierType】, | //指定RasDial事件处理程序的类型 |
LPVOID 【lpvNotifier】, | //指定RasDial事件的处理程序 |
LPHRASCONN 【lphRasConn】 | //指向变量以接收连接句柄的指针 |
); |
参数
【lpRasDialExtensions】
Windows NT:
指向RASDIALEXTENSIONS结构,指定一组RasDial扩展功能启用。如果您不需要启用任何扩展,请将此参数设置为NULL。
Windows 95:
此参数被忽略。在Windows 95上,RasDial始终使用RASDIALEXTENSIONS选项的默认行为。
【lpszPhonebook】
Windows NT:指向指定电话簿(.PBK)文件的完整路径和文件名的以空值终止的字符串的指针。如果此参数为NULL,则该函数使用当前的默认电话簿文件。默认电话簿文件是用户在拨号网络对话框的用户首选项属性表中选择的文件。
Windows 95:此参数被忽略。拨号网络将电话簿条目存储在注册表中,而不是电话簿文件中。
【lpRasDialParams】
指向RASDIALPARAMS结构,指定RAS连接的调用参数。
来电者必须将RASDIALPARAMS结构的的dwSize成员设置为sizeof(RASDIALPARAMS)以标识要传递的结构的版本。
【dwNotifierType】
指定【lpvNotifier】参数的性质。如果【lpvNotifier】为NULL,则忽略【dwNotifierType】.如果【lpvNotifier】不为NULL,则将【dwNotifierType】设置为以下值之一:
值 | 含义 |
0xFFFFFFFF | 【lpvNotifier】参数是用于接收进度通知消息的窗口的句柄。在进度通知消息中,RasDialFunc1等价于RasDialFunc 和RasDialFunc1的【rasconnstate】参数,【lParam的】等价于RasDialFunc和RasDialFunc1的【dwError】参数}. 进度通知消息使用系统注册的消息代码。您可以获取此消息代码的值如下: {UINT unMsg = RegisterWindowMessageA( RASDIALEVENT ); if (unMsg == 0) unMsg = WM_RASDIALEVENT; } |
0 | 【lpvNotifier】参数指向RasDialFunc回调函数。 |
1 | 【lpvNotifier】参数指向RasDialFunc1回调函数。 |
2 | Windows NT: 【lpvNotifier】参数指向RasDialFunc2回调函数。 |
【lpvNotifier】
指定一个窗口句柄或RasDialFunc,RasDialFunc1或RasDialFunc2回调函数来接收RasDial事件通知。【dwNotifierType】参数指定【lpvNotifier】的性质。有关详细信息,请参阅其说明。
如果此参数不为NULL,则RasDial会为每个RasDial事件向窗口发送消息或调用回调函数。另外,RasDial呼叫异步运行:RasDial在建立连接之前立即返回,并通过窗口或回调函数传达其进度。
如果【lpvNotifier】为NULL,则RasDial呼叫将同步运行:RasDial直到连接尝试成功完成或失败才返回。
如果【lpvNotifier】不为空,则可以在初始调用RasDial之后的任何时间发送对窗口或回调函数的通知。当发生以下事件之一时,通知结束:
*建立连接。换句话说,RAS连接状态是RASCS_Connected。
*连接失败。换句话说,【dwError】不是零。
* RasHangUp在连接上被调用。
回调通知是在初始调用RasDial期间捕获的线程的上下文中进行的。
【lphRasConn】
指向HRASCONN类型的变量。在调用RasDial之前,必须将HRASCONN变量设置为NULL。如果RasDial成功,则将RAS连接的句柄存储到* 【lphRasConn】中。
返回值
如果函数成功,立即返回值为零。此外,该函数将RAS连接的句柄存储到【lphRasConn】指向的变量中。
如果该函数失败,则立即返回值是一个非零的错误值,无论是从RAS头文件中列出的集合还是ERROR_NOT_ENOUGH_MEMORY。
备注
在立即返回后发生的错误可以通过RasGetConnectStatus检测到。数据可用,直到应用程序调用{??989796190}才能挂断连接。
只要非空连接句柄存储到* 【lphRasConn】中,应用程序必须最终调用RasHangUp.即使RasDial返回非零(错误)值,也适用。
应用程序可以从RasDial通知程序回调函数安全地调用RasHangUp.但是,如果这样做,则在例程返回之前不会发生挂起。
Windows NT:
如果【lpRasDialExtensions】指向的结构启用RDEOPT_PausedStates,则只要它进入RASCS_PAUSED位设置为1的状态,RasDial函数就会暂停。要从暂停状态重新启动RasDial,请再次致电RasDial,传递原始RasDial呼叫中返回的* 【lphRasConn】中的连接句柄。在从暂停状态重新启动时,必须使用原始RasDial呼叫中使用的相同通知程序。
要指定RasDial应输入RASCS_CallbackSetByCaller状态,请在初始调用RasDial时将【lpRasDialParams】 - > szCallbackNumber设置为“*”。当您的通知处理程序以此状态调用时,可以将回调号码设置为用户提供的号码。
Windows 95:
Windows 95不支持RASCS_CallbackSetByCaller状态或任何其他暂停状态。
也可以看看
RasDialDlg, RasDialFunc, RasDialFunc1, RasDialFunc2, RasGetConnectStatus, RasHangUp, RASDIALEXTENSIONS, RASDIALPARAMS, WM_RASDIALEVENT