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

Is CoCreateInstance using CLSCTX_LOCAL_SERVER enough to ensure that all the applications will share the COM object instance?

本文关键字:应用程序 共享 对象 实例 COM 确保 LOCAL CLSCTX 使用 SERVER 是否      更新时间:2023-10-16

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

不,这是由服务器决定的,客户端没有发言权。

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

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

如果你想让每个进程共享同一个对象,你必须创建另一个类作为你想要共享的对象的工厂。

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