Ras连接的问题求助!请高手指点!

findfriend 2008-01-10 11:35:23
问题描述:

目的:
想在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动作呢?


谢谢!急!!!!!!
请高手指点?







...全文
65 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
findfriend 2008-01-10
  • 打赏
  • 举报
回复
不是我吝啬阿!我只有20分可以用了!

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧