高手请进:WinCE下COM组件的线程模型问题!

toroam 2007-08-08 04:51:47
我想在WinCE下做一个多线程访问共享数据的东东,想用COM组件来封装,利用它APARTMENT方式来达到数据同步。

但在WinCE6.0下没有用起来!
不很清楚WinCE6.0对COM的支持如何,请有经验的高手指点,谢先了!

引用:wince6.0下对COM的支持描述如下!
The following levels of run-time support for COM-based applications are supported:

Minimal COM provides a baseline API set for COM object creation. This Catalog item requires about 10–20K of memory and is only available in headless OS designs.


COM provides a midrange implementation of COM and Automation that supports only in-process free-threaded objects and requires about 100–200K of memory.


The Distributed Component Object Model (DCOM) provides a full-featured COM implementation equivalent to Microsoft Windows NT® 4.0 SP5 and requires more than 700K of memory.



In addition, you can add storage functionality to any one of the three COM implementations by adding the COM Storage Catalog item.

Note:
Distributed COM (DCOM), sometimes also referred to as "COM Remoting", is not included in Windows Embedded CE. Please see Remote DCOM Support for more information.

...全文
152 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
JasonBUG 2012-03-17
  • 打赏
  • 举报
回复
正好遇到这个问题,请问解决否?
toroam 2007-08-13
  • 打赏
  • 举报
回复
怎么没有人回呀
toroam 2007-08-08
  • 打赏
  • 举报
回复
当选用DCOM的时候,编译也报错,我的处理是注视掉条件编译:
//#ifndef _CE_DCOM
DECLARE_REGISTRY_RESOURCEID(IDR_WAN)
//#endif
可以通过,但在调用的时候结果不正确(在CoCreateInstance返回“没有注册接口”):
//if(SUCCEEDED(CoInitialize(NULL)))
hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
if(SUCCEEDED(hr))
{
hr = CoCreateInstance(CLSID_WAN, NULL, CLSCTX_INPROC_SERVER,
IID_IWAN, reinterpret_cast<void **>(&pComA));
if (SUCCEEDED(hr))
{
//hr = pIDs->QueryInterface(IID_ICOMA, (LPVOID *)&pComA);
return TRUE;
}
}
toroam 2007-08-08
  • 打赏
  • 举报
回复
PB生成SDK时候,我选用COM组,即SYSGEN_OLE/SYSGEN_OLE_GUIDS/SYSGEN_OLE_STG

在生成COM组件的时候加上/D _CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA可以编译过!
但是FREE方式,不是APARTMENT的方式。

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧