第6章+四五六章作业.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
注册表:存储基本硬件、驱动程序的初始化和配置信息的数据库。 硬件抽象层:I/O访问例程把设备驱动程序与多种多样的硬件平台隔离开来,使它们在给定的体系结构中是二进制可移植的,并在Windows 2000/XP支持的硬件体系结构中是源代码可移植的。 图6.27 一个典型的I/O请求流程 6.8.3 输入/输出系统的数据结构 1.文件对象 文件对象提供了基于内存的共享物理资源的表示法(除了被命名的管道和邮箱外,它们虽然是基于内存的但不是物理的)。在Windows 2000/XP的I/O系统中,文件对象也代表这些资源。当调用者打开文件或单一设备时,I/O管理器将为文件对象返回一个句柄。文件对象的主要属性如表6-2所示。 表6-2 文件对象属性 属 性 目 的 文件名 标识文件对象指向的物理文件 字节偏移量 在文件中标识当前位置(只对同步I/O有效) 共享模式 表示当调用者正在使用文件时,其他调用者是否可以打开文件进行读、写操作或删除操作 指向设备对象的指针 表示文件在其上驻留的设备类型 指向卷参数块的指针 表示文件在其上驻留的卷或分区 指向区域对象的指针 描述一个映射文件的根结构 指向专用高速缓存映射的指针 表示文件的哪一部分由高速缓存管理器管理,以及它们驻留在高速缓存的什么地方 图6.29说明打开一个文件时系统所发生的情况。在这个实例中,C程序调用库函数fopen,由它去调用WIN32的CreatFile函数。然后由系统DLL在NTDLL.DLL中调用本地NTCreatFile函数,在NTDLL.DLL中的例程包含引发到核心态系统服务调度程序转换适当的指令。最后,系统服务调度程序在NTOSKRNL.EXE中调用真正的NTCreatFile例程。 图6.29 打开一个文件对象的过程 2.驱动程序对象和设备对象 当线程为一个文件对象打开一个句柄时,I/O管理器必须根据文件对象名称来决定它将调用哪个驱动程序来处理请求。而且,I/O管理器必须在线程下一次使用同一个文件句柄时可定位这个信息。 驱动程序对象代表系统中一个独立的驱动程序,I/O管理器从这些驱动程序对象中获得并为I/O记录每个驱动程序的调度例程的入口。 设备对象在系统中代表一个物理的、逻辑的或虚拟的设备,并描述它们的特征,如缓冲区的对齐方式和它用来保存即将到来的I/O请求包的设备队列的位置。 图6.30显示了一个设备驱动器对象。从图中可以看出,设备对象反过来指向自己的驱动程序对象,这样I/O管理器就知道在接收一个I/O请求时应该调用哪个驱动程序,即它使用设备对象找到代表该设备驱动程序的驱动程序对象,然后利用在初始化请求中提供的功能码来索引驱动程序对象。每个功能码都对应于一个驱动程序的入口。 图6.30 Windows 2000/XP输入/输出的数据结构 3.IO请求包 IRP是I/O系统用来存储处理I/O请求所需信息的地方。当线程调用I/O服务时,I/O管理器就构造一个IRP来表示在整个I/O过程中要进行的操作。I/O管理器在IRP中保存一个指向调用者的文件对象指针。IRP由两部分组成:固定部分(标题)和一个或多个堆栈单元。 图6.31 单层驱动程序中一个I/O请求涉及的数据结构 6.8.4 Windows 2000/XP的设备驱动程序 1.核心驱动程序 核心驱动程序主要分为如下几种: (1) 文件系统驱动程序:接收访问文件的I/O请求,主要针对大容量的设备和网络设备。 (2) PnP管理器和电源管理器设备驱动程序:包括大容量存储设备、协议栈和网络适配器等。 (3) 为NT编写的驱动程序:可在Windows 2000/XP下工作,但一般不支持电源管理和PnP。 (4) WIN32子系统显示和打印驱动程序:把与设备无关的图形(GDI)请求转换为设备专用请求。这些驱动的集合称为“核心态图形驱动程序”。 (5) WDM驱动程序:包括对PnP、电源管理和WMI的支持。 2.Windows 2000/XP支持的其他驱动程序 Windows 2000/XP支持的其他驱动程序主要有: (1) 虚拟设备驱动程序:用于模拟16位的MS DOS的驱动程序,它们捕获MS DOS应用程序对端口的引用,并将其转化为本机WIN32 I/O函数。 (2) WIN32子系统的打印驱动程序:把与设备无关的图形(GDI)请求转换为打印机相关命令,这些命令再发给核心模式的驱动程序,例如,并口驱动(Parprot.sys)、USB打印机驱动 (Usbprint.sys)等。 3.硬件支持的驱动程序 硬件支持的驱动程序主要有: (1) 类驱动程序:该驱动程序一般提供某类设备的基本支持接口,如磁盘、C

文档评论(0)

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

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

1亿VIP精品文档

相关文档