这是我的RasDial代码:
RASDIALPARAMS params={.dwSize=sizeof params,.szEntryName="VPN Connection"};
HRASCONN conn;
RasDialA(NULL,NULL,¶ms,0,NULL,&conn);
我正在循环中的单个线程上拨打新连接,直到成功为止,但是最近我发现我的循环无限期地运行,错误代码为ERROR_DIAL_ALREADY_IN_PROGRESS。
在我的通话同步(arg5
为NULL
)并且我的代码为单线程的情况下,如何拨号建立连接。
我已经查看了任务栏上的“连接”窗格,但是我的VPN连接既未连接也未连接。
为完整起见,这是我的完整代码:
RASDIALPARAMS params={.dwSize=sizeof params,.szEntryName="VPN Connection"};
DWORD dwPrevIndex;
dialup()
{
extern const char *const servers[];
int success;do
{static HRASCONN conn;
static DWORD serverIndex=1;
RASCONNSTATUS status={.dwSize=sizeof status};
strcpy(params.szPhoneNumber,servers[serverIndex]);
{
while(RasGetConnectStatusA(conn,&status)!=ERROR_INVALID_HANDLE)
RasHangUpA(conn),Sleep(500);}
conn=NULL, success = serverIndex ? RasDialA(NULL,NULL,¶ms,0,NULL,&conn) : 0;
printf("%s - %d\n",serverIndex[servers], success),
dwPrevIndex=serverIndex,
(serverIndex+1 == sizeof servers/sizeof(void *) ? serverIndex = 0 : ++serverIndex);}while(Sleep(500),success);
}
我打电话
BOOL noCare;
RasGetEntryDialParamsA(NULL,¶ms,&noCare);
在程序的开头。
消息处理程序调用{{1}}函数,以响应“仅消息”窗口中的消息。
索引为零时是localhost-这就是为什么我当时不拨打任何服务器的原因。
好的,在此之前我得到ERROR_VPN_TIMEOUT作为错误。也许这是一个线索。