设备驱动程序提供连接到计算机的硬件的软件接口,驱动程序可认为是由操作系统直接调用的程序模块,工作于内核模式,可以完成对硬件和设备的操作控制。
在[7]中采用虚拟设备驱动程序(VxD)的方式进行可视化的数据采集,它使用NuMega公司的的Vtools进行驱动开发,并且结合C++对驱动程序进行管理,VxD程序的主要任务是屏蔽多余消息包括鼠标键盘的消息,只响应中断,在C++中通过中断函数类和通信函数实现与主程序的通信,在[7]中采用异步过程的调用的方法实现VxD与程序的通信,当程序初始化完成以后VxD可调用QueueuserApc()函数触发应用程序的回调函数,回调函数进行应用程序的工作[7]。60926
在[8]中和[9]分别采用DDK和DriverStudio进行基于WDM模型驱动程序的开发,WDM驱动程序的模块化可以把一个完整的驱动程序看作一个容器,容器中包含许多例程[9]。在[8]中设计了USB模式下的驱动程序,在[9]中设计了PCI总线模式下的驱动程序,WDM通过地址映射的方式对硬件设备进行访问[8],在WDM中,提供了DPC例程, 处理在中断例程中耗时的但不需要,立即处理的任务[9], 。当WDM驱动程序捕捉到特点事件(如中断)发生后,通过IRP与应用程序通信[9],论文网总之,使用WDM开发驱动程序,方法简单,清晰,快捷[8]。
在[10]中,采用WinDriver开发驱动程序,WinDriver大大简化了设备驱动编写在保证驱动程序性能的基础上大大缩短了开发周期[10],在WinDriver中提供了大量的API函数,通过这些API函数可以实现对硬件的有效操作,在WinDriver中,包含的API的函数主要为初始化函数,设备打开函数,端口函数等。使用WinDriver开发的驱动程序能够及时有效的处理各种中断信息,并且能够快速的完成对I/O端口和内存的访问和相应操作[10]。
综上所述,比较各种驱动开发方法,使用WinDriver开发驱动的过程最简单和快速,开发过程中不需要丰富的硬件知识,省去了大量的底层编码过程,在各种驱动开发方法中具有明显的优势。