首页
社区
课程
招聘
[求助]什么时候需要自己释放IRP相关资源呢????
发表于: 2009-12-7 17:41 3813

[求助]什么时候需要自己释放IRP相关资源呢????

2009-12-7 17:41
3813
看了WINDOWS驱动详解好多问题不懂。

书上说IoBuildAsynchronousFsdRequest创建的IRP,就需要自己释放跟IRP相关的资源。书上的这句话是不是不对呀????我发现创建异步IRP和同步IRP,区别就是与线程关联没,同步IRP与线程关联,如果线程退出,就会把线程队列里的IRP都IoCancelIrp取消。

我看IoCompleteRequest里,如果当前IRP栈没有提供完成列程,往后面走好象他还是会自己释放相关IRP资源的。
要是有完成列程,就调用完成列程后返回,那的确应该在完成列程里释放相关的IRP资源。

不知道这样理解对不对,不清楚到底什么时候才该自己释放IRP。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 74
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
OSR  的一篇文章, “Rolling Your Own - Building IRPs to Perform I/O”, 讲到了这个,你找找看。

IoBuildSynchronousFsdRequest() 和 IoBuildAsynchronousFsdRequest() 对 thread 有不同的操作,所以最后由 IoManager 还是 completion routine 来 释放 IoFreeIrp() , 要求不同。
2009-12-8 08:58
0
游客
登录 | 注册 方可回帖
返回
//