次の方法で共有


CComClassFactory2 クラス

このクラスは、IClassFactory2 インターフェイスを実装します。

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

パラメーター

  • ライセンス
    次の静的関数を実装するクラス:

    • static BOOL VerifyLicenseKey( BSTR bstr) ;

    • static BOOL GetLicenseKey( DWORD dwReserved**, BSTR*** pBstr) ;

    • static BOOL IsLicenseValid( );

メンバー

86sktbds.collapse_all(ja-jp,VS.110).gifパブリック メソッド

名前

説明

CComClassFactory2::CreateInstance

指定の CLSID を持つオブジェクトを作成します。

CComClassFactory2::CreateInstanceLic

ライセンス キーが指定された、指定の CLSID を持つオブジェクトを作成します。

CComClassFactory2::GetLicInfo

クラス ファクトリのライセンス処理機能を説明する情報を取得します。

CComClassFactory2::LockServer

メモリのクラス ファクトリをロックします。

CComClassFactory2::RequestLicKey

ライセンス キーを作成して返します。

解説

CComClassFactory2IClassFactoryの拡張子である IClassFactory2 のインターフェイスを実装します。IClassFactory2 のコントロールは、ライセンスを通じて作成について説明します。ライセンスされたコンピューターで実装するクラス ファクトリは、ランタイム ライセンス キーを提供できます。このライセンス キーはマシンの完全なライセンスがない場合、オブジェクトをインスタンス化できます。

ATL オブジェクトは CComCoClassから派生させて、通常はクラス ファクトリを取得します。既定のクラス ファクトリとして CComClassFactory を宣言するこのクラスでは、マクロ DECLARE_CLASSFACTORYが含まれています。CComClassFactory2を使用するには、オブジェクトのクラス定義に DECLARE_CLASSFACTORY2 のマクロを指定します。例:

class ATL_NO_VTABLE CMyClass2 :
   public CComObjectRootEx<CComSingleThreadModel>,
   public CComCoClass<CMyClass2, &CLSID_MyClass>,
   public IDispatchImpl<IMyClass, &IID_IMyClass, &LIBID_NVC_ATL_COMLib, /*wMajor =*/ 1, /*wMinor =*/ 0>,
   public IDispatchImpl<IMyDualInterface, &__uuidof(IMyDualInterface), &LIBID_NVC_ATL_COMLib, /* wMajor = */ 1, /* wMinor = */ 0>
{
public:
   DECLARE_CLASSFACTORY2(CMyLicense)

   // Remainder of class declaration omitted

CMyLicenseCComClassFactory2へのテンプレート パラメーターは、静的関数 VerifyLicenseKeyGetLicenseKeyIsLicenseValidを実装する必要があります。次は、単純なライセンス クラスの例です:

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 は、両方の CComClassFactory2Baseライセンスから取得します。CComClassFactory2Baseは、IClassFactory2 と **CComObjectRootEx< CComGlobalsThreadModel >**から取得します。

継承階層

CComObjectRootBase

license

CComObjectRootEx

IClassFactory2

CComClassFactory2

必要条件

ヘッダー : atlcom.h

参照

関連項目

CComClassFactoryAutoThread クラス

CComClassFactorySingleton クラス

CComObjectRootEx クラス

CComGlobalsThreadModel

その他の技術情報

ATL クラスの概要