DECLARE_CLASSFACTORY_SINGLETON()的问题。

langzi8818 2006-11-12 11:09:30
小弟学习COM时间不久,所以很多问题不是很清楚。
首先对COM的调用过程。
CoCreateInstance(),这样返回的是接口指针。如果我在客户端调用,通过代理去获得服务器上的接口指针。那么服务器首先加载DLL,然后创建一个COM类,通过这个COM类获得接口指针。然后我在声明一个接口指针,调用这个函数去获取,是不是服务器就不在创建COM类,而使用前面创建的过的COM类去获得接口?我的意思就是说,是不是服务器上只有一个COM类,不管你获取几个相同的接口指针,都是绑定到唯一存在的COM类上?
那么DECLARE_CLASSFACTORY_SINGLETON()又是什么?这个就是声明单一实例,是不是就是说服务器只有一个COM类。那不是跟上面的一样?
DECLARE_CLASSFACTORY_SINGLETON()这个什么情况下使用??

希望大虾们能指教小弟,本身COM就不是很好学。:(
...全文
402 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
helloj2ee0218 2007-02-11
  • 打赏
  • 举报
回复
类只有一个,但是对象可以很多个。
DECLAR_CLASSFACTORY_SINGLETON()这是声明是一个单例工厂,意思是只能创建一个实例。想学好com确实很不容易!
helloj2ee0218 2007-02-09
  • 打赏
  • 举报
回复
这个问题,也困惑了我好长时间,其实类厂创建类CreateInstance需要服务器端程序员实现
但是类厂的CreateInstance是Com库调用的,这样理解对否?
ReverseEngineering 2007-01-07
  • 打赏
  • 举报
回复
一个类可以有多个借口。
Fibre 2006-11-12
  • 打赏
  • 举报
回复
1 CoCreateInstance() 会创建类厂(ClassObject)对象,由它来创建COM类的实例,最终返回你
调用CoCreateInstance()时指定的接口。
如果COM类已创建,你可以通过上面调用获取的接口来查询新的接口。服务器端只是会调用AddRef(),增加该接口的引用记数,并不会创建新的Com类的实例。



2.DECLARE_CLASSFACTORY_SINGLETON()的使用场景 利弊 《ATL Internals》有很详细的说明,

3,245

社区成员

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

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