同步调用RasDial时如何得到ERROR_DIAL_ALREADY_IN_PROGRESS?

时间:2019-05-02 14:51:39

标签: c winapi connection ras

这是我的RasDial代码:

RASDIALPARAMS params={.dwSize=sizeof params,.szEntryName="VPN Connection"};
HRASCONN conn;
RasDialA(NULL,NULL,&params,0,NULL,&conn);

我正在循环中的单个线程上拨打新连接,直到成功为止,但是最近我发现我的循环无限期地运行,错误代码为ERROR_DIAL_ALREADY_IN_PROGRESS。

在我的通话同步(arg5NULL)并且我的代码为单线程的情况下,如何拨号建立连接。

我已经查看了任务栏上的“连接”窗格,但是我的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,&params,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,&params,&noCare);

在程序的开头。

消息处理程序调用{​​{1}}函数,以响应“仅消息”窗口中的消息。

索引为零时是localhost-这就是为什么我当时不拨打任何服务器的原因。

好的,在此之前我得到ERROR_VPN_TIMEOUT作为错误。也许这是一个线索。

0 个答案:

没有答案