CComClassFactory

class CComClassFactory : public IClassFactory, public CComObjectRoot< CComGlobalsThreadModel >

CComClassFactory implements the IClassFactory interface, which contains methods for creating an object of a particular CLSID, as well as locking the class factory in memory to allow new objects to be created more quickly. IClassFactory must be implemented for every class that you register in the system registry and to which you assign a CLSID.

ATL objects normally acquire a default class factory by deriving from CComCoClass. This class includes the macro DECLARE_CLASSFACTORY, which declares CComClassFactory as the default class factory. To override this default, specify one of the DECLARE_CLASSFACTORYXXX macros in your class definition. For example, the DECLARE_CLASSFACTORY_EX macro uses the specified class for the class factory:

class CMyClass : ..., public CComCoClass< ... >
{
public:
   DECLARE_CLASSFACTORY_EX(CMyClassFactory)

   ...
};

The above class definition specifies that CMyClassFactory will be used as the object’s default class factory. CMyClassFactory must derive from CComClassFactory and override CreateInstance.

ATL provides three other macros that declare a class factory:

#include <atlcom.h>

See Also CComObjectRootEx, CComGlobalsThreadModel, IClassFactory in the Win32 SDK


CComClassFactory Class Members

IClassFactory Methods
CreateInstanceCreates an object of the specified CLSID.
LockServerLocks the class factory in memory.

CComClassFactory Overview


Methods


CComClassFactory::CreateInstance

HRESULT CreateInstance( LPUNKNOWN pUnkOuter, REFIID riid, void** ppvObj );

Return Value

A standard HRESULT value.

Parameters

pUnkOuter [in] If the object is being created as part of an aggregate, then pUnkOuter must be the outer unknown. Otherwise, pUnkOuter must be NULL.

riid [in] The IID of the requested interface. If pUnkOuter is non-NULL, riid must be IID_IUnknown.

ppvObj [out] A pointer to the interface pointer identified by riid. If the object does not support this interface, ppvObj is set to NULL.

Remarks

Creates an object of the specified CLSID and retrieves an interface pointer to this object.

CComClassFactory Overview | Class Members

See Also CoCreateInstance and CoGetClassObject in the Win32 SDK


CComClassFactory::LockServer

HRESULT LockServer( BOOL fLock );

Return Value

A standard HRESULT value.

Parameters

fLock [in] If TRUE, the lock count is incremented; otherwise, the lock count is decremented.

Remarks

Increments and decrements the module lock count by calling _Module::Lock and _Module::Unlock, respectively. Here, _Module refers to the global instance of CComModule or a class derived from it.

Calling LockServer allows a client to hold onto a class factory so that multiple objects can be created quickly.

CComClassFactory Overview | Class Members

See Also CComModule::Lock, CComModule::Unlock