首页
社区
课程
招聘
[求助]关于发送一个IRP怎样计算StackSize的问题,请指点一下啊!
发表于: 2009-3-26 11:51 4791

[求助]关于发送一个IRP怎样计算StackSize的问题,请指点一下啊!

2009-3-26 11:51
4791
我想发送一个IRP_MJ_READ,怎样计算StackSize?谢谢!

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

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 71
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
zwopen**-->ObReferenceObjectByHandle-->IoGetBaseFileSystemDeviceObject-->IoAllocateIrp(devobj->StackSize,1);
2009-3-26 12:55
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
3
其实就是看你要发送到的目标设备下面还有几层驱动,因为每层都要占用一个栈的位置
2009-3-26 13:35
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
楼上的大牛,能不能举个例子
2009-3-26 16:34
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
5
其实道理很简单啊,每一层设备都要使用一个栈,顶层设备使用最靠下的栈,下层设备的栈则是从下往上依次递减,如果栈的个数不够用就会BSOD,这个可以参考IofCallDriver的代码。IoAttachDeviceStack/IoDetachDevice等函数在操作设备时会对顶层设备的栈大小做调整,Attach时增加,Detach则减小,所以申请IRP时按顶层设备的栈大小来就行了。你可以用DeviceTree观察一下某设备及其附加设备的栈大小有什么关系就知道了
2009-3-27 08:01
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
6
2楼的兄弟把代码基本上都说出来了,就看你自己理解了
2009-3-27 08:04
0
游客
登录 | 注册 方可回帖
返回
//