marshalled ITypeComp
Robert Shearman
rob at codeweavers.com
Tue Feb 26 05:19:05 CST 2008
Guillermo Winkler wrote:
> Hi,
> I'm having some problems regarding ITypeInfo/ITypeComp implementation.
>
> IDispatch* pdisp;
> ITypeInfo* ptinfo;
>
> HRESULT hr = pdisp->GetTypeInfo(0, LOCALE_SYSTEM_DEFAULT, &typeinfo);
> hr = ptinfo->GetTypeComp(&ptcomp);
>
>
> pdisp is created from
>
> hr = CoCreateInstance(clsid,
> NULL,
> CLSCTX_SERVER,
> IID_IDispatch,
> (void**)&pdisp);
>
> That is, the server is an outprocess exe.
>
> In this case marshalling of ITypeComp fails in first instance because
>
> ITypeComp_fnQueryInterface (oleaut32\typelib.c)
> resolves on -> ITypeInfo_QueryInterface (oleaut32\typelib.c)
>
> That is not considering IID_ITypeComp as a valid alternative(but it is)
>
> if(IsEqualIID(riid, &IID_IUnknown) ||
> IsEqualIID(riid,&IID_ITypeInfo)||
> IsEqualIID(riid,&IID_ITypeInfo2))
> *ppvObject = This;
>
> When I fixed this, I have a different problem now:
>
> fixme:ole:DllGetClassObject
> CLSID: {00020425-0000-0000-C000-000000000046}
> IID: {D5F569D0-593B-101A-B569-08002B2DBF7A}
>
> That is PSTypeComp to be marshalled asking for factory buffer
> IID_IPSFactoryBuffer.
Yes, CLSID_PSTypeComp should be added to the cases in which
OLEAUTPS_DllGetClassObject is called in
dlls/oleaut32/oleaut.c:DllGetClassObject.
--
Rob Shearman
More information about the wine-devel
mailing list