我实现了一个进程外COM服务器(在服务中实现)。我不希望其他应用程序访问COM服务器中的所有功能,因此我开发了一个与进程外服务器通信的进程内服务器(DLL)。
因为我不希望直接访问进程外COM服务器中的接口,所以我没有使用服务嵌入类型库,所以我想我可以使用#import并访问COM服务器通过TLB。但是,当我尝试在我的in-proc-server中创建服务中实现的类的实例时,我得到了一个E_NOINTERFACE。我想这是由于编组,但我无法弄清楚如何克服这个问题。
如何在不泄露进程外服务器的接口详细信息的情况下,如何从进程内服务器与我的进程外服务器进行通信?
答案 0 :(得分:0)
我不确定这将如何帮助实现接口,但there're three ways to make marshalling working和typelib就是其中之一。另一个非常简单的方法是代理/存根 - 一个单独的进程内COM服务器中的一堆代码,一旦在Windows注册表中注册,它将自动执行编组。同样,我不确定这将如何帮助构建接口,但它看起来更隐蔽,然后是一个类型库,它只是向任何使用OLEView的人公开接口。