Neither. Make a sepaarte proxy/stub DLL with B's marshaling
support. Also see my reply on your other (misplaced) post.
Hi,
Did you register the proxy-stub for interface B? Remember, it is not
marked as automation-compliant.
Hmm.. No, I didn't register the proxy/stub for interface B. The local
server only 'uses' the interface B, but did not implement it. As for the
client of the local server, which is an in-proc dll, it also does not
register the proxy/stub for interface B. Interface B is in defined in a
common IDL file that is shared between several COM servers. I
experimented it and confirmed that once the proxy/stub for interface B
gets registered, everything works fine.
But I have another question here. I am not sure which COM server should
register the proxy/stub for interface B in this case, since it is in a
common IDL file that several COM servers will 'import' from. And COM
servers may include 2 or more local servers.
In this case, should I register one or both local server's proxy/stub?
Or, should I compile the common IDL file into a
common typelib and register it? Or is there any other recommendation?
Thank you.
Angela
"Brian Muth" <bmuth@mvps.org> wrote in message
news:OVP7Kk1pGHA.3564@TK2MSFTNGP03.phx.gbl...
Can you explain more on why a dual interface cannot accept other
interface, other than IUnknown, as its method's paramter?
A dual interface supports IDispatch, and therefore the parameters must
be ole-automation compliant. Passing a custom interface is not
ole-automation compliant. But you can pass IDispatch* and IUnknown*.
And actually I tried the method of passing the IUnknown of Interface B
over to the local server, and local server then QI to get the actual
interface B. However, although my client does receive the QI from the
local server and returns the interface B, the local server cannot get
the interface B over. The error code is E_NOINTERFACE.
Did you register the proxy-stub for interface B? Remember, it is not
marked as automation-compliant.
By the way, I am not using attributed ATL. At least, when I created
the project, I unticked the 'attributed' check box... :p
Excellent.
Brian