1、 摘要:从工程应用角度出发,介绍了 Windows200 下 PCI 设备驱动程序及 PCI 总 线技术;指出并详细讨论了目前开发 PCI 设备驱动程序的几种流行方法;对利用 WNM 驱动模型开发 Windows2000 下 PCI 设备过程中的关键性技术作出了归纳;在 此基础之上对驱动开发技术的研究前景进行了展望。 关键字:Windows2000;PCI 总线;WDM 驱动模型;DDK Abstracts: From the aspects of engineering applications, the paper gives an introduction of the PCI bus,
2、 and driver for PCI hardware device under Windows 2000;in this paper,several methods about the device driver of data acquisition card based on PCI bus are illustrated, the key technology about how to use windows driver module to develop device driver based on PCI bus under Windows2000 is pushed forw
3、ard, At last ,the research foreground about device drive technology is introduced . Key words: Windows 2000;PCI bus;WDM;DDK. 一 、文献概述: 当前,随着计算机技术的飞速发展,对于高速、高性能板卡的需求越来越大。 曾在工控机中广泛应用的 ISA 总线逐渐被淘汰。相比之下,PCI 总线作为一种高 性能的局部总线,具有兼容性好,传输速度高,不受处理器限制以及支持“即插即 用”(Plug而运行于3级环的进 程只能访问自己的程序空间,不允许对系统资源进行直接访问,很多操作受限.应
4、 用程序均运行于 3 级环.如何使我们所编写的程序运行于 0 级环呢?WINDOWS 为我 们提供了 VxD 技术。 VxD(VirtualdeviceDriver)即虚拟设备驱动程序,是 32 位保护方式的驱动 程序,负责管理系统的某项资源,如硬件设备或已安装的软件,以便多个应用程序 可同时使用该资源.VxD 的实质就是运行在 0 级环上的 32 位动态库.所以我们自 行开发的软件要想在 0 级环上运行,获得对系统资源的全部访问权限,通过自行 编制的 VxD 作为访问代理,应该是一种好方法. Vxd 驱动程序框架: VxD 包括五个段: VxD_CODE 段,此段是保护模式的代码段,此段包括
5、设备控制例程、回调例程、 服务和 VxD 的 API 例程. VxD_DATA 段,此段是保护模式的数据段,它包括设备描述块、服务表、和 VxD 所用的全局数据. VxD_ICODE 段,此段是保护模式下的初始化代码段,此可选段只包括 VxD 初始 化的例程和服务. VxD_IDATA 段,此可选段只包括 VxD 初始化的例程和服务所用到的数据. VxD_REAL_INIT 段,此可选段包含实模式初始化的例程和数据.VMM 在装入其 它的 VxD 前调用此例程. Vxd 驱动程序的加载: 分为动态加载和静态加载, 静态加载始伴随着操作系统的启动和初始化进行 的动态加载的vxd程序是响应sys_
6、crital_init,Device_init,init_complete 等 信息来处理系统的初始化,挂接 IO 端口,安装硬件中断处理函数等系统资源, Vxd 驱动程序的开发及调试环境 传统的方法是使用汇编语言,开发起来比较麻烦,程序可读性差。微软提供 了 Win9x DDK 为 Vxd 驱动程序开发提供了方便的封装库函数调用。还有目前市场 上比较流行的一些工具如 VtoolsD 和 Windriver 它们减轻了开发难度, 缩短了开 发周期,而且使用的是高级编程语言,可读性较强。但是对于 Vxd 驱动程序的框 架理解和基础知识的掌握上不及使用 DDK。 基于 PCI 的 VXD 驱动程序 在目前的 win9x 的设备驱动程序中,基本上都是即插即用的,所以设计的驱 动程序也应该具有即插即用的功能,实现设备的即插即用要从三个方面进行: (1)硬件设备具备 win9x 能够识别的功能,这一点通过 PCI 配置寄存器和 PCI 引脚:prsnt1 和 prsnt2 两者接地来实现 (2)通过设备的 Inf 文件来来定位安装步骤和资源分配。 (3)通过系统配置管理