Aracılığıyla paylaş


CComClassFactory2 Sınıfı

Bu sınıf IClassFactory2 arabirimini uygular.

Sözdizimi

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

Parametreler

lisans
Aşağıdaki statik işlevleri uygulayan bir sınıf:

  • static BOOL VerifyLicenseKey( BSTR bstr );

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

  • static BOOL IsLicenseValid( );

Üyeler

Genel Yöntemler

Veri Akışı Adı Açıklama
CComClassFactory2::CreateInstance Belirtilen CLSID nesnesini oluşturur.
CComClassFactory2::CreateInstanceLic Lisans anahtarı verilip belirtilen CLSID'nin bir nesnesini oluşturur.
CComClassFactory2::GetLicInfo Sınıf fabrikasının lisanslama özelliklerini açıklayan bilgileri alır.
CComClassFactory2::LockServer Sınıf fabrikasını belleğe kilitler.
CComClassFactory2::RequestLicKey Bir lisans anahtarı oluşturur ve döndürür.

Açıklamalar

CComClassFactory2, IClassFactory'nin uzantısı olan IClassFactory2 arabirimini uygular. IClassFactory2 bir lisans aracılığıyla nesne oluşturmayı denetler. Lisanslı bir makinede yürütülen bir sınıf fabrikası bir çalışma zamanı lisans anahtarı sağlayabilir. Bu lisans anahtarı, bir uygulamanın tam makine lisansı olmadığında nesnelerin örneğini oluşturmasına olanak tanır.

ATL nesneleri normalde CComCoClass'tan türetilerek bir sınıf fabrikası alır. Bu sınıf, CComClassFactory'yi varsayılan sınıf fabrikası olarak bildiren makro DECLARE_CLASSFACTORY içerir. kullanmak CComClassFactory2için nesnenizin sınıf tanımında DECLARE_CLASSFACTORY2 makroyu belirtin. Örneğin:

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, için şablon parametresinin CComClassFactory2, GetLicenseKeyve IsLicenseValidstatik işlevlerini VerifyLicenseKeyuygulaması gerekir. Aşağıda basit bir lisans sınıfı örneği verilmiştir:

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; }
};

CComClassFactory2hem hem de CComClassFactory2Base lisanstan türetilir. CComClassFactory2Base, ve 'den IClassFactory2 CComObjectRootEx< CComGlobalsThreadModel >türetilir.

Devralma Hiyerarşisi

CComObjectRootBase

license

CComObjectRootEx

IClassFactory2

CComClassFactory2

Gereksinimler

Üst bilgi: atlcom.h

CComClassFactory2::CreateInstance

Belirtilen CLSID nesnesini oluşturur ve bu nesneye bir arabirim işaretçisi alır.

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

Parametreler

pUnkOuter
[in] Nesne bir toplamanın parçası olarak oluşturuluyorsa, pUnkOuter dış bilinmeyen olmalıdır. Aksi takdirde, pUnkOuter NULL olmalıdır.

riid
[in] İstenen arabirimin IID değeri. pUnkOuter NULL değilse, riid olmalıdırIID_IUnknown.

ppvObj
[out] riid tarafından tanımlanan arabirim işaretçisine ilişkin bir işaretçi. Nesne bu arabirimi desteklemiyorsa, ppvObj NULL olarak ayarlanır.

Dönüş Değeri

Standart bir HRESULT değeri.

Açıklamalar

Makinenin tam lisanslı olmasını gerektirir. Tam makine lisansı yoksa CreateInstanceLic'i çağırın.

CComClassFactory2::CreateInstanceLic

CreateInstance'a benzer, ancak bu CreateInstanceLic bir lisans anahtarı gerektirir.

STDMETHOD(CreateInstanceLic)(
    IUnknown* pUnkOuter,
    IUnknown* /* pUnkReserved
*/,
    REFIID riid,
    BSTR bstrKey,
    void** ppvObject);

Parametreler

pUnkOuter
[in] Nesne bir toplamanın parçası olarak oluşturuluyorsa, pUnkOuter dış bilinmeyen olmalıdır. Aksi takdirde, pUnkOuter NULL olmalıdır.

pUnkReserved
[in] Kullanılmaz. NULL olmalıdır.

riid
[in] İstenen arabirimin IID değeri. pUnkOuter NULL değilse, riid olmalıdırIID_IUnknown.

bstrKey
[in] Daha önce çağrısından RequestLicKeyalınan çalışma zamanı lisans anahtarı. Nesneyi oluşturmak için bu anahtar gereklidir.

ppvObject
[out] riid tarafından belirtilen arabirim işaretçisinin işaretçisi. Nesne bu arabirimi desteklemiyorsa, ppvObject NULL olarak ayarlanır.

Dönüş Değeri

Standart bir HRESULT değeri.

Açıklamalar

RequestLicKey kullanarak bir lisans anahtarı alabilirsiniz. Lisanssız bir makinede nesne oluşturmak için çağırmalısınız CreateInstanceLic.

CComClassFactory2::GetLicInfo

LICINFO yapısını sınıf fabrikasının lisanslama özelliklerini açıklayan bilgilerle doldurur.

STDMETHOD(GetLicInfo)(LICINFO* pLicInfo);

Parametreler

pLicInfo
[out] Bir LICINFO yapı işaretçisi.

Dönüş Değeri

Standart bir HRESULT değeri.

Açıklamalar

fRuntimeKeyAvail Bu yapının üyesi, lisans anahtarı verildiğinde sınıf fabrikasının lisanssız bir makinede nesnelerin oluşturulmasına izin verip vermediğini belirtir. fLicVerified üyesi, tam makine lisansı olup olmadığını gösterir.

CComClassFactory2::LockServer

Sırasıyla ve çağırarak _Module::Lock modül kilit sayısını artırır ve _Module::Unlockazaltma.

STDMETHOD(LockServer)(BOOL fLock);

Parametreler

sürü
[in] TRUE ise, kilit sayısı artırılır; aksi takdirde, kilit sayısı azalmış.

Dönüş Değeri

Standart bir HRESULT değeri.

Açıklamalar

_ModuleCComModule'un genel örneğini veya ondan türetilmiş bir sınıfı ifade eder.

Çağırma LockServer , istemcinin birden çok nesnenin hızlı bir şekilde oluşturulabilmesi için bir sınıf fabrikasında tutunmasını sağlar.

CComClassFactory2::RequestLicKey

LICINFO yapısının fRuntimeKeyAvail üyesiNIN TRUE olması koşuluyla bir lisans anahtarı oluşturur ve döndürür.

STDMETHOD(RequestLicKey)(DWORD dwReserved, BSTR* pbstrKey);

Parametreler

dwReserved
[in] Kullanılmaz. Sıfır olmalıdır.

pbstrKey
[out] Lisans anahtarının işaretçisi.

Dönüş Değeri

Standart bir HRESULT değeri.

Açıklamalar

Lisanssız bir makinede nesne oluşturmak için CreateInstanceLic'i çağırmak için bir lisans anahtarı gereklidir. fRuntimeKeyAvail FALSE ise, nesneler yalnızca tam lisanslı bir makinede oluşturulabilir.

değerini almak için GetLicInfo çağrısı yapınfRuntimeKeyAvail.

Ayrıca bkz.

CComClassFactoryAutoThread Sınıfı
CComClassFactorySingleton Sınıfı
CComObjectRootEx Sınıfı
CComGlobalsThreadModel
Sınıfa Genel Bakış