#include <mtx.h> IMyInterface* pSafeMyObject = NULL; IAnotherObject* pOtherObject = NULL; HRESULT hr; // Get a safe reference. pSafeMyObject = SafeRef(IID_IMyInterface, (IUnknown*)this); // Invoke a method on another object, passing the // safe reference so it can call back. hr = pOtherObject->CallMeBack(pSafeMyObject); // Release the safe reference. safeMyObject->Release();