Windows IO System是由一些executive components组成,这些component可以认为是ntoskrnl.exe中相对独立的一些module。

整个IO System是由IRP数据包驱动的, IRP(IO Request Packet)是IO请求数据包,是多个IO系统组件之间进行通信的数据包。

IRP可以完全理解为与网络数据包相同的概念。


IO Manager

IO Manager是整个IO System的心脏。

1. 负责创建、回收IRP数据包,以及对IRP数据进行队列缓存、同步

2. 封装一些driver常用的代码,供driver调用

但是IO Manager不管IRP的内容细节,这些由具体的Device Driver负责解析并且完成IRP请求的操作。


Device Driver

Driver接收IRP,并且按照IRP的指示,完成相应的操作。

完成操作之后,Driver可以把IRP交给IO Manager回收,或者交由IO Manager转发给其他的Driver进行处理。


PnP Manager

Plug and Play,可以管理那些支持“热插拔”方式工作的硬件。


Power Manager

可以向各个driver改善电源相关的事件,比如笔记本电脑的在电池供电和有线电源供电之间进行转换时,显卡驱动可以作出相应的状态转换。


WMI support routines

WMI: Windows Management Instrumentation

用户态的程序可以获取WMI的事件,这些事件是由WMI子系统产生。

Windows允许驱动间接地作为WMI事件的providers,或者说过滤相应的事件。


与Driver相关的文件

.inf  安装文件

.cat  数字签名文件


HAL

Hardware Abstraction Layer

将driver从那些与平台相关的操作中解放出来,具体来说,由HAL来直接处理in/out指令,抽象driver与CPU Processor以及中断处理器之间的交互。

HAL提供平台无关的API供driver使用。

最新文章

  1. 给定一个double类型的数组arr,其中的元素可正可负可0,返回子数组累乘的最大乘积。例如arr=[-2.5,4,0,3,0.5,8,-1],子数组[3,0.5,8]累乘可以获得最大的乘积12,所以返回12。
  2. 整合了一个功能强大完善的OA系统源码,php全开源 界面漂亮美观
  3. 验证页面多个input文本的必填项
  4. 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:2.搭建环境-2.4. 安装JDK
  5. Qt OpenGL三维绘图
  6. ubuntu使用github
  7. RabbitMQ笔记
  8. VS2013 编译 MySql Connector C 6.1.6
  9. PHP性能优化学习笔记--语言级性能优化--来自慕课网Pangee http://www.imooc.com/learn/205
  10. linux之SQL语句简明教程---表格连接
  11. 浏览器被劫持到http://hao.169x.cn/?v=108的解决办法
  12. Docker for Mac与IntelliJ Docker Integration插件的兼容性问题
  13. OpenStack neutron 环境云主机使用keepalived vip + 给vip绑定浮动IP 步骤及注意事项
  14. VB与C#语言部分不用的地方Part1
  15. 经典卷积神经网络(LeNet、AlexNet、VGG、GoogleNet、ResNet)的实现(MXNet版本)
  16. C#多线程+委托+匿名方法+Lambda表达式
  17. TNS-12560: TNS: 协议适配器错误同时伴有TNS-00584: 有效节点检查配置错误的解决方法
  18. leetcode31
  19. Spring容器IOC解析及简单实现(转)
  20. java.lang.IllegalMonitorStateException异常

热门文章

  1. linux-centOS环境下安装jdk8
  2. 在线清空nohup.out内容
  3. Get The Treasury【HDU-3642】【扫描线】
  4. redux请求数据流程
  5. bash 中的特殊变量
  6. intellij中maven不能导入pom文件中指定的jar包
  7. C++中的智能指针类模板
  8. python小学堂-基础调用
  9. USACO 2014 US Open Odometer /// 数位DP
  10. JAVA编程思想(1) - 一切都是对象