阅读:1722回复:7
ddk中passthru例子的执行过程不太明白,请哪位高手指点一下
我刚刚接触NDIS中间层编程,正在看《Windows防火墙与网络封包截获技术》中的xPASSTHRU例程,可是他是怎么执行的我没太看懂,我用DbgView截获的信息,好象它的MPQueryInformation(...)总是被调用,这是怎么回事啊?
|
|
沙发#
发布于:2005-05-18 15:51
你可以搜搜以前的贴子,先看看。架构不是一两句话可以说清楚的,
你得先能提出问题来。这种问题没有办法回答 |
|
板凳#
发布于:2005-05-18 16:31
在DriverEntry中他进行了注册,然后主函数就执行完了。是不是这个驱动程序就执行完了?但操作系统在不断的调用它的查询信息函数MPQueryInformation(...)/*或者这一类的函数*/来监视通过的数据,如果有数据就进行相应的操作,如果没有就不停的查询啊?
我没有找到这方面的详细文档,我也很想了解这个中间层程序的执行过程,这样看程序就好多了。 |
|
地板#
发布于:2005-05-18 17:10
可以参考DDK的文档,虽然并不怎么看的懂.....
|
|
|
地下室#
发布于:2005-05-18 17:12
多给点分,给你好好解释解释,呵呵
DriverEntry 就相当于dll 的DllMain,执行完后,注册了各种回调 函数后,就等着操作系统需要的时候来调用了。象dll一样,总是被动的被调用 《但操作系统在不断的调用它的查询信息函数MPQueryInformation《(...)/*或者这一类的函数*/来监视通过的数据,如果有数据就进《行相应的操作 这个理解不对,需要系统的看一下ddk的ndis部分,先看protocol,miniport,然后再看im,因为im就是对上表现为miniport, 对下表现为protocol. |
|
5楼#
发布于:2005-05-18 17:38
没问题,呵呵...
你说的这两个接口的功能我也看了点,就是它的程序里有好多Recieve和Send函数,我有点搞不清是何时被调用的,我对包的过滤是在protocol接口接收进来以后,还是在从miniport发送的时候? |
|
6楼#
发布于:2005-05-18 18:07
你说的这两个接口的功能我也看了点,就是它的程序里有好多Recieve和Send函数,我有点搞不清是何时被调用的,我对包的过滤是在protocol接口接收进来以后,还是在从miniport发送的时候? 对于发送是上层协议驱动,发包的时候,你的MSendPack被调用,是从上到下的。 对于收包,是网卡miniport调用个NdisxxIndicateReceive,使得你的PtReceive or PtReceivePacket被调用,是从下往上。 这两不同的流程,一收,一发,你都要过滤。 |
|
7楼#
发布于:2005-05-23 17:21
这是不是说MPSend是向下发包,PTRecieve是接受下面的包向上传?那我就不明白了,中间层不是有上下两个接口吗,(MINIPORT和PROTOCOL),MPSend应该是MINIPORT接口的函数吧,发包时候只调用MPSend
那PROTOCOL接口部分就不处理了吗?同理向上的时候只有PROTOCOL接口的PTRecieve处理吗? |
|