arkzhu
驱动牛犊
驱动牛犊
  • 注册日期2002-12-02
  • 最后登录2009-09-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2472回复:10

关于Passthru的问题?

楼主#
更多 发布于:2002-12-21 13:59
想用Passthru做过滤,有几个疑问:
1、Passthru能否截获数据包,在DDK里好象说do nothing。
2、Passthru是在那个函数内看到IP包的包头信息,我想数据还没有传到IP层,能否得到mac地址,源IP地址,目的IP地址等。怎样得到
3、本人想写一个规则来过滤,这个规则为应用程序,怎样和驱动通信呢?

最新喜欢:

xiaojian521xiaoji... riririririri
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-12-21 14:16
1、绝对可以

2、这些都可以得到,不过你要对 NDIS_PACKET 结构有一定的了解

3、建议参考 XP 版的 Passthru,里面已经很好的实现了这个接口,你只要自定义一些控制代码分别处理就可以了
magicx
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2014-08-18
  • 粉丝1
  • 关注0
  • 积分-14分
  • 威望13点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-12-21 16:50
1、绝对可以

2、这些都可以得到,不过你要对 NDIS_PACKET 结构有一定的了解

3、建议参考 XP 版的 Passthru,里面已经很好的实现了这个接口,你只要自定义一些控制代码分别处理就可以了


加10分!
[color=red]大头鬼! :P[/color]
arkzhu
驱动牛犊
驱动牛犊
  • 注册日期2002-12-02
  • 最后登录2009-09-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-12-22 08:49
感谢edust!!!!!!!!!
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-12-22 14:24
呵呵,好啊,有分拿就再发挥一点:

(1)Passthru 这个 IMD 示例只是把经过的包重新描述之后仍旧送往既定目的地,所以文档里说它“do nothing”,你当然要改写它以达到自己的目的了,它处在中间层,一般的任务都可以做到

(2)经过 IMD 的包中包括 MAC 头,IP 头,TCP 头,TCP 数据(对于一个 TCP 包),所以这些都可以得到,关于 NDIS_PACKET 的结构教程跟讨论,我推荐一篇东西,非常好!
http://www.pcausa.com/resources/ndispacket.htm

(3)首先你把 XP 版的 Passthru 看一下,那个框架已经很完善了,之后再参考一下《Windows WDM 设备驱动程序开发指南》里面的相关内容,比如 CTL_CODE 的定义方法,交换数据的几种方法之类的东西。
arkzhu
驱动牛犊
驱动牛犊
  • 注册日期2002-12-02
  • 最后登录2009-09-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-12-22 14:36
呵呵,好啊,有分拿就再发挥一点:

(1)Passthru 这个 IMD 示例只是把经过的包重新描述之后仍旧送往既定目的地,所以文档里说它“do nothing”,你当然要改写它以达到自己的目的了,它处在中间层,一般的任务都可以做到

(2)经过 IMD 的包中包括 MAC 头,IP 头,TCP 头,TCP 数据(对于一个 TCP 包),所以这些都可以得到,关于 NDIS_PACKET 的结构教程跟讨论,我推荐一篇东西,非常好!
http://www.pcausa.com/resources/ndispacket.htm

(3)首先你把 XP 版的 Passthru 看一下,那个框架已经很完善了,之后再参考一下《Windows WDM 设备驱动程序开发指南》里面的相关内容,比如 CTL_CODE 的定义方法,交换数据的几种方法之类的东西。


看了Passthru,但不是很懂。不知IMD在那儿重新描述包,在那儿发送。
在notifyob 中是用那个函数来和驱动通信的?





[编辑 -  12/22/02 by  arkzhu]
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-12-24 09:49
 
看了Passthru,但不是很懂。不知IMD在那儿重新描述包,在那儿发送。

下面针对 XP 版的 Passthru,2000 版的也插差不多:
发送:
MPSendPackets
PtSendComplete

接收:
PtReceive
PtReceiveComplete

接收:
PtReceivePacket
MPReturnPacket
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-12-24 09:51
 
在notifyob 中是用那个函数来和驱动通信的?

那个 NotifyObject 没看过,不过你可以不用它那个,把它去掉之后写一个 Win32 App 跟 Driver 通讯。
fuq_dddd
驱动老牛
驱动老牛
  • 注册日期2002-10-15
  • 最后登录2009-10-09
  • 粉丝0
  • 关注0
  • 积分331分
  • 威望57点
  • 贡献值0点
  • 好评度28点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-12-27 11:22
 
引用:
--------------------------------------------------------------------------------
 看了Passthru,但不是很懂。不知IMD在那儿重新描述包,在那儿发送。
--------------------------------------------------------------------------------


下面针对 XP 版的 Passthru,2000 版的也插差不多:
发送:
MPSendPackets
PtSendComplete

接收:
PtReceive
PtReceiveComplete

接收:
PtReceivePacket
MPReturnPacket


1. MPReturnPacket起什么作用?在什么情况下起作用?
2. PtReceivePacket调用结束之后,是否调用PtReceiveComplete?
星星之火 可以燎原 每一个光亮 都可能是黎明 [img]http://joke.tom.com/img/assets/1/gaoxiao_80_910.gif[/img]
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-12-27 13:05
 
1. MPReturnPacket起什么作用?在什么情况下起作用?


如果上层 Protocol 保留了包的所有权,那么你就要在 PtReceivePacket 中返回 1 告诉下层 Adapter,之后等上层 Protocol 处理完之后它回调用 MPReturnPacket 通知你。
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-12-27 13:07
 
2. PtReceivePacket调用结束之后,是否调用PtReceiveComplete?


对应关系是这样的:

 
接收:
PtReceive
PtReceiveComplete

接收:
PtReceivePacket
MPReturnPacket
游客

返回顶部