网站大量收购闲置独家精品文档,联系QQ:2885784924

电子科技大学计算机科学与工程学院操作系统结构分析及应用编程课件第五章 设备管理.ppt

电子科技大学计算机科学与工程学院操作系统结构分析及应用编程课件第五章 设备管理.ppt

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章 设备管理 设备管理---概述 Windows I/O系统概述 I/O系统结构 Windows驱动程序 I/O系统内核对象 I/O请求和处理 Windows I/O系统概述 I/O系统: 负责管理输入输出设备。 向用户隐藏硬件细节。 I/O系统结构 I/O系统组成 I/O管理器 设备驱动程序 PnP管理器 电源管理器 WMI支持例程 注册表 硬件抽象层(HAL) Windows驱动程序 驱动程序的功能 发送控制命令,进行错误处理 对各种可能的有关设备排队、挂起、唤醒等操作进行处理 执行缓冲区策略 执行一些特殊处理,比如代码转换。 驱动程序的分类 用户态驱动程序:虚拟设备驱动程序和Windows子系统打印机驱动程序 核心态驱动程序:文件系统驱动程序 、即插即用驱动程序 、非即插即用驱动程序 其他内核态驱动程序:WDM驱动程序、分层的驱动程序 Windows驱动程序--续 驱动程序分类图: Windows驱动程序--续 驱动程序的基本结构 初始化例程 “添加-设备”例程 分发例程 启动I/O例程 中断服务例程 DPC例程 I/O系统内核对象 文件对象 文件对象代表一个文件、设备或目录的打开实例。Windows系统将所有的设备都当成文件,所以文件对象就代表这个设备的设备对象。 驱动程序对象 驱动程序代表 系统中的一个 独立的驱动程序 驱动程序对象结构 I/O系统内核对象--续 设备对象和设备扩展 设备对象 代表一个具体的物理设备。 设备扩展 包含与特定设备相关的数据。 设备对象中包含一个指向对应驱动程序对象的指针,这样I/O管理器就能在接收到一个I/O请求时应该调用哪个驱动程序来处理该I/O请求。 “下一个设备对象”指针指向属于同一个驱动程序的下一个设备对象,该域把多个设备对象连接起来。 I/O系统内核对象--续 对象之间的关系 文件对象指向一个打开的设备实例,每当一个线程打开一个文件或设备时,都用一个文件对象指向对应的设备对象 驱动程序对象有多个与他相关的设备对象,这样就能方便的实现对硬件设备的控制。 设备对象还有一个指针指向该驱动程序对象,I/O管理器在接收到一个I/O请求时就知道该调用哪个驱动程序。 I/O请求和处理 I/O请求包 I/O系统使用一个I/O请求包(IRP,I/O Request Packet)表示每个I/O请求。当线程调用I/O服务时,I/O管理器就为该请求创建一个IRP数据结构,同时为该IRP传递一个指向相应驱动程序的指针。当驱动程序接收到一个IRP包时,执行IRP指定的操作,操作完成后将该IRP传递给I/O管理器。 I/O请求和处理--续 I/O请求处理 请求处理过程: I/O管理器接收用户发来的请求,并为该请求分配一个IRP数据结构。 检查I/O请求的合法性,并将IRP传递给合适的驱动程序。 驱动程序根据IRP的参数设置对设备进行操作。 操作完成时,驱动程序将IRP传递给I/O管理器。 I/O管理器检查IRP的状态域,查看用户的I/O请求是否完成。 I/O请求和处理--续 I/O请求处理过程图 设备管理---实验 WDM驱动程序 驱动程序实例 驱动程序加载 WDM驱动程序 WDM是一个分层的驱动程序模型。在该模型中,驱动程序的层和堆栈一起工作处理I/O请求。 WDM驱动程序--续 WDM驱动程序结构 可以把一个完整的驱动程序看作一个容器,它包含许多例程,当操作系统遇到一个IRP时,它就调用这个容器中的例程执行该IRP的各种操作。 驱动程序一般都有几个支持不同类型IRP的派遣函数,因此WDM驱动程序开发者的一个任务就是为这个容器选择所需要的例程。 WDM驱动程序--续 DriverEntry例程 DriverEntry是内核模式驱动程序主入口点函数,大部分的设备初始化工作都是在这个例程中完成的。函数原型如下: NTSTATUS DriverEntry ( IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath ); 函数返回值是一个长整型的NTSTATUS值 WDM驱动程序--续 DriverEntry函数的主要工作有一下几个方面: 首先是为驱动程序指定派遣函数。 每个WDM驱动程序必须能处理PNP、POWER、SYSTEM_CONTROL这三种请求;应该在这里为这些请求指定派遣函数。 在省略号处,你可以插入设置其它MajorFunction指针的其他代码,比如IRP_MJ_CREATE、IRP_MJ_READ、IRP_M

文档评论(0)

ormition + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档