Quakexg
驱动小牛
驱动小牛
  • 注册日期2001-11-21
  • 最后登录2012-02-29
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望56点
  • 贡献值0点
  • 好评度18点
  • 原创分0分
  • 专家分0分
阅读:1519回复:3

PIM问题

楼主#
更多 发布于:2003-07-16 10:50
我把PIM的代码改了下,主要思路如下:
1。设2条主链,一条放发送的包,一条放接收的包。
2。发送和接收时,先把包复制一份,放进链表。
    每个在链表里的包的包内容都是连续的,就是说我把数据都拷贝到了一个连续的内存块里了。
3。具体的接收和发送,在PIM的TIMER函数里做,对这2条链表轮循,非空就调用原函数发送或接收。

现象:
在局域网中PING别的机器,没有问题,包括PING 60000的包都没有问题。但是使用拨号时,PING一个INTERNET地址却不能PING通!

这现象只在WIN-ME下有,在98下,无论局域网还是拨号PING  INTERNET地址都没有问题。ME 和 98 PING的是同一个INTERNET地址。

我跟踪了下发送和接收数据,发现发送时,我截获的数据是在拨号处理以前的数据(没有那个PPP头,不知道是不是叫PPP头,呵呵),但是截获到的接收数据,却是有PPP头的,也就是说IP头不是跟在MAC头后面。中间插了8个字节。

我想这里肯定有人碰到过这问题,请问是怎么解决的,或者给我出点主意也好。还有,能不能让我就截到象PASSTHRU那样的数据,我不想要那个该死的PPP头。谢了先!
Newandold
驱动牛犊
驱动牛犊
  • 注册日期2003-01-10
  • 最后登录2004-08-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-07-16 13:35
你用的是那个pim?

我们早就用它实现过了包过滤功能,没有问题。
Quakexg
驱动小牛
驱动小牛
  • 注册日期2001-11-21
  • 最后登录2012-02-29
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望56点
  • 贡献值0点
  • 好评度18点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-07-16 15:21
搞定了,原来是这样的,先过滤到有PPP头的包,然后马上就能截获已经被去掉了PPP头的包。

但是有点奇怪,为什么没有PPP头的那个包我用它原始的ReceiveHanlder接收时要调用TCPH_NdisTransferData函数呢?是不是操作系统把我的包数据拷贝到操作系统的PACKET中?

我对98系统不是很熟,欢迎大家讨论。
Newandold
驱动牛犊
驱动牛犊
  • 注册日期2003-01-10
  • 最后登录2004-08-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-07-16 17:11
呵呵
游客

返回顶部