static ULONG WINAPI InstanceObjectFactory_IClassFactory_AddRef(IClassFactory *iface) { InstanceObjectFactory *This = ADJUST_THIS(InstanceObjectFactory, IClassFactory, iface); ULONG cRef; TRACE("(iface=%p)\n", iface); cRef = InterlockedIncrement(&This->m_cRef); if (cRef == 1) IClassFactory_LockServer(iface, TRUE); return cRef; }
static ULONG WINAPI InstanceObjectFactory_IClassFactory_Release(IClassFactory *iface) { InstanceObjectFactory *This = ADJUST_THIS(InstanceObjectFactory, IClassFactory, iface); ULONG cRef; TRACE("(iface=%p)\n", iface); cRef = InterlockedDecrement(&This->m_cRef); if (cRef == 0) { IClassFactory_LockServer(iface, FALSE); InstanceObjectFactory_Destroy(This); } return cRef; }
static ULONG WINAPI InstanceObjectFactory_IClassFactory_Release(IClassFactory *iface) { InstanceObjectFactory *This = impl_from_IClassFactory(iface); ULONG cRef; TRACE("(iface=%p)\n", iface); cRef = InterlockedDecrement(&This->m_cRef); if (cRef == 0) { IClassFactory_LockServer(iface, FALSE); IPropertyBag_Release(This->m_pPropertyBag); heap_free(This); } return cRef; }