Windows CE 系统进程外组件应用开发
2011-03-10 17:05
423 查看
这篇文章说明了如何使用
WindowS CE 6.0
系统的
DCOM
,开发
com
服务进程。向客户端提供跨进程的
COM
组件服务,以及自定义接口代理
/
存根
dll
的建立,注册。
假定你需要创建一个实时的控制程序,需要一直在后台运行着,而你的客户端却是多个或多样性,客户端的开发语言不确定性。这就需要创建一个
COM
服务进程程序。
Windows
CE
镜像中需要包括
DCOM
组件服务
不幸的是由于系统空间的限制,很多基于
Windows CE
系统的
OS
都不支持
DCOM
。
需要使用
Platfom Builder
向我们的
Windows CE
镜像中添加
DCOM
。
另外必须导出支持
DCOM
API
的
Windows CE SDK
开发包。
其它的一些工具我们需要准备的注册工具
GuiRegsvrCE.exe
用于注册你的
COM DLLs
这类工具可以在网上搜索到
创建
COM Server
由于
Windows CE
不支持自动化列集
/
散集,因此我们需要建立自己的代理
/
存根,用与
COM Server
和
Client
之间的接口方法参数的列集与散集。当然,在
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
WindowS CE 6.0
系统的
DCOM
,开发
com
服务进程。向客户端提供跨进程的
COM
组件服务,以及自定义接口代理
/
存根
dll
的建立,注册。
假定你需要创建一个实时的控制程序,需要一直在后台运行着,而你的客户端却是多个或多样性,客户端的开发语言不确定性。这就需要创建一个
COM
服务进程程序。
Windows
CE
镜像中需要包括
DCOM
组件服务
不幸的是由于系统空间的限制,很多基于
Windows CE
系统的
OS
都不支持
DCOM
。
需要使用
Platfom Builder
向我们的
Windows CE
镜像中添加
DCOM
。
另外必须导出支持
DCOM
API
的
Windows CE SDK
开发包。
其它的一些工具我们需要准备的注册工具
GuiRegsvrCE.exe
用于注册你的
COM DLLs
这类工具可以在网上搜索到
创建
COM Server
由于
Windows CE
不支持自动化列集
/
散集,因此我们需要建立自己的代理
/
存根,用与
COM Server
和
Client
之间的接口方法参数的列集与散集。当然,在
windows XP/2000
系统中,如果我们在
COM
方法中使用
OLE
兼容的数据类型,我们可以不提供代理
/
存根
DLL
。如果需要使用自定义的数据类型则都需要建立对应的代理
/
存根代码,并注册之后才能使用。
由于上述原因,开发
WindowsCE COM Server
时,需要将
IDL
文件
LIBRARY
块中的
dispinterface
定义代码移到
LIBRARY
块外部来。所有的接口都必须在
LIBRARY
快的外部定义,这样
MIDL
编译器将生成恰当的代理
/
存根代码。
注意,
sink dispainterface
接口被重定义,被标识为
dual
并从
IDispatch
接口派生。、
[ object, uuid(8D2D2A49-E8D3-4630-924D-1F83A4B063DB), dual, nonextensible, helpstring("IAlgorithm 接口"), pointer_default(unique) ] interface IAlgorithm : IDispatch{ [id(1), helpstring("方法Add")] HRESULT Add([in] LONG n1, [in] LONG n2, [out,retval]LONG* nVal); [id(2), helpstring("方法Minus")] HRESULT Minus([in] LONG n1, [in] LONG n2, [out,retval] LONG* nVal); [id(3), helpstring("方法Input")] HRESULT Input([in] BSTR str); }; #ifdef UNDER_CE [ uuid(C33B6BCD-ABBB-4E80-8E55-F34CC867BE83), dual, helpstring("_IAlgorithmEvents 接口") ] interface _IAlgorithmEvents : IDispatch { //properties: //methods: [id(1), helpstring("方法Output")] HRESULT Output([in] BSTR str); }; #endif //UNDER_CE [ uuid(4EC8BE3C-DF5C-4E56-B1F5-9350266E32FC), version(1.0), helpstring("ServDemo 1.0 类型库") ] library ServDemoLib { importlib("stdole2.tlb"); interface IDocHostUIHandlerDispatch; interface IAxWinAmbientDispatchEx; #ifndef UNDER_CE [ uuid(C33B6BCD-ABBB-4E80-8E55-F34CC867BE83), helpstring("_IAlgorithmEvents 接口") ] dispinterface _IAlgorithmEvents { properties: methods: }; #endif //UNDER_CE [ uuid(9EEFFB69-1604-4DA2-A12A-FAB65CE9D587), helpstring("Algorithm Class") ] coclass Algorithm { [default] interface IAlgorithm; [default, source] dispinterface _IAlgorithmEvents; }; };
代理存根
DLL
的创建
Proxy/Stub
和
PC
端的代理存根的创建差不多,需要注意的是,需要定义一些宏才能编译通过。另外定义一个
def
文件,注明要到处的函数。
// dlldata.c 的包装 #define REGISTER_PROXY_DLL //DllRegisterServer 等 #ifndef _WIN32_WCE #define _WIN32_WINNT 0x0400 //对于 WinNT 4.0 或安装了 DCOM 的 Win95 #else #define WIN32 #endif #define USE_STUBLESS_PROXY //仅当使用 MIDL 开关 /Oicf 时定义 #ifndef _WIN32_WCE #pragma comment(lib, "rpcns4.lib") #endif #pragma comment(lib, "rpcrt4.lib") //#define ENTRY_PREFIX Prx #include "dlldata.c" #include "ServDemo_p.c"
编译好以上两个工程之后,基本上进程外
COM Server
工作算是完成了。在机器是使用是还需注册才行。
如何调用进程外组件
(
Client
程序)
对应客户端而已,基本上和调用进程内组件没什么区别了。在这里我提供了一些辅助代码《EventHandler.h》,协助客户端在不使用
ATL
情况下接受
COM Server
的事件。
源代码下载: http://download.csdn.net/source/3080188
相关文章推荐
- <<Windows CE 系统进程外组件应用开发 >> 文章的解读
- 软件系统开发中的组件框架技术研究、设计和应用【转】
- 基于组件GIS、GPS及SMS技术的车辆监控调度系统的应用开发
- 软件系统开发中的组件框架技术研究、设计和应用
- 软件系统开发中的组件框架技术研究、设计和应用[转]
- 软件系统开发中的组件框架技术研究、设计和应用
- 第一个(应用的)组件启动时,(系统)创建主进程(包名)+主线程,Application对象 (一个应用所有组件默认运行在同一个进程)
- 软件系统开发中的组件框架技术研究、设计和应用
- javaMail组件应用---------3 开发邮件系统步骤
- javaMail组件应用---------3 开发邮件系统步骤
- javaMail组件应用---------3 开发邮件系统步骤
- 软件系统开发中的组件框架技术研究、设计和应用【转自lrn资源网】
- 软件系统开发中的组件框架技术研究、设计和应用
- 嵌入式系统关键技术分析与开发应用
- 系统服务开发汇总iOS开发系列--调用系统应用
- DBGRIDEH 组件在Borland开发工具中应用全攻略 (转)
- APP后台开发运维与架构实践 4 : Linux --- App后台应用最广泛的系统
- Vaadin Web应用开发教程(27):UI组件-自定义组件
- 阿里云系统yunOs应用开发调研
- 应用开发第三天进程控制(国嵌笔记)