marshalled ITypeComp

Guillermo Winkler gwinkler at inconcertcc.com
Tue Feb 26 00:03:42 CST 2008


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.

I would like to follow up with someone (if available) just to be sure 
I'm not wasting time on the wrong track.

Thanks,
Guillermo




More information about the wine-devel mailing list