Aracılığıyla paylaş


CComClassFactory Sınıfı

Bu sınıf IClassFactory arabirimini uygular.

Sözdizimi

class CComClassFactory
    : public IClassFactory,
      public CComObjectRootEx<CComGlobalsThreadModel>

Üyeler

Genel Yöntemler

Veri Akışı Adı Açıklama
CComClassFactory::CreateInstance Belirtilen CLSID nesnesini oluşturur.
CComClassFactory::LockServer Sınıf fabrikasını belleğe kilitler.

Açıklamalar

CComClassFactory, belirli bir CLSID nesnesini oluşturmaya ve yeni nesnelerin daha hızlı oluşturulmasına izin vermek için sınıf fabrikasını belleğe kilitlemeye yönelik yöntemleri içeren IClassFactory arabirimini uygular. IClassFactory sistem kayıt defterine kaydettiğiniz ve CLSID atadığınız her sınıf için uygulanmalıdır.

ATL nesneleri normalde CComCoClass'tan türetilerek bir sınıf fabrikası alır. Bu sınıf, varsayılan sınıf fabrikası olarak bildiren CComClassFactory makro DECLARE_CLASSFACTORY içerir. Bu varsayılanı geçersiz kılmak için sınıf tanımınızdaki XXX makrolarından birini DECLARE_CLASSFACTORYbelirtin. Örneğin, DECLARE_CLASSFACTORY_EX makro sınıf fabrikası için belirtilen sınıfı kullanır:

class ATL_NO_VTABLE CMyCustomClass :
   public CComObjectRootEx<CComSingleThreadModel>,
   public CComCoClass<CMyCustomClass, &CLSID_MyCustomClass>,
   public IDispatchImpl<IMyCustomClass, &IID_IMyCustomClass, &LIBID_NVC_ATL_COMLib, /*wMajor =*/ 1, /*wMinor =*/ 0>
{
public:
   DECLARE_CLASSFACTORY_EX(CMyClassFactory)

   // Remainder of class declaration omitted.

Yukarıdaki sınıf tanımı, CMyClassFactory nesnenin varsayılan sınıf fabrikası olarak bunun kullanılacağını belirtir. CMyClassFactory ,'den CComClassFactory türetilmelidir ve geçersiz kılmalıdır CreateInstance.

ATL, sınıf fabrikası bildiren üç makro daha sağlar:

  • DECLARE_CLASSFACTORY2 Bir lisans aracılığıyla oluşturmayı denetleyen CComClassFactory2 kullanır.

  • DECLARE_CLASSFACTORY_AUTO_THREAD Birden çok dairede nesne oluşturan CComClassFactoryAutoThread kullanır.

  • DECLARE_CLASSFACTORY_SINGLETON Tek bir CComObjectGlobal nesnesi oluşturan CComClassFactorySingleton kullanır.

Gereksinimler

Üst bilgi: atlcom.h

CComClassFactory::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.

CComClassFactory::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.

Ayrıca bkz.

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