Marcus Meissner wrote:
As far as I see it I have two options (to run this outprocess client/server program):
- use the available proxy/stub code (which is what I assume Windows
does?) However since some of the rpcrt4 stub/proxy handling in wine is not finished yet, this probably won't work always (and it doesn't yet for me for this application). And indeed I don't really know if this also affects for example InstallShield behaviour.
- use the typelib marshaller if a typelib is registered (even though a
proxy/stub is available). This is the current wine codepath, but it also does not work for me since I get some VT_USERDEFINED errors. But that started me wondering why the 'real' proxy/stub code is not used. Since some of the rpcrt4 code path seems to work with marshalling, I came up with this patch.
What VT_USERDEFINED errors?
Well, the last part of the server trace logging is:
trace:ole:LoadTypeLibEx returns 00000000 trace:ole:LoadRegTypeLib (IID: {00020430-0000-0000-c000-000000000046}) load SUCCESS (0x42626760) trace:ole:ITypeLib2_fnAddRef (0x42626760)->ref was 1 trace:ole:ITypeLib2_fnGetTypeInfoOfGuid (0x42626760) guid: {3599b012-1f4b-11d4-9463-000629d00584}) trace:ole:ITypeLib2_fnGetTypeInfoOfGuid -- element not found trace:ole:ITypeLib2_fnRelease (0x42626760)->(1) trace:ole:ITypeInfo_fnGetRefTypeInfo (0x426252c8) hreftype 0x000d loaded FAILURE (0x42e07fd8) fixme:ole:deserialize_param Could not get typeinfo of hreftype d for VT_USERDEFINED. fixme:ole:TMStubImpl_Invoke Failed to deserialize param pObjectType, hres 8002802b trace:ole:_invoke Calling 0x672d3b80(40d55520,40320060,) fixme:ole:_xread Read only 0 of 4 bytes from 0xd0. fixme:ole:_StubReaderThread Failed with hres 80004005
And the last part of the client trace logs contains something similar: trace:ole:LoadTypeLibEx returns 00000000 trace:ole:LoadRegTypeLib (IID: {00020430-0000-0000-c000-000000000046}) load SUCCESS (0x40371928) trace:ole:ITypeLib2_fnAddRef (0x40371928)->ref was 1 trace:ole:ITypeLib2_fnGetTypeInfoOfGuid (0x40371928) guid: {3599b012-1f4b-11d4-9463-000629d00584}) trace:ole:ITypeLib2_fnGetTypeInfoOfGuid -- element not found trace:ole:ITypeLib2_fnRelease (0x40371928)->(1) trace:ole:ITypeInfo_fnGetRefTypeInfo (0x403702e0) hreftype 0x000d loaded FAILURE (0x403718d0) fixme:ole:serialize_param Could not get typeinfo of hreftype d for VT_USERDEFINED. fixme:ole:xCall Failed to serialize param, hres 8002802b trace:ole:PipeBuf_GetBuffer (0x4069fb60,{11ef83d1-553a-11d3-bb12-0004ac9658d6}), slightly wrong. trace:ole:PipeBuf_SendReceive () trace:ole:deserialize_param vt 26 at 0x4069fbe4 fixme:ole:deserialize_param Failed to load pointer cookie. fixme:ole:xCall Failed to unmarshall param, hres 80004005
How can I find out what is wrong here? --- Jeroen