hujing1230
驱动牛犊
驱动牛犊
  • 注册日期2005-04-11
  • 最后登录2005-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1724回复:7

ddk中passthru例子的执行过程不太明白,请哪位高手指点一下

楼主#
更多 发布于:2005-05-18 15:40
我刚刚接触NDIS中间层编程,正在看《Windows防火墙与网络封包截获技术》中的xPASSTHRU例程,可是他是怎么执行的我没太看懂,我用DbgView截获的信息,好象它的MPQueryInformation(...)总是被调用,这是怎么回事啊?
hujing1230
驱动牛犊
驱动牛犊
  • 注册日期2005-04-11
  • 最后登录2005-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-05-23 17:21
这是不是说MPSend是向下发包,PTRecieve是接受下面的包向上传?那我就不明白了,中间层不是有上下两个接口吗,(MINIPORT和PROTOCOL),MPSend应该是MINIPORT接口的函数吧,发包时候只调用MPSend
那PROTOCOL接口部分就不处理了吗?同理向上的时候只有PROTOCOL接口的PTRecieve处理吗?
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2005-05-18 18:07
你说的这两个接口的功能我也看了点,就是它的程序里有好多Recieve和Send函数,我有点搞不清是何时被调用的,我对包的过滤是在protocol接口接收进来以后,还是在从miniport发送的时候?

对于发送是上层协议驱动,发包的时候,你的MSendPack被调用,是从上到下的。
对于收包,是网卡miniport调用个NdisxxIndicateReceive,使得你的PtReceive or PtReceivePacket被调用,是从下往上。

这两不同的流程,一收,一发,你都要过滤。


hujing1230
驱动牛犊
驱动牛犊
  • 注册日期2005-04-11
  • 最后登录2005-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-05-18 17:38
没问题,呵呵...
你说的这两个接口的功能我也看了点,就是它的程序里有好多Recieve和Send函数,我有点搞不清是何时被调用的,我对包的过滤是在protocol接口接收进来以后,还是在从miniport发送的时候?
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2005-05-18 17:12
多给点分,给你好好解释解释,呵呵
DriverEntry 就相当于dll 的DllMain,执行完后,注册了各种回调
函数后,就等着操作系统需要的时候来调用了。象dll一样,总是被动的被调用

《但操作系统在不断的调用它的查询信息函数MPQueryInformation《(...)/*或者这一类的函数*/来监视通过的数据,如果有数据就进《行相应的操作
 这个理解不对,需要系统的看一下ddk的ndis部分,先看protocol,miniport,然后再看im,因为im就是对上表现为miniport,
对下表现为protocol.
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
5楼#
发布于:2005-05-18 17:10
可以参考DDK的文档,虽然并不怎么看的懂.....
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
hujing1230
驱动牛犊
驱动牛犊
  • 注册日期2005-04-11
  • 最后登录2005-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-05-18 16:31
在DriverEntry中他进行了注册,然后主函数就执行完了。是不是这个驱动程序就执行完了?但操作系统在不断的调用它的查询信息函数MPQueryInformation(...)/*或者这一类的函数*/来监视通过的数据,如果有数据就进行相应的操作,如果没有就不停的查询啊?
我没有找到这方面的详细文档,我也很想了解这个中间层程序的执行过程,这样看程序就好多了。
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2005-05-18 15:51
你可以搜搜以前的贴子,先看看。架构不是一两句话可以说清楚的,
你得先能提出问题来。这种问题没有办法回答
游客

返回顶部