STDFACT.CPP
/*++ 
 
Copyright (c) 1996 Microsoft Corporation 
 
Module Name: 
 
    StdFact.cpp 
 
Abstract: 
 
    Standard IClassFactory implementation 
 
Author: 
 
Environment: 
 
    User mode 
 
Revision History : 
 
--*/ 
#include "adssmp.h" 
 
STDMETHODIMP 
StdClassFactory::QueryInterface(REFIID riid, LPVOID FAR* ppv) 
{ 
    if (!ppv) 
        RRETURN(E_INVALIDARG); 
 
    if (IsEqualIID(riid, IID_IUnknown) || 
        IsEqualIID(riid, IID_IClassFactory)) 
    { 
        *ppv = (IClassFactory *) this; 
    } 
    else 
    { 
        *ppv = NULL; 
        return E_NOINTERFACE; 
    } 
 
    ((IUnknown *)*ppv)->AddRef(); 
    return S_OK; 
} 
 
STDMETHODIMP_(ULONG) 
StdClassFactory::AddRef(void) 
{ 
    ADsAssert(_ulRefs); 
 
    if (_ulRefs == 1) 
        INC_OBJECT_COUNT(); 
 
    return ++_ulRefs; 
} 
 
STDMETHODIMP_(ULONG) 
StdClassFactory::Release(void) 
{ 
    ADsAssert(_ulRefs > 1); 
 
    if (--_ulRefs == 1) 
        DEC_OBJECT_COUNT(); 
 
    return _ulRefs; 
} 
 
STDMETHODIMP 
StdClassFactory::LockServer (BOOL fLock) 
{ 
    if (fLock) 
        INC_OBJECT_COUNT(); 
    else 
        DEC_OBJECT_COUNT(); 
    return NOERROR; 
} 
 
CDynamicCF::CDynamicCF(void) 
{ 
    _ulRefs = 1; 
 
    INC_OBJECT_COUNT(); 
} 
 
CDynamicCF::~CDynamicCF(void) 
{ 
    DEC_OBJECT_COUNT(); 
} 
 
STDMETHODIMP 
CDynamicCF::QueryInterface(REFIID riid, LPVOID FAR* ppv) 
{ 
    if (!ppv) 
        RRETURN(E_INVALIDARG); 
 
    if (IsEqualIID(riid, IID_IUnknown) || 
        IsEqualIID(riid, IID_IClassFactory)) 
    { 
        *ppv = (IClassFactory *) this; 
    } 
    else 
    { 
        *ppv = NULL; 
        return E_NOINTERFACE; 
    } 
 
    ((IUnknown *)*ppv)->AddRef(); 
    return S_OK; 
} 
 
STDMETHODIMP 
CDynamicCF::LockServer (BOOL fLock) 
{ 
    if (fLock) 
    { 
        _ulRefs++; 
    } 
    else 
    { 
        _ulRefs--; 
    } 
 
    return S_OK; 
} 
 
#ifdef DOCGEN 
 
STDMETHODIMP 
StdClassFactory::CreateInstance(LPUNKNOWN pUnkOuter, 
        REFIID iid, 
        LPVOID FAR* ppv) {}; 
#endif  // DOCGEN