diff --git a/sdk/lib/atl/atlcomcli.h b/sdk/lib/atl/atlcomcli.h index cba78101d2d..e6effc2ffcf 100644 --- a/sdk/lib/atl/atlcomcli.h +++ b/sdk/lib/atl/atlcomcli.h @@ -59,6 +59,13 @@ inline HRESULT AtlHresultFromLastError() throw() return HRESULT_FROM_WIN32(dwError); } +template +class _NoAddRefReleaseOnCComPtr : public T +{ + private: + virtual ULONG STDMETHODCALLTYPE AddRef() = 0; + virtual ULONG STDMETHODCALLTYPE Release() = 0; +}; template class CComPtr @@ -173,10 +180,10 @@ public: return p; } - T *operator -> () + _NoAddRefReleaseOnCComPtr *operator -> () const { ATLASSERT(p != NULL); - return p; + return (_NoAddRefReleaseOnCComPtr *)p; } };