基于WinDriver和C++Builder的高速实时数据采集程序
2012-09-30高一栋
张 艳 高一栋
(西安电子工程研究所 西安 710100)
1 引言
在某信号处理系统应用中,需要数据板与计算机之间建立硬件传输通道,将处理输出的数据实时地传输到计算机中,以便于进行显示、存储及做其他的后续处理。同时,计算机使用的Windows操作系统,应用程序工作在“用户模式”下,需要设计人员编写设备驱动程序实现对硬件设备的访问。
2 用WinDriver编写PCI驱动程序
2.1 WinDriver的功能和特点

图1 WinDriver体系结构图
目前,开发Windows环境下常用的设备驱动程序的工具主要有DDK(Device Driver Kit)和Win-Driver。DDK是Microsoft公司的设备驱动程序开发软件,使用DDK开发驱动程序,必须精通Windows内部体系结构、MicrosoftMASM汇编语言和设备驱动程序结构体系方法,以及具备丰富的内核模式程序开发经验,否则可能造成软件的不稳定,甚至系统的崩溃。而美国Jungo公司推出的WinDriver驱动程序工具包,把底层操作都封装在一个内核模块中,提供给用户标准的WinDriver API函数来实现硬件访问,可使编程人员用C或C++语言在用户模式下编写驱动程序,不涉及操作系统底层编程且具有很好的兼容性,在短期内就可开发出实现基本功能又具有较高执行效率的驱动程序。图1所示为Win-Driver体系结构图。
以使用的WinDriver v6.02版为例,它支持目前通用的 Windows98/Me/NT/2000/XP/CE/CE.NET/Server2003,Linux,Solaris和VxWorks等操作系统,而且利用WinDriver产生的驱动程序和应用程序源代码在这些操作系统中都是互相兼容的[1]。同时它支持PCI/CardBus/ISA/ISAPnP/EISA/Com-pactPCI和USB等多种总线结构。
2.2 WinDriver编写PCI中断驱动程序的流程
下面,介绍利用WinDriver的用户模式在DriverWizard向导的引导下按步骤完成驱动代码的生成。
A.选择硬件,产生.INF文件。……
