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( );
Members
公用方法
名稱 |
描述 |
---|---|
建立指定的 CLSID 的物件。 |
|
將授權金鑰,建立指定的 CLSID 的物件。 |
|
擷取描述 Class Factory 授權功能的相關資訊。 |
|
鎖定在記憶體的 Class Factory。 |
|
授權金鑰建立和傳回。 |
備註
CComClassFactory2IClassFactory2 實作介面,則為 IClassFactory副檔名。IClassFactory2 控制項透過授權物件建立。執行授權的電腦的 Class Factory 可以提供執行階段授權識別碼。當完整授權的電腦能夠不存在時,這個授權識別碼可讓應用程式執行個體化物件。
ATL 物件以下列方式通常是安全的 Class Factory。 CComCoClass。這個類別包含巨集 DECLARE_CLASSFACTORY,宣告 CComClassFactory 做為預設的 Class Factory。若要使用 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
CMyLicense,對 CComClassFactory2的樣板參數時,必須實作靜態函式 VerifyLicenseKey、 GetLicenseKey和 IsLicenseValid。以下是簡單的授權的類別範例:
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
IClassFactory2
CComClassFactory2
需求
Header: atlcom.h