在WinCE中,Display驱动由GWES模块来管理。WinCE提供了两种架构的Display驱动模型,可以满足不同的硬件需求。一种是基于WinCE DDI的Display驱动模型,另一种是基于DirectDraw的Display驱动模型。下面将对两种架构作简单介绍。
1. Display驱动模型
WinCE下的Display驱动直接由GWES模块管理,它会直接被GWES模块管理和调用。Display驱动实际上也是分层的,其中包括GPE库,该库处理一些默认的绘图,相当于驱动的MDD层。用户只需要开发和硬件相关的PDD层驱动就可以了。在WinCE中,整个架构如图:
如图,Application为一个应用程序,该程序会调用图形设备接口函数(GDI),而GDI函数是由Coredll.dll模块导出的。Coredll.dll会将函数调用的参数打包,然后触发对另一个进程的本地过程调用(LPC),所有的绘图和开窗口的工作被传给内核中GWES模块。GWES模块被称为图形,窗口和事件子系统,专门处理图形输出和用户输入等事件及相关的所有交互。GWES模块会调用Display驱动完成对显示硬件的操作。Display驱动由GPE和DDL.dll组成,GPE完成基本的默认绘图工作,而DDI.dll实际上从GPE类上继承而来的,并实现了相关的显示硬件的操作。