On Wed, 2003-07-23 at 23:04, Robert Shearman wrote:
I don't know about NdrInterfacePointerMarshall, but I don't think it should get there to start with (see below). BTW, I think the two spellings depends on whether the word is used as a verb or as a noun.
Yeah, I considered that, but MSDN seems to use marshal as a verb as well. *shrug*
I think the code should not try to marshal/unmarshal the data in rpcrt4, but should use the PSOAInterface code in oleaut32 (according to the registry entry for Interfaces[CLSID of IWebBrowser2]\ProxyStubClsid32). It would probably be best to find out why this is not happening (maybe by moving some oleaut32 code to rpcrt4?).
Well, the code doesn't actually marshal IWebBrowser2, it operates entirely in terms of IDispatch interfaces. Once the dispatch interface for the WebBrowser control is marshalled into another thread, the code starts poking it via Invoke, in this case retrieving the Document property which also returns a dispatch interface.
I'm pretty sure just marshalling IWebBrowser2 would work, but unfortunately the nature of the Java-COM bridge we use (neva coroutine) means that it all goes via IDispatch. That, in turn, means we have to support marshalling of VT_DISPATCH variants.
thanks -mike