首页
社区
课程
招聘
[求助]设置自己的irp完成例程
发表于: 2008-11-6 11:20 5946

[求助]设置自己的irp完成例程

2008-11-6 11:20
5946
有个问题困扰很久,只好来求助各位大侠。
现在我截取到了win的tdi通信层tcpdispatch函数入口,并且截取了tdi_create这个irp,我想对这个irp设定一个自己的completeroution这个完成例程,在设定完这个例程之后,并不是使用iocalldriver来调用下一层驱动,而是直接把这个irp传提到tcpdispatch函数入口,问题就出在这里。传递之后,整个通信过程可以顺利完成,但是自己的completeroution这个完成例程并没有被调用。
设定自己的completeroution这个完成例程的方法尝试过两种,一种是用IoSetCompletionRoutine,但是这个函数是设定下一层驱动的irp完成例程,貌似不能在我这种情况下使用。第二种是直接设定irp栈的CompletionRoutine和context这两个参数,然后下发,但是通信完成之后也没有能够调用。
跟踪了tcpdispatch里面的create函数,发现里面已经用iocompleterequest来设定该irp已完成,并且status和information也已经填充。
同时研究了tdifw1.4.4的源码,发现里面如果采用hook的话,也用了IoSetCompletionRoutine,但是驱动不能加载。。。
现在很无奈了,不知道问题出在哪里了,不知道那位兄弟也遇到过这种情况,望不吝赐教,万分感谢。

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 112
活跃值: (51)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
驱动不能加载,这我倒没碰到过,不过有一点,我可向你学习学习,跟踪问题?你是用IRPTrace吗?我的怎么好像不能用还是不会用,晕了我好久。
2008-11-20 23:28
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
不是很明白你说的传递到tcpdispatch函数入口?
如果是过滤驱动的话,你直接IoCallDriver,就发给下层的dispatch处理了啊.
2008-11-22 22:06
0
游客
登录 | 注册 方可回帖
返回
//