基于GWES的WinCE Display驱动开发介绍

基于GWES的WinCE Display驱动开发介绍

ID:38711220

大小:174.50 KB

页数:11页

时间:2019-06-18

基于GWES的WinCE Display驱动开发介绍_第1页
基于GWES的WinCE Display驱动开发介绍_第2页
基于GWES的WinCE Display驱动开发介绍_第3页
基于GWES的WinCE Display驱动开发介绍_第4页
基于GWES的WinCE Display驱动开发介绍_第5页
资源描述:

《基于GWES的WinCE Display驱动开发介绍》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、基于GWES的WinCEDisplay驱动开发介绍在WinCE中,Display驱动由GWES模块来管理。WinCE提供了两种架构的Display驱动模型,可以满足不同的硬件需求。一种是基于WinCEDDI的Display驱动模型,另一种是基于DirectDraw的Display驱动模型。下面将对两种架构作简单介绍。  1Display驱动模型  WinCE下的Display驱动直接由GWES模块管理,它会直接被GWES模块管理和调用。Display驱动实际上也是分层的,其中包括GPE库,该库处理一些默认的绘图,相当于驱动的MDD层。用户只需要开发和硬件相

2、关的PDD层驱动就可以了。在WinCE中,整个架构如图1:图1  如图,ApplicatiON为一个应用程序,该程序会调用图形设备接口函数(GDI),而GDI函数是由Coredll.dll模块导出的。Coredll.dll会将函数调用的参数打包,然后触发对另一个进程的本地过程调用(LPC),所有的绘图和开窗口的工作被传给内核中GWES模块。GWES模块被称为图形,窗口和事件子系统,专门处理图形输出和用户输入等事件及相关的所有交互。GWES模块会调用Display驱动完成对显示硬件的操作。Display驱动由GPE和DDL.dll组成,GPE完成基本的默认绘

3、图工作,而DDI.dll实际上从GPE类上继承而来的,并实现了相关的显示硬件的操作。  2DirectDrawDisplay驱动模型  DirectDraw提供了独立于硬件的直接访问显示设备的能力。它可以通过直接访问硬件抽象层(HAL)中的一些函数来达到直接操作显示设备的目的,在这个过程中,不再需要图形设备接口(GDI)的转换。这种直接的方法可以使图像更加连贯,也提高了显示的性能。为了实现这样的功能,需要在显示驱动上扩展能够直接访问相关硬件的函数。这些函数会被DirectDraw模块调用,并形成DirectDraw的硬件抽象层(DDHAL)。DirectD

4、raw显示驱动架构如图2:  如图,DirectDraw的真正实现代码都驻在gwes.dll模块中,应用程序只是连接了一个小的客户端,被称为DDRAW.dll代理,该代理主要负责用户进程与系统之间的远程DirectDrawCOM接口连接。这样,用户请求会被传送到内核的GWES模块中。针对DirectDraw,WinCE提供了一个名为DirectDraw的GPE库(DDGPE),它是从GPE类上面继承而来的。实际上,DirectDraw显示驱动是由DDGPE和DDHAL组成,而DDGPE中已经包含了DDHAL的功能。用户需要从DDGPE类继承并实现相关函数即

5、可。GWES.dll模块中包含GDI和DDRAW两个组件,这两个组件会调用驱动中的DDGPE的相关接口完成对硬件的操作。  在上述两种架构中,用户可以根据自己的硬件情况选择相应的架构。第一种架构是基于GPE类继承来实现的,第二种架构是基于DDGPE类继承来实现的,而第二种架构的DDGPE类又是从第一种架构的GPE类继承而来。关于两种类的具体定义,可参见”WINCE600PUBLICCOMMONOAKINC”路径下的gpe.h和ddgpe.h文件。  本Blog将基于Display驱动模型来介绍,DirectDrawDisplay驱动模型不在这里介

6、绍。  WinCE下的Display驱动是基于GPE类来实现的,其中GPE中已经实现了基本的绘制工作,相当于MDD层。用户需要继承该类,并实现里面的其他一些函数,所以用户实现的相当于PDD层。  GPE类是一个抽象类,其中包含很多纯虚函数,只能用于继承。用户在继承了GPE类以后,要对GPE类中的纯虚函数做相应的实现。开发Display驱动的大致步骤如下:  (1)   继承GPE类并定义一个该类的实例。  (2)   实现GetGPE()函数,把该类的实例返回给上层的DDI接口。  (3)   实现DrvEnabLEDriver()和DisplayInit

7、()函数并导出这两个接口。  (4)   实现GPE类中的函数。  下面将具体介绍实现的步骤:  2.1继承GPE类  首先,基于GPE类进行继承,如果想在Display驱动支持Rotation可以从GPERotate类上面继承。实际上,在”gpe.h”中有如下定义:  typedefGPE    GPERotate;  可以看出GPERotate类就是GPE类。在这里,用户从GPE类上面继承就可以了,举个例子如下:  classNewGPE:publicGPE  {  private:  GPEMode          m_ModeInfo;  DWO

8、RD            m_colorDepth;  DWOR

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。