【问题标题】:Can we span separate instance of COM server(exe)我们能否跨越单独的 COM 服务器实例(exe)
【发布时间】:2014-06-05 19:47:15
【问题描述】:

我想拥有多个测试客户端,并且想关联一个 com 服务器 exe 来为每个测试客户端提供服务。

到目前为止,我可以看到在我的系统中只有一个 COM 服务器 exe 正在运行,它为我的所有测试客户端提供服务。

请告知如何在 COM 中实现这一点。

问候 阿什什

【问题讨论】:

  • COM 服务器在其 CoRegisterClassObject() 调用中指定 REGCLS 时会决定这一点。客户端应用程序无法推翻该决定。

标签: winapi com


【解决方案1】:

您的第一个服务器可能调用CoRegisterClassObject,这意味着第二个客户端找到了一个可用的类对象(使用CoGetClassObject,可能通过CoCreateInstance)。

CoRegisterClassObject 有可选的REGCLS 标志来控制重用。你想要的声音REGCLS_MULTI_SEPARATE

【讨论】:

  • 感谢您的信息...但我没有在我的 COM exe 中的任何地方定义此方法。但是我可以看到同一 COM 服务器的 proxystub dll 项目中有“DllRegisterServer”。跨度>
  • 我不关注。首先你说你有一个EXE服务器(进程外)现在它是一个DLL(进程内)?在这种情况下,这些是完全不同的事情。
  • 我的意思是说,当我们创建一个 com exe (out of proc) 时,ATL 向导会再创建一个项目来生成代理存根 dll。
  • 哦,对了,需要编组代码的非标准接口。那必须去某个地方,是的。不过,真正的 EXE 必须在某处注册类工厂。不过,可能在 ATL 代码中出现故障。
  • 请给我一些方法来解决下面提到的问题。我有多个客户端 exe,我想为每个客户端 exe 从 proc 中使用一个专用的 com 对象,它将为该特定客户端 exe 的请求提供服务。在这种情况下,我应该如何创建我的 com 服务器,我有尝试了 STA 和 MTA,但没有结果。我不能在这两个 exe 之间有正常的 IPC(共享内存、管道、窗口消息),这就是我选择 COM 方法来解决这个问题的原因。
猜你喜欢
  • 2014-05-05
  • 1970-01-01
  • 1970-01-01
  • 2011-11-10
  • 2023-03-25
  • 1970-01-01
  • 2010-12-24
  • 1970-01-01
  • 2014-05-06
相关资源
最近更新 更多