WINCE中的gwes.dll功能?

来源:互联网 发布:qq三国棋子算法 编辑:程序博客网 时间:2024/05/31 04:04

我在写WINCE上的GPRS拨号模块的时候,发现如果我们要使用微软给我提供的拨号函数RasDial()则我们在build OS Image的时候必须包含GWES组件。那么该组件的功能是什么呢?

          该组件的功能非同小可,它是工作在内核态的的dll,专门为我们提供有关图像图形(Graphics)、窗口(Windowing)以及事件(Event)子系统的功能。它提供对窗口,对话框,控件,菜单以及与用户接口相关的资源的支持。同时控制着窗口管理器和窗口消息管理器。

          GWES(gwes.dll)其实就是由Graphics,Windowing和Event Subsystem使用的驱动模块。“GWES"就是使用该dll的三个子系统的首字母组合。

          GWES(gwes.dll)所加载的设备驱动都是由系统自己使用的,这些设备驱动包括:keyboard,video,adapter, touch screen, printer, and mouse。这些驱动有时候被称为native drivers;这里由GWES加载的每一类设备驱动都有自己的与GWES之间的接口。

        由GWES和FileSys子系统加载的驱动只能在核心态下运行。被加载的每一种驱动类型都是在注册表中唯一指定。

 

那么为什么要使用微软的RasDial()函数就必须要求wince系统中包含GWES模块呢?

MSDN上说:

                 要想使用该函数的“窗口句柄通知机制( window handle-based notification )”,操作系统底层就必须对函数PostMessage的支持,而该函数是由系统中的msgque模块提供的,而msgque模块是GWES module的一个组成部分。因此要想事件通知机制通过窗口句柄工作起来,系统必须已经包含了GWES组件。

应用程序#include头文件Ras.h,编译连接时和Coredll.lib连接,运行时程序会通过Coredll.lib调用到GWES.dll中的服务,有关详细的Coredll.lib功能请见我另外一篇博文《WINCE系统中coredll.dll有什么用?》。GWES.dll中包含了系统内核为我们提供的一些服务。