- 1、本文档共53页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第11章 Windows环境下输入输出程序设计 Windows是一个多任务操作系统,在保护模式下工作。 Windows操作系统不支持用户程序对计算机底层硬件进行直接控制。用户程序需要输入/输出时,可以通过通过API(Application Program Interface,应用程序接口)来调用设备驱动程序,对设备实现间接控制,进行输入/输出。 Windows 9x使用VxDs(Virtual Device Driver’s,虚拟设备驱动)设备驱动程序。 Windows 2000/XP使用WDM(Windows Driver Model,Windows驱动程序模型)设备驱动程序。 11.1 Windows设备驱动程序 11.1.1 虚拟设备 在多任务运行环境下,计算机内的硬件、软件资源为多个任务共享。任何一个用户程序都不能独占系统的硬件、软件资源。 虚拟设备实质上是真实物理设备的部分资源和相关软件的组合,用来完成用户程序需要的功能。 虚拟设备不但可以代表实际存在的硬件设备,还可以模拟实际上不存在的“设备”,供用户使用。 计算机上的“虚拟光驱”就是一个典型的虚拟设备。与这个设备同名的物理设备是不存在的,用户使用的是硬盘的部分存储空间以及相应的服务程序。 使用虚拟设备好处: 实现多任务对系统资源的共享,方便用户的使用; 实现任务与任务、任务与系统之间的隔离和保护; 规范外部设备输入、输出方法,使不同工作方式的设备用相同的方式进行输入输出。 对Windows应用程序来讲,虚拟设备就是真实设备,应用程序分不清那个设备是由真实硬件支持的真实设备,那个设备是由虚拟设备驱动程序模拟的虚拟设备。 11.1.2 Windows9X设备驱动程序 顶层: Windows 9x操作系统的顶层组件工作在特权级3,称为ring3层。它给应用程序的运行提供Win32 API服务。 Windows 9x应用程序和Win32 API服务一起构成操作系统的顶层,称为系统虚拟机(VM,Virtual Machine)。 对于一个任务来说,这些服务程序以及他们所掌控的硬件资源就是一台“实实在在”的计算机。但是,对于整个系统来说,他们只是由操作系统向用户提供的一个运行用户程序的平台,包括为这个应用程序服务的操作系统组件和部分的硬件资源。 每一个DOS应用程序都在一个独立的虚拟机中运行,操作系统允许多个虚拟机同时处于运行状态。 底层: Windows 9x操作系统的底层组件工作在0特权级,称为ring0层,它就是虚拟机管理器(VMM,Virtual Machine Manager)。 Windows 9x虚拟机管理器由一个内核服务集和许多虚拟设备驱动程序(VxDs,Virtual Device Driver’s)组成。 许多VxDs是由Microsoft公司随操作系统提供的,如键盘和显示器等的VxDs,有的VxD则由设备制造商提供,或者由用户自行编写。 VxD用来支持特定的硬件或软件,完成需要的功能。 VxDs中的程序运行在ring0层,可以执行所有的指令,完成所需的任何软硬件的操作。 对于应用程序而言,虚拟机管理器是透明的,应用程序感觉不到管理器的存在。 微软已经宣布,从2006年6月起不再提供对Windows 9x的技术支持。因此,Windows 9x和VxDs的使用将逐渐减少。随着Windows 2000/XP的广泛使用,WDM驱动程序的开发和使用已成为主流。 11.1.3 Windows2000/XP设备驱动程序 Windows 2000操作系统的层次结构 Windows 2000内核模式驱动程序的类型 11.2 WDM驱动程序 WDM是Microsoft力推的新型驱动程序模型,首先出现在Windows NT中,现在的Windows 98/Me/2000/XP都支持WDM。 微软宣称,在后续的操作系统中将继续支持WDM。 11.2.1 WDM驱动程序模型和层次结构 WDM是一个分层的驱动程序。 它至少有功能驱动程序(Function driver)和总线驱动程序(Bus driver)两个层面。 功能驱动程序提供一个设备的使用功能,或者可以认为它就是一个设备的驱动程序。用户程序需要使用该设备时,需要调用功能驱动程序中的功能函数。 总线驱动程序负责系统启动时设备的安装、检测,并确定设备的资源使用情况。设备的启动、停止,设备的初始化,设备的电源管理等功能也都由总线驱动程序提供。 WDM引入了功能设备对象FDO(FunctionalDeviceObject)物理设备对象PDO
文档评论(0)