Typelib marshalling BSTRs

Mike Hearn mike at theoretic.com
Mon Jul 21 06:25:47 CDT 2003

On Sun, 2003-07-20 at 12:29, Ove Kaaven wrote:
> IDispatch should not be marshalled by the typelib marshaller, the method
> arguments it use cannot be represented by a typelib, as you've seen. The
> MIDL code in oaidl_p.c must be used instead. You need to change the
> registry to use the right marshaller, I think the necessary
> winedefault.reg changes were included in my patch, but I'm not sure.

I'd just like to double check that it *is* actually possible to marshal
IDispatch, right? I've got it using the marshallers in oaidl_p.c, but I
get fixmes from the RPC runtime like so:

fixme:ole:NdrConvert (pStubMsg == ^0x4d7a27a4, pFormat == ^0x53bc5f84):

fixme:ole:PointerUnmarshall unhandled ptr type=12

and so on. Eventually it crashes inside native code (i think) just after
returning from the proxy (well, i can see the last call to
NdrComplexArrayUnmarshall) and calling VariantInit.

Are those fixmes actually critical? The NdrConvert stub at least
suggests that it might be, and that it should throw an exception.

any insights welcome, thanks -mike

More information about the wine-devel mailing list