2009-08-01 57 views
0

..对于进程外服务器,还是我可以调用调度接口而不注册代理/存根?“纯”IDispatch接口是否需要代理/存根DLL?

有问题的接口是非常高的水平,所以性能是一个不是问题的问题,我可以使整个事情免注册,这是一大利好

+0

所以你想使用标准封送拆分器为你自动创建代理/存根封装器。问题是你如何识别这个coclass的IDispatch被包装而不是coclass的注册表项? – wqw 2009-08-02 11:56:01

回答

1

我敢肯定,如果您将界面限制为自动化兼容类型,则不需要提供自定义代理/存根dll。在这种情况下,系统可以使用自动封送器并且不需要任何额外的帮助。我相信自动化兼容类型是适合于VARIANT的类型,例如,简单的POD类型,BSTR等。

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

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

0

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