怎样实现安全的 IUnknown + CComPtr?

EDDGA 2020-11-20 01:57:26
参考文:
COM思想的背后
XmlLite - A Small And Fast XML Parser For Native C++
COM编程攻略(三 硬核ATL实现IUnknown代码解析)

如同 XMLLite,不是 ActiveX 组件,但可以用 CComPtr 安全地管理生命周期。
ATL 的 CComObjectRoot 有完善但不容易剥离的 IUnknown 实现,请教有没有轻便安全的方法?
...全文
145 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
EDDGA 2020-11-24
  • 打赏
  • 举报
回复
引用 1 楼 陈仲甫 的回复:
这取决于你如何使用CComPtr 他都没用CConPtr::CoCreateInstance 而写了一个专门的创建函数 所以它不要注册机制是可以的
但并不能说他的类已经跟COM其他部分完善协作了 你需要满足那些限制
如果自己去做一个IUnknown 还是需要把信息写入注册表的CLSID下 不然你就要提供自己的创建函数
你可以完全手工写一个继承IUnknown的代码, 但是除非你另外规定使用方法 还是必须实现DllRegisterServer之类导出函数、满足COM规范有要求的QueryInterface的4个特性 等等


谢谢。请在这个相同帖子,随便回复一句,我结帖给分
an_bachelor 2020-11-21
  • 打赏
  • 举报
回复
这取决于你如何使用CComPtr 他都没用CConPtr::CoCreateInstance 而写了一个专门的创建函数 所以它不要注册机制是可以的 但并不能说他的类已经跟COM其他部分完善协作了 你需要满足那些限制 如果自己去做一个IUnknown 还是需要把信息写入注册表的CLSID下 不然你就要提供自己的创建函数 你可以完全手工写一个继承IUnknown的代码, 但是除非你另外规定使用方法 还是必须实现DllRegisterServer之类导出函数、满足COM规范有要求的QueryInterface的4个特性 等等

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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