阅读:5330回复:23
虚拟串口怎样才能支持modem上网?现在已经可以通过modem拨打电话,但是拨号上网却不行, 需要处理什么? |
|
最新喜欢:![]() |
沙发#
发布于:2005-06-08 09:16
网站终于恢复了,看来上次我的回帖没有成功,5。
星期一的时候我发现一个新情况,Win2000装了 SP4 补丁的挂断就不灵了!? 如果是裸Win2000或服务包只到 SP2 就可以。 拨号后有个对话框提示: TCP/IP CP connect seccessfully IPX/SPX or compatible CP error -- PPP 协议好像有问题 这个情况下,可以挂断,那些set wait purge步骤都过了。 “如果数据正常,问题还在的话,就把关键代码发给我,我晚上回去帮你看看~~” :感激涕零!!! |
|
板凳#
发布于:2005-06-06 15:49
如果数据正常,问题还在的话,就把关键代码发给我,我晚上回去帮你看看~~
|
|
地板#
发布于:2005-06-06 14:05
如果是这样的话,那么mask处理应该没问题,一般不需要设置timeout的.建议你做下面的实验试试,确认你的驱动收发数据是正常的(包括硬件和驱动),因为数据不对的话,肯定是不能拨号上网啦,具体你可以用超级终端收发大文件,然后比较,多试几次就可以了.
|
|
地下室#
发布于:2005-06-06 13:27
我现在 Set wait mask,wait mask,purge 就像DDK那样做的。
也是有一个mask队列;Set时如果有pending的wait就先完成掉(0,success);如果注册的 ev 发生就 DPC 触发完成pending mask等等。但还是不好用,郁闷。 我那个帖子里KMK大侠提示说,wait mask 可能要 set timeout,是这样吗? 我的DDK例子里,waitmask.c的版本是:Anthony V. Ercolano 26-Sep-1991。难道后来人家又更新了? |
|
5楼#
发布于:2005-06-06 11:15
我觉得是,应该就是没有处理好mask的那些动作~~
|
|
6楼#
发布于:2005-06-06 09:19
现在基本了解断开的步骤了,和拨号中途Cancel是一样的。唯一不同的就是Cancel时完成pending wait on mask的Set wait mask可以被发下来,而挂断拨号时不可以。
Set mask wait mask purge --->:这里应该继续 有Set wait mask的。 set mask wait mask purge getmodem。。。 难道问题不是出在 set wait mask;wait on mask;purge上?在拨号时候就埋下了后面bug的种子? |
|
7楼#
发布于:2005-05-16 10:09
portmon是串口过滤,所以通过串口的包都会被监视到的。现在还有一种工具就是ds3.2里的wdmsnif,这个也可以把所有的IRP都抓到。一定要最新版的DriverStudio才有这个工具。公网可以到零度地带下载。
|
|
8楼#
发布于:2005-05-15 14:41
最初写的时候,都是用Dbgview、PORTMON对比以及监视的。
现在拨号的情况下,PORTMON也打印不出信息。 不知道是我的用法不对,还是PORTMON本身就不支持。 |
|
9楼#
发布于:2005-05-13 14:07
断开网络的时候需要什么特殊处理吗?为什么我把应有的mask都返回了,2000 拨号程序也读取了 CD 变低情况,但却不发AT指令结束通信哪? 我没有碰到过这种情况,所以只有一个土办法啦,对照着真正的串口modem比较你的驱动跟微软驱动不一样的地方...... |
|
10楼#
发布于:2005-05-13 12:40
断开网络的时候需要什么特殊处理吗?为什么我把应有的mask都返回了,2000 拨号程序也读取了 CD 变低情况,但却不发AT指令结束通信哪?
|
|
11楼#
发布于:2005-04-27 08:08
多谢老大帮忙!
|
|
12楼#
发布于:2005-04-25 19:27
是的,必须处理。具体参考ddk的serial例子。 |
|
13楼#
发布于:2005-04-25 13:13
我的设备里有一个uart16550的芯片,所以可以通过读它的寄存器来得到modemstatus. 我调试的时候,modem和拨号程序的“握手”步骤老是不合拍,收发几包数据就断了。郁闷死! 顺便问一下:IOCTL_SERIAL_GET_STATS 这个IO请求也必须处理吗? |
|
14楼#
发布于:2005-04-08 13:42
好久没有上来看看了,呵呵~~
你要有个安装modem的inf文件才能找到modem啊,或者直接选一个MS的标准modem...... 我做的东西只是一个串口,modem是另一个设备,所以肯定不能自动提示安装modem了。。。 [编辑 - 4/8/05 by Shentu] |
|
15楼#
发布于:2005-04-06 11:14
老大,你的驱动能在搜索硬件时提示安装modem吗?
IRP_MN_QUERY_DEVICE_RELATIONS 需要做什么处理吗? 为什么我的在add new divice 后是 unknown modem 啊? |
|
16楼#
发布于:2004-11-12 11:21
我的设备里有一个uart16550的芯片,所以可以通过读它的寄存器来得到modemstatus.
至于wait_on_mask的IRP的处理,这里也说不清楚,参考ddk的serial例子,对照着改就行了。 只要这些都处理好了,不用管拨号程序怎么对RLSD检查,拨号程序其实也就是做两件事,一是检查状态变化,通过wait_on_mask,一是读写数据。 |
|
17楼#
发布于:2004-11-11 17:17
这位大哥,GET_MODEMSTATUS和WAIT_ON_MASK两个request您是怎么实现的?虚拟串口可没有modemstatus寄存器呀。
windows的拨号程序对RLSD的检查让我很摸不着头脑。肯请指教。 |
|
18楼#
发布于:2004-07-08 16:47
今天终于可以使用modem上网了。
其实只要完全根据 ddk 的 serial src 来处理各种irp就可以了。 感谢acidfish和qinxg两位大哥的宝贵意见。 |
|
19楼#
发布于:2004-07-03 17:14
试了一下用超级终端打开虚拟串口直接拨号96169,就可以连上,要我输入用户名和密码,ok。
那么,我想应该是modem驱动和虚拟串口驱动交互的时候出问题,不知道哪里有关于modem驱动和API的资料? 对于IOCTL_SERIAL_PURGE的处理应该是没有问题的,主要是modem得到的返回状态错了,它认为modem没有连接到com口了,咋回事呢? |
|
上一页
下一页