Windows98下硬件中断驱动程序的开发
发布时间:2007/9/10 0:00:00 访问次数:524
摘 要: 介绍了Windows98的内核管理机制和应用程序权限级别,简述了在Windows98下进行虚拟驱动程序开发的几种工具和编程方法,并给出了借助VToolsD用C++语言编写的处理硬件中断的程序实例。
关键词: 虚拟设备驱动程序 VToolsD 中断服务例程
美国微软公司出品的Windows98以其友好的图形用户界面,在我国赢得了广泛的市场。在给广大办公环境工作人员带来方便的同时,也给不少工程技术人员带来了一些麻烦。一些原本在DOS下很容易编出的控制硬件的程序,现在在Windows98下就不那么容易实现了。作为一个完善的操作系统也必须能控制硬件,象DOS那样直接与硬件打交道是Windows98不提倡的。它需要开发专门的硬件设备驱动程序,即通过一系列的虚拟设备驱动程序来管理硬件,如:进行中断响应、I/O端口读写或直接存储器存取(DMA)。Windows98内核管理机制非常复杂,因而编写虚拟驱动程序也变得十分困难,要想编写虚拟驱动程序,就必须对Windows98的内核有所了解。
1 Windows98的内核管理机制
在Windows95三年后推出的Windows98虽然扩充了许多新的设备驱动特性,如对AGP、USB、DVD的支持,但在内核上却和Windows95基本一样,它们都是基于DOS内核的操作系统。Windows98系统核心(Kernel)由虚拟机管理器(VMM)和VxD(Virtual Device Driver)的集合组成。Kernel提供了900多个服务函数来管理内存、控制物理设备、处理中断、创建网络协议栈、管理文件系统等,这些服务函数都可以被自己写的VxD调用。虚拟机(VM)是一个可运行的任务,包含应用程序、支撑软件、内存和CPU寄存器。在Windows98下有系统虚拟机和DOS虚拟机两种。虚拟机管理器(VMM)是在系统级核心运行的32位保护模式操作系统,它运行于Ring0,而且不可重入。VMM主要功能是创建、运行、监控和终止虚拟机。VxD即虚拟设备驱动程序,是用来扩展Windows操作系统功能的一类程序。由于VxD运行在系统的Ring0级,拥有与操作系统同等的级别,所以我们可利用它来支持硬件设备的管理。虚拟可编程中断控制器(VPICD)是负责管理所有硬件中断事件的程序,它本身也是一种VxD,能提供缺省的中断处理函数或者允许其它VxD重载中断处理函数。
2 Windows98下应用程序权限级别
Intel的80x86CPU系列芯片可在三种模式下工作:实模式、保护模式和V86模式。实模式是MS-DOS的运行环境。Windows98只利用了两种模式:保护模式和V86模式。保护模式给我们带来很多优越性,如应用程序不再受1M内存的限制,理论上,在保护模式下,CPU可以进行4096M内存的寻址。但在保护模式下,所有的应用程序都有权限级别(Privilege Level)。权限级别按优先次序分为四等:0、1、2、3。0级是最高级别,操作系统就运行在0级,运行在Ring0级的应用程序可以执行所有的指令并可直接对硬件、中断和文件系统进行物理访问。如果应用程序拥有的权限级别是第3级,那么它能执行的指令是有限的,对硬件的很多直接操作是不能实现的。在Windows中,一般的应用程序是运行在Ring3级的(如用Visual C++、Borland C++、Visual Basic、Delphi、C++ Builder等SDK工具开发出的应用程序)。它们享有的权限是最低的,受到了保护模式的摫;,它们没有权限去绕过操作系统直接对硬件操作。
有了权限级别,操作系统就有机会在中断和I/O操作上产生撔槟鈹效果。由于操作系统的权限为0级,它就可以捕获权限不为0级的应用程序的中断和I/O请求,然后建立缓冲队列,再一一进行串行处理。为了使自己的应用程序也能直接处理硬件,就需要编写专门的VxD。由于VxD是作为操作系统的组件运行于第0级,因而可以利用它来捕获特定的硬件操作,完成我们需要的任务。
3 Windows98下虚拟设备驱动程序的开发工具和基本编程方法
微软为驱动程序的开发提供了设备驱动程序工具箱(DDK),基于汇编语言的编程方式和许多VMM服务都使用寄存器的调用方式,确实非常难学,没有深厚的汇编语言和硬件基础很难在短时间里开发出自己的VxD。
美国Vireo Software公司推出的VToolsD为我们开发VxD提供了方便快捷的方法。程序员可利用C或C++语言编写自己的VxD,而不必操心许多繁琐的细节。它的基本编程方法是:用VToolsD自带的Quick VxD程序快速生成程序框架,在VC++或Borland C++中打开此框架的工程文件,并写进特定的处理代码,编译后就可得到所需的VxD文件。
4 一个
摘 要: 介绍了Windows98的内核管理机制和应用程序权限级别,简述了在Windows98下进行虚拟驱动程序开发的几种工具和编程方法,并给出了借助VToolsD用C++语言编写的处理硬件中断的程序实例。
关键词: 虚拟设备驱动程序 VToolsD 中断服务例程
美国微软公司出品的Windows98以其友好的图形用户界面,在我国赢得了广泛的市场。在给广大办公环境工作人员带来方便的同时,也给不少工程技术人员带来了一些麻烦。一些原本在DOS下很容易编出的控制硬件的程序,现在在Windows98下就不那么容易实现了。作为一个完善的操作系统也必须能控制硬件,象DOS那样直接与硬件打交道是Windows98不提倡的。它需要开发专门的硬件设备驱动程序,即通过一系列的虚拟设备驱动程序来管理硬件,如:进行中断响应、I/O端口读写或直接存储器存取(DMA)。Windows98内核管理机制非常复杂,因而编写虚拟驱动程序也变得十分困难,要想编写虚拟驱动程序,就必须对Windows98的内核有所了解。
1 Windows98的内核管理机制
在Windows95三年后推出的Windows98虽然扩充了许多新的设备驱动特性,如对AGP、USB、DVD的支持,但在内核上却和Windows95基本一样,它们都是基于DOS内核的操作系统。Windows98系统核心(Kernel)由虚拟机管理器(VMM)和VxD(Virtual Device Driver)的集合组成。Kernel提供了900多个服务函数来管理内存、控制物理设备、处理中断、创建网络协议栈、管理文件系统等,这些服务函数都可以被自己写的VxD调用。虚拟机(VM)是一个可运行的任务,包含应用程序、支撑软件、内存和CPU寄存器。在Windows98下有系统虚拟机和DOS虚拟机两种。虚拟机管理器(VMM)是在系统级核心运行的32位保护模式操作系统,它运行于Ring0,而且不可重入。VMM主要功能是创建、运行、监控和终止虚拟机。VxD即虚拟设备驱动程序,是用来扩展Windows操作系统功能的一类程序。由于VxD运行在系统的Ring0级,拥有与操作系统同等的级别,所以我们可利用它来支持硬件设备的管理。虚拟可编程中断控制器(VPICD)是负责管理所有硬件中断事件的程序,它本身也是一种VxD,能提供缺省的中断处理函数或者允许其它VxD重载中断处理函数。
2 Windows98下应用程序权限级别
Intel的80x86CPU系列芯片可在三种模式下工作:实模式、保护模式和V86模式。实模式是MS-DOS的运行环境。Windows98只利用了两种模式:保护模式和V86模式。保护模式给我们带来很多优越性,如应用程序不再受1M内存的限制,理论上,在保护模式下,CPU可以进行4096M内存的寻址。但在保护模式下,所有的应用程序都有权限级别(Privilege Level)。权限级别按优先次序分为四等:0、1、2、3。0级是最高级别,操作系统就运行在0级,运行在Ring0级的应用程序可以执行所有的指令并可直接对硬件、中断和文件系统进行物理访问。如果应用程序拥有的权限级别是第3级,那么它能执行的指令是有限的,对硬件的很多直接操作是不能实现的。在Windows中,一般的应用程序是运行在Ring3级的(如用Visual C++、Borland C++、Visual Basic、Delphi、C++ Builder等SDK工具开发出的应用程序)。它们享有的权限是最低的,受到了保护模式的摫;,它们没有权限去绕过操作系统直接对硬件操作。
有了权限级别,操作系统就有机会在中断和I/O操作上产生撔槟鈹效果。由于操作系统的权限为0级,它就可以捕获权限不为0级的应用程序的中断和I/O请求,然后建立缓冲队列,再一一进行串行处理。为了使自己的应用程序也能直接处理硬件,就需要编写专门的VxD。由于VxD是作为操作系统的组件运行于第0级,因而可以利用它来捕获特定的硬件操作,完成我们需要的任务。
3 Windows98下虚拟设备驱动程序的开发工具和基本编程方法
微软为驱动程序的开发提供了设备驱动程序工具箱(DDK),基于汇编语言的编程方式和许多VMM服务都使用寄存器的调用方式,确实非常难学,没有深厚的汇编语言和硬件基础很难在短时间里开发出自己的VxD。
美国Vireo Software公司推出的VToolsD为我们开发VxD提供了方便快捷的方法。程序员可利用C或C++语言编写自己的VxD,而不必操心许多繁琐的细节。它的基本编程方法是:用VToolsD自带的Quick VxD程序快速生成程序框架,在VC++或Borland C++中打开此框架的工程文件,并写进特定的处理代码,编译后就可得到所需的VxD文件。
4 一个
上一篇:为什么器件尺寸越小并不总是越好?