classname *pObj = NULL; \
if(NULL != pOuter) \
return P6R::eNoAgregation; \
if(NULL == ppNewComponent) \
return P6R::eAccessFault; \
*ppNewComponent = NULL; \
if(NULL == (pObj = new (std::nothrow) classname())) { \
*ppNewComponent = NULL; \
return P6R::eNoMemory; \
} \
pObj->addref(); \
if(1 == pObj->m_cRef.value) { \
err = pObj->queryInterface(iid,ppNewComponent); \
} \
else { \
err = eInvalidRefcount; \
} \
pObj->release(); \
return err; \
}
The base interface all [p6]COM components must derive from and implement.
P6UINT32 P6ERR
COM err return type see P6ERR.h.