欢迎来到天天文库
浏览记录
ID:34128695
大小:2.85 MB
页数:53页
时间:2019-03-03
《基于双核系统windows端驱动机制研究》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、硕士论文基于双核系统Windows端驱动机制的研究序的工作是被动的,只有在上层应用程序需要操作硬件时才会执行。在程序上驱动程序表现为一些函数的集合,这些函数彼此之间没有多大联系,是松耦合关系。这些函数实际上是提供给上层应用程序提供访问底层硬件的接口。Windows中至少有十几种不同软件都称为驱动程序,这些驱动程序可分为用户态驱动程序和核心态驱动程序两大类脚,如图2.2.1所示。虚拟设备驱动程序(VDD)内核模式驱动程序
2、文件系统驱动程序PnP驱动程序遗留设备驱动程序陋示驱动程剧WDM驱动程序l类驱动程序微小驱动程序图2.2.1W'mdows驱动程序分类虚拟设备
3、驱动程序(VDD)是一个用户模式部件,它可以使DOS应用程序访问X86平台上的硬件。VDD通过屏蔽I/O权限掩码来捕获端口存取操作,基本上模拟了硬件的操作,这对于那些直接对硬件编程的应用程序特别有用。内核模式驱动程序针对的是逻辑的、虚拟的和物理的设备。包括以下几类:(1)?文件系统驱动程序(FSD):负责维护各种文件系统所需的磁盘结构。(2)PnP驱动程序:一种遵循Windows2000/XP即插即用协议的内核模式驱动程序。WDM(WindowsDriverModel)驱动程序便是一种PnP驱动程序,其支持电源管理协议和WMI,并能在W'mdows98以上版本
4、的Windows操作系统问实现源代码级的兼容。WDM驱动程序还细分为类驱动程序和微小驱动程序两类,类驱动程序管理属于已定义类的设备,微小驱动程序给类驱动程序提供厂商专有的支持。(3)遗留设备驱动程序(LegacyDevice):是一种直接控制设备而不需要其它驱动程序帮助的内核态驱动程序,这种驱动程序不支持P11P。(4)显示驱动程序是用于显示设备和打印设备的内核模式驱动程序,将设备无关的图形(GDI)请求转换为设备专用请求,显示驱动程序的集合称为“核心态图形驱动程序”。2.2.1WindowsWDM驱动程序介绍(1)WDM驱动程序的分类WindowsWDMt6
5、J驱动程序分为三类:·总线驱动程序(Busdrivers),各种系统总线的驱动程序,这类驱动程序一般由W'mdows系统提供,例如:PCI总线驱动,SCSI总线驱动。此类驱动程序的主要作用就52Windows驱动程序介绍硕士论文是枚举总线上的硬件设备,为总线上的设备分配资源(I/O资源,存储器映射,中断,DMA资源等)。·功能驱动程序(Functiondrivers),这就是我们通常所说的驱动程序,它的作用就是根据不同的FO请求执行不同的操作。·过滤驱动程序(Filterdrivers),这类驱动可以位于功能驱动程序之上,也可以位于功能驱动程序以下,一般用来实
6、现对内核数据的过滤。(2)WindowsWDM驱动程序的特点·平台之间的可移植性内核模式驱动程序的源代码应该可以移植到所有WindowsNT平台上。WDM驱动程序在其定义中就规定了源代码可以在Windows98、Windows2000和WindowsXP之间相互移植。为了实现这种可移植性,驱动程序全部用C语言编写,并且只使用ANSIC标准规定的元素。这样如需移植到另一平台,仅需重新编译连接源代码,生成驱动即可安装。·硬件和软件的可配置性内核模式驱动程序应避免对设备特征或某些系统设置做绝对假设,因为这些系统设置会随着平台的变化而变化。如果把这些设置直接写到驱动程
7、序中将使驱动程序失去可配置性。为了实现可配置性,首先应该在代码中避免直接引用硬件,而应该使用硬件抽象层(HAL)或调用低级总线驱动程序访问硬件。●基于对象WindowsNT内核是基于对象的,即驱动程序和内核例程使用的许多数据结构都有公共的特征,这些特征由对象管理器集中管理。驱动程序使用内核部件输出的服务例程来维护对象或对象中的域。某些内核对象,例如内核中断对象是不透明的,WindowsDDK头文件中没有其数据成员的声明。其它内核对象,如设备对象或驱动程序对象则是部分透明的,DDK头文件中声明了其结构的全部成员,但DDK文档中仅描述了可访问对象的成员,对于驱动程
8、序可以间接访问的不透明的域,可以用支持的例程访问。·带可重用I/O请求包(rRP)篚J包驱动I/OFO管理器和设备驱动程序使用舢来管理I/O操作的具体细节。首先,上层应用程序的I/O请求会先到达内核的I/O管理器,I/O管理器会以此I/O请求创建一个Ⅱ心(内核中的结构),该IRP可以是一个让设备执行的一个操作、向驱动程序发送的一个的命令或者向驱动程序查询某些信息的请求。然后FO管理器把这个IRP发送到设备驱动程序的输出例程。一般每个驱动程序例程仅执行IRP指定的一部分工作,然后返回I/O管理器。最后由某个驱动程序例程完成该IRP,之后I/O管理器删除该IRP并
9、向原始请求者报告结束状态和执行结果。●
此文档下载收益归作者所有