zoukankan      html  css  js  c++  java
  • Windows Debugging之十一

    I/O数据结构

    ==========

    数据结构

    有四种代表I/O请求的主要的数据结构: file objects(文件对象), driver objects(驱动对象),  device objects(设备对象), I/O request packets(IRPs)(IO请求封包)

    这些数据结构中的每一个都定义在DDK文档库中的头文件NTDDK.H中. 你可以使用内核debugger的命令!file, !devobj, !drvobj, 和 !irp来查看它们.


    文件对象- File Object
    这是一个代表着打开的文件, 设备, 目录, 卷等的, 在用户态可见的对象. 文件对象可以通过文件句柄来访问, 文件句柄是由受保护的子系统函数返回的, 而该子函数是向下调用打开文件对象的系统服务的. IO系统服务的调用者是等待文件句柄的. 在任何一个给定的时刻, 几个文件对象可以与一个单个的, 共享的文件联系起来, 但是每一个这样的文件都有一个独一无二的句柄, 和一个objcet-specific的当前文件指针的值.

    文件对象有时也被叫做"persistent object", 因为这个在所有运行时文件对象集后台的实体在系统启动之后, 就被保存起来了.


    驱动对象- Driver Object
    是一个代表驱动加载镜像的仅内核态对象, 被IOmanager使用, 用来定位驱动中的某些入口点. 

    设备对象- Device Object
    由IO manager定义的内核态对象, 代表着物理的, 逻辑的, 虚拟的设备. 所有的驱动都调用IoCreateDevice方法来为物理的, 逻辑的, 虚拟的设备创建和初始化一个设备对象, 驱动程序服务于该对象. PnP驱动创建三种设备对象: 总线驱动创建PDO, 功能驱动创建FDO, 过滤驱动创建DO. 设备作为一个命名了的文件对象从而对终端用户是可见的, 通过一个命名的设备接口对用户态的代码可见.(受保护的子系统).

  • 相关阅读:
    Java 程序流程语句
    Java 基本语法
    Java 环境搭建
    Spring事务管理
    AOP 与 Spring中AOP使用(下)
    python爬虫笔记之爬取足球比赛赛程
    python爬虫笔记之re.match匹配,与search、findall区别
    python爬虫笔记之re.compile.findall()
    python爬虫笔记之re.IGNORECASE
    跨站脚本攻击(selfxss)笔记(三)
  • 原文地址:https://www.cnblogs.com/awpatp/p/1614781.html
Copyright © 2011-2022 走看看