WINCE6.0显示驱动模型介绍

loading 分享 2026-8-14 下载文档

WINCE6.0显示驱动模型介绍

********************************LoongEmbedded************************ 作者:LoongEmbedded(kandi) 时间:2011.06.04

类别:WINCE驱动开发

********************************LoongEmbedded************************

关键字

DDGPE的DD是指DirectDraw,Graphics Primitive Engine (GPE)

GDI:Graphics Device Interface DDI:Display Device Interface

在WinCE6.0中,Display驱动由GWES模块来管理(GWES.dll)。WinCE提供了两种架构的Display驱动模型,可以满足不同的硬件需求。一种是基于WinCE DDI的Display驱动模型,另一种是基于DirectDraw的Display驱动模型。

1. WINCE6.0显示驱动模型

图1

1.1 DDI显示驱动模型

图2

本文是基于DDI的模型来学习的,但此6410D的BSP是基于基类DDGPE来实现对目标硬件的控制的。

1.2 DDRAW显示驱动模型

图3

DirectDraw提供了独立于硬件的直接访问显示设备的能力。它可以通过直接访问硬件抽象层(HAL)中的一些函数来达到直接操作显示设备的目的,在这个过程中,不再需要图形设备接口(GDI)的转换。这种

直接的方法可以使图像更加连贯,也提高了显示的性能。为了实现这样的功能,需要在显示驱动上扩展能够直接访问相关硬件的函数。这些函数会被DirectDraw模块调用,并形成DirectDraw的硬件抽象层(DDHAL)。

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

在上述两种架构中,用户可以根据自己的硬件情况选择相应的架构。第一种架构是基于GPE类继承来实现的,第二种架构是基于DDGPE类继承来实现的,而第二种架构的DDGPE类又是从第一种架构的GPE类继承而来。关于两种类的具体定义,可参见” \\WINCE600\\PUBLIC\\COMMON\\OAK\\INC”路径下的gpe.h和ddgpe.h文件。

2. 显示驱动的文件结构

图4

我们先来看看DISPLAY_DRV目录下的sources文件的下面部分:

图5

从图3可知s3c6410_disp.dll要调用这两个dll提供的函数接口来实现自己的功能。接下来看看VIDEO_DRV目录下的sources文件的下面部分:

图6

从图3可知s3c6410_Video.dll要调用这些lib提供的函数接口来实现自己的功

能。为了搞清楚s3c6410_disp.dll和s3c6410_Video.dll之间的关系,我们看DISPLAY_DRV目录下的display_main.cpp(也就是s3c6410_disp.cpp)下的函数调用:S3C6410Disp::S3C6410Disp()->S3C6410Disp::AllocResource(),就来看此函数的相关部分:

图7

从图5可以知道s3c6410_Video.dll还是为s3c6410_disp.dll提供服务的。总结

这些dll和lib之间的关系如下面的逻辑框图所示:


WINCE6.0显示驱动模型介绍.doc 将本文的Word文档下载到电脑
搜索更多关于: WINCE6.0显示驱动模型介绍 的文档
相关推荐
相关阅读