Windows CE和 Windows2000/XP设备驱动开发的区别
2009-12-30 00:00:00 来源:WEB开发网查看原图(大图)
在Windows CE驱动中,按驱动的结构可以分为两种类型——分层式设备驱动程序和整体式驱动程序,如图2所示。分层式设备驱动程序由上层和下层两部分代码组成。上层的程序叫做模型设备驱动程序(MDD),下层的程序则叫做平台相关的驱动程序(PDD)。整体式驱动程序的源代码由中断服务线程代码和针对平台的代码组成。
同桌面Windows设备驱动结构模型相比,Windows CE设备驱动相对简单一些。正如图1和图2所示,两种操作系统的设备驱动虽然存在许多相似的地方,都采用了模块、分层的设计方法,但是还存在许多不同的地方。在Windows CE操作系统中,分层的驱动程序并不适用于所用的驱动,尤其是将驱动程序分为两层将会导致在驱动程序操作时附加的功能调用,这无疑会降低驱动程序的效率。对于时间或性能关键的实时操作,整体式驱动程序将会更适合。
在桌面Windows系统中,驱动各层通信之间使用一种称为I/O请求包(IRP)的数据结构进行通信。影响到设备的每个操作都使用I/O请求包,采用层次结构可以使I/O请求过程更加明了。I/O管理器发送IRP来请求驱动程序的处理,通常IRP由分层的驱动程序栈来处理,高层的驱动程序把请求划分成更简单的请求并传递给下层驱动程序。IRP首先被送到设备堆栈的最上层驱动程序,然后逐渐过滤到下层的驱动程序。每一层驱动程序都可以决定如何处理IRP。而Windows CE驱动各层之间的通信没有采用IRP通信机制,而是通过接口函数调用实现的。设备驱动程序接口(Device Driver Interface,DDI)是在MDD层中实现的函数集,系统中的GWES模块通过这个接口调用设备驱动程序;设备驱动程序服务器接口(Device Driver Service Provider Interface,DDSI)是在PDD层中实现的函数集并由MDD调用。
更多精彩
赞助商链接