大部分的Windows CE 下得驱动程序采用了分层驱动的结构,在这种结结构中,驱动程序被分为两部分:模板驱动(MDD,Model Device Driver)和平台驱动(PDD,Platform Device Driver),也有驱动将MDD和PDD整合在一起,这就是单层驱动。
在分层驱动中,MDD和PDD有如下特性:
MDD层的特性:
- 包含特定类型驱动的通用代码通过调用PDD层函数来访问硬件;
- 与PDD层链接,并定义在PDD层实现的函数访问接口DDSI(Device Driver Service Interface);
- 提供供操作系统调用的DDI函数接口(Device Driver Interface),相似的驱动可以共享DDI函数接口;
- MDD层可以进行复用,能与多个PDD层链接,一般情况下,MDD已有Microsoft提供,驱动开发人员无需对MDD层进行改动
- 包含中断服务例程的处理(ISR,Interrupt Service Routine)
PDD层特性:
- 由和硬件平台相关部分的代码组成,需要根据硬件平台去修改;
- 实现供PDD层调用的DDSI函数接口
- 一般情况,驱动开发人员只需根据硬件平台修改PDD层代码
如果在开发驱动程序时,只需要需该PDD层代码,则应采用分层驱动模型,但是如果为了提高驱动的执行效率或者在分层驱动中会有额外的调用接口,则采用单层驱动更简单有效,但是在进行驱动的移植时会比较困难。
附一张自己画的wince分层驱动模型图
![](https://img-my.csdn.net/uploads/201211/22/1353567818_8019.jpg)