Re: AtlMarshalPtrInProc return E_NOINTERFACE
"Vitalij Skrupskij" <vitalij@4team.biz> wrote in message
news:7A5E3BE3-04B4-4BC6-BEA4-5656BD52319D@microsoft.com
CComPtr<IA> pp;
IStream *pStm;
HRCHECK( CComObject<CMyClass>::CreateInstance(&p));
HRCHECK(p->QueryInterface(IID_IUnknown, (void**)&pp));
Why are you querying for IUnknown, but putting the result into IA
pointer? This is equivalent to a downcast, and is illegal in COM. Query
for the interface you actually want.
HRESULT hRes = AtlMarshalPtrInProc(pp, IID_IB
&pStm);
Why are you passing IA pointer, but specify IID_IB? The two parameters
must match.
Have you built and registered proxy/stub DLL for your interfaces? Check
in the registry under HKCR\Interface\{Your IID}
--
With best wishes,
Igor Tandetnik
With sufficient thrust, pigs fly just fine. However, this is not
necessarily a good idea. It is hard to be sure where they are going to
land, and it could be dangerous sitting under them as they fly
overhead. -- RFC 1925