Export (0) Print
Expand All

CComClassFactory2 Class

This class implements the IClassFactory2 interface.

template <
   class license
>
class CComClassFactory2 : public IClassFactory2,
   public CComObjectRootEx<CComGlobalsThreadModel>,
   public license

Parameters

license
A class that implements the following static functions:
  • static BOOL VerifyLicenseKey( BSTR bstr );
  • static BOOL GetLicenseKey( DWORD dwReserved, BSTR* pBstr );
  • static BOOL IsLicenseValid( );

Remarks

CComClassFactory2 implements the IClassFactory2 interface, which is an extension of IClassFactory. IClassFactory2 controls object creation through a license. A class factory executing on a licensed machine can provide a run-time license key. This license key allows an application to instantiate objects when a full machine license does not exist.

ATL objects normally acquire a class factory by deriving from CComCoClass. This class includes the macro DECLARE_CLASSFACTORY, which declares CComClassFactory as the default class factory. To use CComClassFactory2, specify the DECLARE_CLASSFACTORY2 macro in your object's class definition. For example:

class CMyClass : ..., public CComCoClass< ... >
{
public:
   DECLARE_CLASSFACTORY2(CMyLicense)

   ...
};

CMyLicense, the template parameter to CComClassFactory2, must implement the static functions VerifyLicenseKey, GetLicenseKey, and IsLicenseValid. The following is an example of a simple license class:

class CMyLicense
{
protected:
   static BOOL VerifyLicenseKey(BSTR bstr)
   {
      USES_CONVERSION;
      return !lstrcmp(OLE2T(bstr), _T("My run-time license key"));
   }

   static BOOL GetLicenseKey(DWORD dwReserved, BSTR* pBstr) 
   {
      USES_CONVERSION;
      *pBstr = SysAllocString( T2OLE(_T("My run-time license key"))); 
      return TRUE;
   }

   static BOOL IsLicenseValid() {  return TRUE; }
};

CComClassFactory2 derives from both CComClassFactory2Base and license. CComClassFactory2Base, in turn, derives from IClassFactory2 and CComObjectRootEx< CComGlobalsThreadModel >.

Requirements

Header: atlcom.h

See Also

Class Members | CComClassFactoryAutoThread | CComClassFactorySingleton | CComObjectRootEx | CComGlobalsThreadModel | ATL Class Overview

Show:
© 2014 Microsoft