StackSize & CurrentLocation & StackCount & IopfCallDriver内部设置当前堆栈单元的代码
来源:互联网 发布:js获取div高度并赋值 编辑:程序博客网 时间:2024/04/28 16:20
StackSize:共几个IO空间:在每个设备对象中,有个StackSize子域,表明操作这个设备对象需要几层才能到达最下层的物理设备。(若共四个设备,最顶端的设备的StackSize = 4,最底下的设备的StackSize = 1 HighFiDO -> FDO -> LowFiDO ->PDO )
CurrentLocation :IRP头中的CurrentLocation字段初始化为StackCount+1
StackCount:除了本层外,下面还有几层
【原理】
1、B设备的派遣函数:(位于DriverB.sys中)
2、IopfCallDriver内部:(位于DriverA.sys中)
irpSp = IoGetNextIrpStackLocation( Irp ); // B设备的派遣函数中通过IoGetNextIrpStackLocation获取并设置下层堆栈。而这里的IopfCallDriver也是内部通过IoGetNextIrpStackLocation也获取下层堆栈的指针。由于他俩所操作的IRP都是pNewIrp,所以IoGetNextIrpStackLocation返回的都是同一个IO堆栈单元。
Irp->Tail.Overlay.CurrentStackLocation = irpSp;//并设置到了pNewIrpp->Tail.Overlay.CurrentStackLocation中,这样到达A设备的派遣函数中时,通过windbg发现CurrentStackLocation指向的就是在设备B中设置的堆栈的指针
0 0
- StackSize & CurrentLocation & StackCount & IopfCallDriver内部设置当前堆栈单元的代码
- StackSize & CurrentLocation & StackCount & IopfCallDriver内部设置当前堆栈单元的代码
- 白话 StackCount StackSize CurrentLocation
- 堆栈的内部运作机制
- IRP中一个CurrentLocation域的理解
- [VB.NET]VB2005,DataGridView如何设置当前的单元格里的内容处于编辑状态.
- AndroidStudio设置当前项目的代码管理工具
- keil中编写arm代码堆栈的设置
- 堆栈大小的设置
- 遇到的问题-----------c#在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式
- server 内部异常堆栈跟踪的结尾
- JList如何设置选中单元时单元的高度变大。
- php中文字符编码的长度,以及设置得到当前(内部)编码的函数
- 代码点和代码单元的关系
- 代码点和代码单元的理解
- 如何获取当前线程的调用堆栈
- 查看java当前线程的堆栈信息
- Android 打印当前线程的调用堆栈
- HDFD 四个配置文件(core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml )的简单介绍
- iOS 本地数据存储(一)
- 解决NetBeans编辑器中文乱码问题
- Linux下调整根目录的空间
- bzoj2705
- StackSize & CurrentLocation & StackCount & IopfCallDriver内部设置当前堆栈单元的代码
- C#学习日记11---数据类型 之 枚举(enum)类型
- 应用层和驱动层的同步与异步的处理逻辑及底层实现
- 框架的小知识集
- 通过测试实例详细分析 IoMarkPending 的原理
- 修炼内在精神力量
- ListEntry 链表图解,及解析 InsertTailList & RemoveHeadList&RemoveEntryList函数
- 详细分析CONTAINING_RECORD宏
- 嵌套的 CONTAINING_RECORD 宏