“纯”IDispatch接口是否需要代理/存根DLL?

时间:2009-08-01 23:49:00

标签: c++ winapi com marshalling idispatch

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

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

2 个答案:

答案 0 :(得分:1)

如果您将接口限制为自动化兼容类型,我很确定您不需要提供自定义代理/存根DLL。在这种情况下,系统可以使用自动化封送器,不需要任何其他帮助。我相信自动化兼容类型是适合VARIANT的类型,例如简单的POD类型,BSTR等。

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

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

答案 1 :(得分:0)

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