• 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. 设备作为一个命名了的文件对象从而对终端用户是可见的, 通过一个命名的设备接口对用户态的代码可见.(受保护的子系统).

  • 相关阅读:
    面板评分太低会算两次
    没有使用大漩涡传送门没有杀死大法师瓦格斯
    win10创建本地用户
    延迟着色
    GPU 优化总结
    UE4 减少APK包的大小
    UE4 性能优化方法(工具篇)
    Unreal Engine 4的常见Tips
    虚幻引擎4设置Visual Studio
    模型导入的单位问题
  • 原文地址:https://www.cnblogs.com/awpatp/p/1614781.html
Copyright © 2020-2023  润新知