CoCreateInstance是否足够使用CLSCTX_LOCAL_SERVER来确保所有应用程序将共享COM对象实例?

时间:2014-05-12 19:20:53

标签: c++ com interop

CoCreateInstance是否足够使用CLSCTX_LOCAL_SERVER来确保所有应用程序将使用在第一个CoCreateInstance期间加载的COM对象的相同实例?

2 个答案:

答案 0 :(得分:4)

不,由服务器来决定,客户对此没有发言权。

服务器在注册类工厂时使用REGCLS enumeration。使用REGCLS_SINGLEUSE,客户端中的下一个CoCreateInstance()调用将启动另一个服务器。你想要REGCLS_MULTIPLEUSE。

答案 1 :(得分:2)

不,每次调用CoCreateInstance都会创建一个新对象。

如果您希望每个进程共享同一个对象,则必须创建另一个类,作为您要共享的对象的工厂。

让所有客户端共享同一个对象的另一种方法是使您的对象成为服务器EXE中单个服务器的代理对象。