WinCE5.0显示驱动对DirectDraw 功能的支持

WinCE5.0显示驱动对DirectDraw 功能的支持

--作者:赖玉平(Auly)[email protected]

方框图:

 WinCE5.0显示驱动对DirectDraw 功能的支持_第1张图片

上图中DDI HAL 单元都是显示设备驱动程序的组成部分

DDI 单元的导出函数是DrvEnableDriverHAL 单元的导出函数是HALInitDDI 单元为GDI 提供服务,HAL 单元及Windows CE 自带的以软件模拟的方式提供对DirectDraw 功能支持的HEL 单元为DirectDraw 服务。GDIDirectDraw 都是Windows CE 操作系统的GWES 子系统的组成部分,前者主要负责画矩形、直线、圆等简单的几何型图及较简单的块传输、画直线的硬件加速,后者可以画复杂的二维图案和更高级的硬件加速。

 

1   LCD 控制器驱动程序动态链接库的另一个重要的导出函数是HALInitHALInit 函数在驱动程序初始化阶段被DirectDraw 调用。HALInit 函数的全部实现代码都是为了构造一个为DirectDraw 提供功能支持信息的DDHALINFO 结构体。

2 HALInit 函数的执行主要就是调用两个函数:

 

FillHelCaps 函数负责初始化DDHALINFO 结构体的ddHelCaps 成员。是设备驱动程序用软件模拟支持的DirectDraw能力, 由于与特定的显示设备硬件无关,所以填充ddHelCaps 成员的工作就由微软代劳,

 

buildDDHALInfo 函数负责初始化lpddhi 指针所指向的DDHALINFO 结构体数据的与硬件相关的内容,这部分记录的是上图中的HAL 单元的DirectDraw 支持能力,而HAL 单元是显示设备驱动程序的组成部分,必须由用户负责实现。

3 buildDDHALInfo里,通过一个全局结构体g_pGPE,获得初始化信息(SUNSAMG2450BSP).

 Halcaps.cpp

lpddhi->vmiData.ddpfDisplay.dwRGBBitCount 回传LCD位数

 

  CreateSurface DDHAL_DDCALLBACKS 结构体的成员函数,该结构体是DirectDraw 对象回调函数的容器,这此都是与硬件特别相关的函数,必须实现

 

DDHAL_DDCALLBACKS

DDHAL_DDCOLORCONTROLCALLBACKS

DDHAL_DDEXEBUFCALLBACKS

DDHAL_DDKERNELCALLBACKS

DDHAL_DDMISCELLANEOUSCALLBACKS

DDHAL_DDPALETTECALLBACKS

DDHAL_DDSURFACECALLBACKS

DDHAL_DDHALMEMORYCALLBACKS

DDHAL_DDVIDEOPORTCALLBACKS

DDKERNELCAPS

以上这些结构体,实现与操作系统的交互,在这些结构中定义各种信息。系统通过这里定义的接口调用驱动程序。

详情看李大为的著作,14

Windows CE 操作系统的显示设备驱动程序中,DirectDraw 显示表面用DDGPESurf 类表示。所谓

DirectDraw 显示表面,就是加入了对DirectDraw 支持功能的显示表面。DirectDraw 显示表面与一般的显

示表面是具体与抽象的关系,DDGPESurfGPESurf 类的子类

DDGPESurf 类成员中:

m_ePixelFormat 成员记录DirectDraw 显示表面的像素格式

 

 

你可能感兴趣的:(windows,工作,微软,WinCE)