Windows CE 系统进程外组件应用开发

来源:互联网 发布:2017年外贸数据 编辑:程序博客网 时间:2024/05/01 10:41

这篇文章说明了如何使用WindowS CE 6.0系统的DCOM,开发com服务进程。向客户端提供跨进程的COM组件服务,以及自定义接口代理/存根dll的建立,注册。

假定你需要创建一个实时的控制程序,需要一直在后台运行着,而你的客户端却是多个或多样性,客户端的开发语言不确定性。这就需要创建一个COM服务进程程序。


 

WindowsCE镜像中需要包括DCOM组件服务

       不幸的是由于系统空间的限制,很多基于Windows CE系统的OS都不支持DCOM需要使用Platfom Builder向我们的Windows CE镜像中添加DCOM

       另外必须导出支持DCOM APIWindows CE SDK开发包。

其它的一些工具我们需要准备的注册工具

GuiRegsvrCE.exe  用于注册你的COM DLLs

这类工具可以在网上搜索到

 

创建COM Server

       由于Windows CE不支持自动化列集/散集,因此我们需要建立自己的代理/存根,用与COM ServerClient之间的接口方法参数的列集与散集。当然,在windows XP/2000系统中,如果我们在COM方法中使用OLE兼容的数据类型,我们可以不提供代理/存根 DLL。如果需要使用自定义的数据类型则都需要建立对应的代理/存根代码,并注册之后才能使用。

       由于上述原因,开发WindowsCE COM Server时,需要将IDL文件LIBRARY块中的dispinterface定义代码移到LIBRARY块外部来。所有的接口都必须在LIBRARY快的外部定义,这样MIDL编译器将生成恰当的代理/存根代码。

       注意,sink dispainterface接口被重定义,被标识为dual并从IDispatch接口派生。、

 

 

 

代理存根DLL的创建 Proxy/Stub

PC端的代理存根的创建差不多,需要注意的是,需要定义一些宏才能编译通过。另外定义一个def文件,注明要到处的函数。

 

编译好以上两个工程之后,基本上进程外COM Server工作算是完成了。在机器是使用是还需注册才行。

 

 

如何调用进程外组件Client程序)

       对应客户端而已,基本上和调用进程内组件没什么区别了。在这里我提供了一些辅助代码《EventHandler.h》,协助客户端在不使用ATL情况下接受COM Server的事件。


源代码下载: http://download.csdn.net/source/3080188

 

原创粉丝点击