sunsea
驱动牛犊
驱动牛犊
  • 注册日期2013-03-09
  • 最后登录2013-06-01
  • 粉丝0
  • 关注0
  • 积分39分
  • 威望231点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分2分
阅读:1716回复:1

史上最形象IRP说明!

楼主#
更多 发布于:2013-03-15 15:24
微软的东东,多数是把聪明人搞晕,把晕的人搞残,把残的人搞死!
    一直以来,想弄明白驱动和IRP到底是怎么回事,在驱网上也查了无数的资料,到头来,手脚抽筋也没弄明白。
 
    从网上查到一段说明,可以说是迄今最后的解释,在家里看了N天,似同天书。
 

1.    子系统调用NT的IO系统服务打开命名文件。

2.    NT的IO管理器调用对象管理器,查询命名文件,并且帮助解决文件对象的符号连接。同时调用安全参照监视器,检查子系统是否具备打开文件句柄的正确权限。

3.    如果NT文件系统不认识文件对象,IO管理器挂起请求。调用多个文件系统直到识别出文件对象才继续请求。

4.    IO管理器负责为打开的请求分配内存和初始化IRP。对于NT驱动,打开请求等同于创建请求。

5.    IO管理器调用文件系统驱动,将IRP传递给它们。文件系统存取它们的IRP中本地IO栈,决定必须进行哪一种操作。检查参数,确定请求文件是否在缓存中。如果不是,设置下一个IRP中驱动的IO栈。

6.    无论是驱动处理IRP还是完成IO请求操作。都调用IO管理器和其它NT元素提供的核心态例程。

7.    驱动设置返回给IO管理器的IRP中的IO状态块表示请求操作是成功还是失败。

8.    IO管理器通过获取IRP中的IO状态,将信息同过保护子系统返回给原始调用者。

9.    IO管理器释放已完成的IRP。

10.    如果打开操作成功,IO管理器返回文件句柄给子系统。反之返回错误状态。

 
 
 
    晕晕乎乎中,似乎有所顿悟,何不用一个具体的类比,也解释一下IRP到底是怎么回事,所以喝了二两二锅头,斗胆把上面的10段话作如下的翻译,有翻译不妥当之处,望大大们指正:
 

1.    客人(IRP)来到大厦(驱动程序)外,该大厦有一个按人名造册的接待系统(IO管理器)。

2.    客人(IRP)先到大厅,查花名册,按人名(设备对象DeviceObject,符号连接SymbolicLink)查。同时查安全薄,看这个人是不是恐怖分子、台独分子(STATUS_INVALID_DEVICE_REQUEST, SECURITY_CLIENT_CONTEXT),不是则被允许进入。如是,则不允许则禁入。

3.    如果查不到客人名,则拒绝进入。调用多本花名册(文件系统,FSD),直到识别出来人,才继续。

4.    接待系统(IO管理器)为客人(IRP)分配房间、会议室,餐饮,一应俱全(RtlZeroMemory ,RtlCopyMemory),并打扫一遍(初始化, KeSetEvent, KeWaitForSingleObject, IoMarkIrpPending, InitializeObjectAttributes)。

5.    接待系统(IO管理器)调用管理人员,将客人的信息传递给下面各部门。各部门管理人员根据他们的子系统情况,分配资源队列(本地IO栈),并决定必须进行哪一种操作(IoGetCurrentIrpStackLocation, Irp->AssociatedIrp.SystemBuffer)。客人是否在不同级别的客人清单中。如果没有这个级别,则新建一个级别 (DeviceObject->DeviceExtension),并进行登记。比如是国宾级,则一定要准备一个总统套间。

6.    不论是对于客人(Irp),还是客人的级别档次要求(IO栈),都使用模块化的规范流程。

7.    向大厦总经理报告人员进入、级别招待的请求是成功还是失败。

8.    获取人员、招待的状态,将是不是超过招待能力的信息(过保护状态)返回给新来的客人。如果超出接待能力,则挂牌“客满,恕不接待”。

9.    人员离开,则释放客人占有的所有资源(分配房间、会议室等)。IoCompleteRequest, DriverObject->DriverUnload,IoDeleteDevice, ZwClose

10.    招待成功,返回OK或返回错误(Irp->IoStatus.Status = STATUS_SUCCESS,return ntStatus)

最新喜欢:

wangzaiwangza...
leonardo1019
驱动牛犊
驱动牛犊
  • 注册日期2010-03-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望91点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2013-03-18 10:01
优秀文章,支持!n神马都是浮云
游客

返回顶部