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 CComClassFactory2
iç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
, GetLicenseKey
ve IsLicenseValid
statik işlevlerini VerifyLicenseKey
uygulaması 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; }
};
CComClassFactory2
hem hem de CComClassFactory2Base
lisanstan türetilir. CComClassFactory2Base
, ve 'den IClassFactory2
CComObjectRootEx< CComGlobalsThreadModel >
türetilir.
Devralma Hiyerarşisi
CComObjectRootBase
license
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 RequestLicKey
alı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::Unlock
azaltma.
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
_Module
CComModule'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ış