Windows9x/NT及2000下中断驱动程序的统一化处理
发布时间:2007/8/29 0:00:00 访问次数:598
摘要:针对Windows9x/NT及Windows2000操作系统,利用Windriver工具包,实现了在多种操作系统下对硬件中断驱动程序进行统一化处理,保证了程序在不同的操作系统下良好的移植性矣兼容性,并给出了用C语言编写的程序实例。
关键词:Windows9x/NT/2000
虚拟设备驱动程序(VxD) Windriver工具包 中断驱动程序的统一化处理
Windows以其友好的图形用户界面,使得它不仅成为办公管理首选的操作系统,也日益受到工程技术人员的关注,逐渐取代DOS而成为主流的工程应用控制平台。但是,Windows系统为了保证平台的安全与完整性,对系统底层操作采取了屏蔽的策略,利用VxD将用户与硬件隔离开来。在Windows9x(95、97、98)下,用户如果需要实现对硬件的中断、DMA或存储空间物理地址等资源进行访问,必须通过设备驱动程序来进行硬件操作;而在WindowsNT下,即使是简单的I/O操作,也需要编写驱动程序方能与硬件打交道。
Windows操作系统的主流目前是Windows9x和WindowsNT,而已经推出的Windows2000是以WindowsNT为主要框架的。由于Windows9x和WindowsNT两者在系统核心上有盾的不同,所以即使对于同样一硬件,在两者下的驱动程序也有很大的区别。因此,一般而言,需要针对不同的操作系统编写不同的驱动程序。
兼容X86指令的微机CPU运行时有4个优先级,Ring0~Ring3。操作系统与驱动程序运行在Ring0级,Ring3级,对资源控制受到一些限制。而对于Ring0级的驱动程序而言,它的编写和调试通常需要对操作平台的运行机制有较深的了解,从而要求程序开发者掌握Windows9x、NT及Windows2000的内核管理机制,对于开发人员来讲这有相当大的难度。在这里,笔者使用了美国Jungo公司出品的WinDriver工具包,利用其绕过了对操作系统内核的学习掌握这个难点,并且在不更改程序代码的前提下,完成了在多个操作系统下对硬件中断的一致处理,很方便地解决了硬件与程序在不同系统下的移植问题。
1 Windows下硬件中断的管理机制
在多任务的环境里,硬件设备中断管理程序是非常重要的系统级程序。它不仅要把硬件发生的中断时间传给相应的驱动程序,还要允许某些设备驱动程序处理它们特殊的中断服务。在Windows平台下,VPICD(虚拟可编程中断控制器)就是这样的硬件设备管理程序,它负责管理所有的硬件中断时间。VPICD通过一个缺省机制触发驻留在VM(虚拟机)内的中断处理函数。它完全允许VxD根据其需要而重载中断处理函数。PC机的硬件中断需要确定硬件中断的IRQS(中断申请号),对一个特定的IRQ中断源,VPICD或提供缺省的中断处理函数,或允许其它VxD重载中处理函数。
VPICD提供的缺省中断处理是:首先置中断禁止,再触发相应VM中的中断处理函数。因为VPICD实现了对PPIC(物理可编程中断控制,如8259中断控制器)的虚拟化,所以当VM中的中断处理函数发送EOI(中断处理结束指令)时,VPICD即对PPIC发EOI指令。最后,VPICD控制处理函数的返回操作,恢复中断,并置VM状态为VM进入中断前的状态。当VPICD对某些中断的缺省处理不够充分或则不太合适时,就需要亲手编写一个VxD,在其中实现中断的虚拟化。VxD将决定如何处理硬件中断以及如何调用VM中的中断处理函数。
下面将要详述的WinDriver对中断处理作了很好的封装,将对VPICD和VM的控制和处理以及某些特殊的驱动要求封装在经过严格调试的WinDriver.vxd和WinDriver.sys中,并对调用驱动程序的API(应用编程接口)函数进行了系统集成,让使用者直接面对用高级语言集成好的类库和函数接口,从而大大降低了程序开发的难度,缩短了开发周期。
2 WinDriver工具包简介
WinDriver是美国Jungo公司出品的用于编写驱动程序的一种工具包,主要针对ISA/PCI插卡,4.2版本以后还提供了USB的开发工具。最新版本4.40版所编写的程序兼容性十分强大,包括了Windows9x、Windows NT、Windows2000、Windows CE、Linux、Solaris(Intel)、VxWor
摘要:针对Windows9x/NT及Windows2000操作系统,利用Windriver工具包,实现了在多种操作系统下对硬件中断驱动程序进行统一化处理,保证了程序在不同的操作系统下良好的移植性矣兼容性,并给出了用C语言编写的程序实例。
关键词:Windows9x/NT/2000
虚拟设备驱动程序(VxD) Windriver工具包 中断驱动程序的统一化处理
Windows以其友好的图形用户界面,使得它不仅成为办公管理首选的操作系统,也日益受到工程技术人员的关注,逐渐取代DOS而成为主流的工程应用控制平台。但是,Windows系统为了保证平台的安全与完整性,对系统底层操作采取了屏蔽的策略,利用VxD将用户与硬件隔离开来。在Windows9x(95、97、98)下,用户如果需要实现对硬件的中断、DMA或存储空间物理地址等资源进行访问,必须通过设备驱动程序来进行硬件操作;而在WindowsNT下,即使是简单的I/O操作,也需要编写驱动程序方能与硬件打交道。
Windows操作系统的主流目前是Windows9x和WindowsNT,而已经推出的Windows2000是以WindowsNT为主要框架的。由于Windows9x和WindowsNT两者在系统核心上有盾的不同,所以即使对于同样一硬件,在两者下的驱动程序也有很大的区别。因此,一般而言,需要针对不同的操作系统编写不同的驱动程序。
兼容X86指令的微机CPU运行时有4个优先级,Ring0~Ring3。操作系统与驱动程序运行在Ring0级,Ring3级,对资源控制受到一些限制。而对于Ring0级的驱动程序而言,它的编写和调试通常需要对操作平台的运行机制有较深的了解,从而要求程序开发者掌握Windows9x、NT及Windows2000的内核管理机制,对于开发人员来讲这有相当大的难度。在这里,笔者使用了美国Jungo公司出品的WinDriver工具包,利用其绕过了对操作系统内核的学习掌握这个难点,并且在不更改程序代码的前提下,完成了在多个操作系统下对硬件中断的一致处理,很方便地解决了硬件与程序在不同系统下的移植问题。
1 Windows下硬件中断的管理机制
在多任务的环境里,硬件设备中断管理程序是非常重要的系统级程序。它不仅要把硬件发生的中断时间传给相应的驱动程序,还要允许某些设备驱动程序处理它们特殊的中断服务。在Windows平台下,VPICD(虚拟可编程中断控制器)就是这样的硬件设备管理程序,它负责管理所有的硬件中断时间。VPICD通过一个缺省机制触发驻留在VM(虚拟机)内的中断处理函数。它完全允许VxD根据其需要而重载中断处理函数。PC机的硬件中断需要确定硬件中断的IRQS(中断申请号),对一个特定的IRQ中断源,VPICD或提供缺省的中断处理函数,或允许其它VxD重载中处理函数。
VPICD提供的缺省中断处理是:首先置中断禁止,再触发相应VM中的中断处理函数。因为VPICD实现了对PPIC(物理可编程中断控制,如8259中断控制器)的虚拟化,所以当VM中的中断处理函数发送EOI(中断处理结束指令)时,VPICD即对PPIC发EOI指令。最后,VPICD控制处理函数的返回操作,恢复中断,并置VM状态为VM进入中断前的状态。当VPICD对某些中断的缺省处理不够充分或则不太合适时,就需要亲手编写一个VxD,在其中实现中断的虚拟化。VxD将决定如何处理硬件中断以及如何调用VM中的中断处理函数。
下面将要详述的WinDriver对中断处理作了很好的封装,将对VPICD和VM的控制和处理以及某些特殊的驱动要求封装在经过严格调试的WinDriver.vxd和WinDriver.sys中,并对调用驱动程序的API(应用编程接口)函数进行了系统集成,让使用者直接面对用高级语言集成好的类库和函数接口,从而大大降低了程序开发的难度,缩短了开发周期。
2 WinDriver工具包简介
WinDriver是美国Jungo公司出品的用于编写驱动程序的一种工具包,主要针对ISA/PCI插卡,4.2版本以后还提供了USB的开发工具。最新版本4.40版所编写的程序兼容性十分强大,包括了Windows9x、Windows NT、Windows2000、Windows CE、Linux、Solaris(Intel)、VxWor
上一篇:车用传感器及组件解决方案
上一篇:如何构建“多服务”边缘网络设备