Kelas CComClassFactory2
Kelas ini mengimplementasikan antarmuka IClassFactory2 .
Sintaks
template <class license>
class CComClassFactory2 : public IClassFactory2,
public CComObjectRootEx<CComGlobalsThreadModel>,
public license
Parameter
lisensi
Kelas yang mengimplementasikan fungsi statis berikut:
static BOOL VerifyLicenseKey( BSTR bstr );
static BOOL GetLicenseKey( DWORD dwReserved, BSTR * pBstr );
static BOOL IsLicenseValid( );
Anggota
Metode Publik
Nama | Deskripsi |
---|---|
CComClassFactory2::CreateInstance | Membuat objek DARI CLSID yang ditentukan. |
CComClassFactory2::CreateInstanceLic | Mengingat kunci lisensi, membuat objek CLSID yang ditentukan. |
CComClassFactory2::GetLicInfo | Mengambil informasi yang menjelaskan kemampuan lisensi pabrik kelas. |
CComClassFactory2::LockServer | Mengunci pabrik kelas dalam memori. |
CComClassFactory2::RequestLicKey | Membuat dan mengembalikan kunci lisensi. |
Keterangan
CComClassFactory2
mengimplementasikan antarmuka IClassFactory2, yang merupakan ekstensi dari IClassFactory. IClassFactory2
mengontrol pembuatan objek melalui lisensi. Pabrik kelas yang dijalankan pada mesin berlisensi dapat menyediakan kunci lisensi run-time. Kunci lisensi ini memungkinkan aplikasi untuk membuat instans objek ketika lisensi komputer penuh tidak ada.
Objek ATL biasanya memperoleh pabrik kelas dengan berasal dari CComCoClass. Kelas ini mencakup DECLARE_CLASSFACTORY makro, yang mendeklarasikan CComClassFactory sebagai pabrik kelas default. Untuk menggunakan CComClassFactory2
, tentukan makro DECLARE_CLASSFACTORY2 dalam definisi kelas objek Anda. Contohnya:
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
, parameter templat ke CComClassFactory2
, harus mengimplementasikan fungsi VerifyLicenseKey
statis , , GetLicenseKey
dan IsLicenseValid
. Berikut ini adalah contoh kelas lisensi sederhana:
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
berasal dari dan CComClassFactory2Base
lisensi. CComClassFactory2Base
, pada gilirannya, berasal dari IClassFactory2
dan CComObjectRootEx< CComGlobalsThreadModel >
.
Hierarki Warisan
CComObjectRootBase
license
IClassFactory2
CComClassFactory2
Persyaratan
Header: atlcom.h
CComClassFactory2::CreateInstance
Membuat objek CLSID yang ditentukan dan mengambil penunjuk antarmuka ke objek ini.
STDMETHOD(CreateInstance)(LPUNKNOWN pUnkOuter, REFIID riid, void** ppvObj);
Parameter
pUnkOuter
[di] Jika objek sedang dibuat sebagai bagian dari agregat, maka pUnkOuter harus menjadi bagian luar yang tidak diketahui. Jika tidak, pUnkOuter harus NULL.
riid
[masuk] IID antarmuka yang diminta . Jika pUnkOuter non-NULL, riid harus IID_IUnknown
.
ppvObj
[out] Penunjuk ke penunjuk antarmuka yang diidentifikasi oleh riid. Jika objek tidak mendukung antarmuka ini, ppvObj diatur ke NULL.
Tampilkan Nilai
Nilai HRESULT standar.
Keterangan
Mengharuskan komputer dilisensikan sepenuhnya. Jika lisensi komputer lengkap tidak ada, panggil CreateInstanceLic.
CComClassFactory2::CreateInstanceLic
Mirip dengan CreateInstance, kecuali yang CreateInstanceLic
memerlukan kunci lisensi.
STDMETHOD(CreateInstanceLic)(
IUnknown* pUnkOuter,
IUnknown* /* pUnkReserved
*/,
REFIID riid,
BSTR bstrKey,
void** ppvObject);
Parameter
pUnkOuter
[di] Jika objek sedang dibuat sebagai bagian dari agregat, maka pUnkOuter harus menjadi bagian luar yang tidak diketahui. Jika tidak, pUnkOuter harus NULL.
pUnkReserved
[in] Tidak digunakan. Harus NULL.
riid
[masuk] IID antarmuka yang diminta . Jika pUnkOuter non-NULL, riid harus IID_IUnknown
.
bstrKey
[di] Kunci lisensi run-time yang sebelumnya diperoleh dari panggilan ke RequestLicKey
. Kunci ini diperlukan untuk membuat objek.
ppvObject
[out] Penunjuk ke penunjuk antarmuka yang ditentukan oleh riid. Jika objek tidak mendukung antarmuka ini, ppvObject diatur ke NULL.
Tampilkan Nilai
Nilai HRESULT standar.
Keterangan
Anda dapat memperoleh kunci lisensi menggunakan RequestLicKey. Untuk membuat objek pada komputer yang tidak berlisensi, Anda harus memanggil CreateInstanceLic
.
CComClassFactory2::GetLicInfo
Mengisi struktur LICINFO dengan informasi yang menjelaskan kemampuan lisensi pabrik kelas.
STDMETHOD(GetLicInfo)(LICINFO* pLicInfo);
Parameter
pLicInfo
[out] Penunjuk LICINFO
ke struktur.
Tampilkan Nilai
Nilai HRESULT standar.
Keterangan
Anggota fRuntimeKeyAvail
struktur ini menunjukkan apakah, diberi kunci lisensi, pabrik kelas memungkinkan objek dibuat pada mesin yang tidak berlisensi. Anggota fLicVerified menunjukkan apakah lisensi komputer lengkap ada.
CComClassFactory2::LockServer
Kenaikan dan penurunan jumlah kunci modul dengan memanggil _Module::Lock
dan _Module::Unlock
, masing-masing.
STDMETHOD(LockServer)(BOOL fLock);
Parameter
Kawanan
[di] Jika TRUE, jumlah kunci akan bertambah; jika tidak, jumlah kunci diderementasi.
Tampilkan Nilai
Nilai HRESULT standar.
Keterangan
_Module
mengacu pada instans global CComModule atau kelas yang berasal darinya.
Panggilan LockServer
memungkinkan klien untuk memegang pabrik kelas sehingga beberapa objek dapat dibuat dengan cepat.
CComClassFactory2::RequestLicKey
Membuat dan mengembalikan kunci lisensi, asalkan fRuntimeKeyAvail
anggota struktur LICINFO ADALAH TRUE.
STDMETHOD(RequestLicKey)(DWORD dwReserved, BSTR* pbstrKey);
Parameter
dwReserved
[in] Tidak digunakan. Harus nol.
pbstrKey
[out] Penunjuk ke kunci lisensi.
Tampilkan Nilai
Nilai HRESULT standar.
Keterangan
Kunci lisensi diperlukan untuk memanggil CreateInstanceLic untuk membuat objek pada komputer tanpa lisensi. Jika fRuntimeKeyAvail
FALSE, maka objek hanya dapat dibuat pada komputer berlisensi penuh.
Panggil GetLicInfo untuk mengambil nilai fRuntimeKeyAvail
.
Baca juga
Kelas CComClassFactoryAutoThread
Kelas CComClassFactorySingleton
Kelas CComObjectRootEx
CComGlobalsThreadModel
Gambaran Umum Kelas
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk