【问题标题】:Does a "pure" IDispatch interface require a proxy/stub DLL?“纯” IDispatch 接口是否需要代理/存根 DLL?
【发布时间】:2010-11-16 02:39:27
【问题描述】:

..对于进程外服务器,或者我可以在不注册代理/存根的情况下调用调度接口吗?

有问题的界面非常高级,所以性能不是问题,我可以让整个事情免注册,这是一个很大的优势

【问题讨论】:

  • 所以您想使用标准封送器自动为您创建代理/存根包装器。问题是您如何识别这个 coclass 的 IDispatch 以在没有该 coclass 的注册表项的情况下进行包装?
  • 不,问题是我是否可以使用它。

标签: c++ winapi com marshalling idispatch


【解决方案1】:

如果您的接口需要编组,您只需要一个代理/存根 dll。这意味着如果您的 COM 服务器正在处理中,并且接口未在公寓之间传递,并且您不会从 .Net 或任何其他需要编组的情况下调用它,那么您不需要代理/存根 dll。

【讨论】:

    【解决方案2】:

    如果您将接口限制为与自动化兼容的类型,我很确定您不需要提供自定义代理/存根 dll。在这种情况下,系统可以使用自动化编组器,不需要任何额外的帮助。我相信自动化兼容类型是可以放入VARIANT 的类型,例如简单的 POD 类型,BSTRs 等。

    我发现this KB article 对自动化封送器进行了一些讨论,尽管它并不是专门针对您的问题。它至少列出了兼容的类型。它还提到您需要在注册组件时专门识别自动化封送拆收器,但根据我的经验,这不是必需的 - 您的里程可能会有所不同。

    最后,您可能还需要实现 IProvideClassInfo;我一般使用ATL提供的实现。

    【讨论】:

      猜你喜欢
      • 2011-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-18
      • 1970-01-01
      • 2012-11-12
      • 1970-01-01
      • 2013-06-10
      相关资源
      最近更新 更多