Ras连接的问题求助!请高手指点!
问题描述:
目的:
想在PC上建立一个modem,通过程序控制进行拨号,拨号的同时在程序里跟踪当前的连接状态信息。
解决思路:
调用Windows封装的API,两个函数分别是:
(1)The RasDial function establishes a RAS connection between a RAS client and a RAS server. The connection data includes callback and user-authentication information.
DWORD RasDial(
LPRASDIALEXTENSIONS lpRasDialExtensions,
LPCTSTR lpszPhonebook,
LPRASDIALPARAMS lpRasDialParams,
DWORD dwNotifierType,
LPVOID lpvNotifier,
LPHRASCONN lphRasConn
);
(2)The RasDialFunc callback function is called by the RasDial function when a change of state occurs during a RAS connection process.
void CALLBACK RasDialFunc(
UINT unMsg,
RASCONNSTATE rasconnstate,
DWORD dwError
);
我的用法:
定义一个RasDialFunc函数如下:
void WINAPI RasDialFunc(DWORD unMsg,RASCONNSTATE RasConnState,DWORD dwError)
{
PostThreadMessage(m_ThreadID,WM_RASDIALEVENT,(WPARAM)RasConnState,(LPARAM)dwError);
}
MyThread::Execute()
{
m_ThreadID = GetCurrentThreadID();
...
RasDialA(NULL,NULL,&rdParams,0,(RASDIALFUNC)RasDialFunc,&m_hRasConn);
...
}
RasDialFunc()函数将现在的连接信息发送到其调用线程里,调用线程根据当前的信息去进行处理。
这样有问题吗?
疑问:
现在第一次调用的时候,没问题,发送的数据正常。可是,当第二次拨号的时候,却不能正常运行。我定义的RasDialFunc没有调用,所以,向线程里不再发送消息,那么这个时候调用线程就一直收不到信息。
是不是我每次调用dial的时候要先把调用关掉再redail阿?如果是这样,那么再Redial之前,怎么关闭上次的Dial动作呢?
谢谢!急!!!!!!
请高手指点?