CComClassFactory-Klasse
Diese Klasse implementiert die IClassFactory-Schnittstelle .
Syntax
class CComClassFactory
: public IClassFactory,
public CComObjectRootEx<CComGlobalsThreadModel>
Member
Öffentliche Methoden
Name | Beschreibung |
---|---|
CComClassFactory::CreateInstance | Erstellt ein Objekt der angegebenen CLSID. |
CComClassFactory::LockServer | Sperrt die Klassenfactory im Arbeitsspeicher. |
Hinweise
CComClassFactory
implementiert die IClassFactory-Schnittstelle , die Methoden zum Erstellen eines Objekts einer bestimmten CLSID enthält, sowie das Sperren der Klassenfactory im Arbeitsspeicher, damit neue Objekte schneller erstellt werden können. IClassFactory
muss für jede Klasse implementiert werden, die Sie in der Systemregistrierung registrieren und der Sie eine CLSID zuweisen.
ATL-Objekte erwerben normalerweise eine Klassenfactory, indem sie von CComCoClass abgeleitet wird. Diese Klasse enthält das Makro DECLARE_CLASSFACTORY, das als Standardklassenfactory deklariert wird CComClassFactory
. Um diese Standardeinstellung außer Kraft zu setzen, geben Sie eines der DECLARE_CLASSFACTORY
XXX-Makros in Der Klassendefinition an. Beispielsweise verwendet das DECLARE_CLASSFACTORY_EX-Makro die angegebene Klasse für die Klassenfactory:
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.
Die obige Klassendefinition gibt an, dass CMyClassFactory
als Standardklassenfactory des Objekts verwendet wird. CMyClassFactory
muss von CComClassFactory
und außer Kraft setzen CreateInstance
.
ATL stellt drei weitere Makros bereit, die eine Klassenfactory deklarieren:
DECLARE_CLASSFACTORY2 verwendet CComClassFactory2, wodurch die Erstellung über eine Lizenz gesteuert wird.
DECLARE_CLASSFACTORY_AUTO_THREAD verwendet CComClassFactoryAutoThread, das Objekte in mehreren Wohnungen erstellt.
DECLARE_CLASSFACTORY_SINGLETON verwendet CComClassFactorySingleton, das ein einzelnes CComObjectGlobal -Objekt erstellt.
Anforderungen
Kopfzeile: atlcom.h
CComClassFactory::CreateInstance
Erstellt ein Objekt der angegebenen CLSID und ruft einen Schnittstellenzeiger auf dieses Objekt ab.
STDMETHOD(CreateInstance)(LPUNKNOWN pUnkOuter, REFIID riid, void** ppvObj);
Parameter
pUnkOuter
[in] Wenn das Objekt als Teil eines Aggregats erstellt wird, muss "pUnkOuter " das äußere Unbekannte sein. Andernfalls muss "pUnkOuter" NULL sein.
riid
[in] Die IID der angeforderten -Schnittstelle. Wenn pUnkOuter ungleich NULL ist, muss riid sein IID_IUnknown
.
ppvObj
[out] Ein Zeiger auf den Schnittstellenzeiger, der von riid identifiziert wird. Wenn das Objekt diese Schnittstelle nicht unterstützt, wird ppvObj auf NULL festgelegt.
Rückgabewert
Ein HRESULT-Standardwert.
CComClassFactory::LockServer
Erhöht und erhöht die Anzahl der Modulsperren durch Aufrufen _Module::Lock
bzw _Module::Unlock
.
STDMETHOD(LockServer)(BOOL fLock);
Parameter
Herde
[in] Wenn WAHR, wird die Sperranzahl erhöht; andernfalls wird die Sperranzahl erhöht.
Rückgabewert
Ein HRESULT-Standardwert.
Hinweise
_Module
bezieht sich auf die globale Instanz von CComModule oder eine von ihr abgeleitete Klasse.
Durch Das Aufrufen LockServer
kann ein Client eine Klassenfactory speichern, sodass mehrere Objekte schnell erstellt werden können.
Siehe auch
CComObjectRootEx-Klasse
CComGlobalsThreadModel
Klassenübersicht