Share via


CComClassFactoryAutoThread-klasse

Opmerking

De ATL (Active Template Library) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.

Met deze klasse wordt de IClassFactory-interface geïmplementeerd en kunnen objecten in meerdere appartementen worden gemaakt.

Belangrijk

Deze klasse en de bijbehorende leden kunnen niet worden gebruikt in toepassingen die worden uitgevoerd in Windows Runtime.

Syntaxis

class CComClassFactoryAutoThread
    : public IClassFactory,
      public CComObjectRootEx<CComGlobalsThreadModel>

Leden

Openbare methoden

Naam Description
CComClassFactoryAutoThread::CreateInstance Hiermee maakt u een object van de opgegeven CLSID.
CComClassFactoryAutoThread::LockServer Vergrendelt de klassefactory in het geheugen.

Opmerkingen

CComClassFactoryAutoThread is vergelijkbaar met CComClassFactory, maar maakt het mogelijk om objecten te maken in meerdere appartementen. Als u wilt profiteren van deze ondersteuning, moet u uw EXE-module afleiden van CComAutoThreadModule.

ATL-objecten verwerven normaal gesproken een klassefactory door afgeleid van CComCoClass. Deze klasse bevat de macro-DECLARE_CLASSFACTORY, die CComClassFactory declareert als de standaardklassefactory. Als u deze wilt gebruiken CComClassFactoryAutoThread, geeft u de DECLARE_CLASSFACTORY_AUTO_THREAD macro op in de klassedefinitie van uw object. Voorbeeld:

class ATL_NO_VTABLE CMyAutoClass :
   public CComObjectRootEx<CComMultiThreadModel>,
   public CComCoClass<CMyAutoClass, &CLSID_MyAutoClass>,
   public IMyAutoClass
{
public:
   DECLARE_CLASSFACTORY_AUTO_THREAD()

   // Remainder of class declaration omitted.

Overnamehiërarchie

CComObjectRootBase

CComObjectRootEx

IClassFactory

CComClassFactoryAutoThread

Requirements

Koptekst: atlcom.h

CComClassFactoryAutoThread::CreateInstance

Hiermee maakt u een object van de opgegeven CLSID en haalt u een interfaceaanwijzer naar dit object op.

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

Parameterwaarden

pUnkOuter
[in] Als het object wordt gemaakt als onderdeel van een statistische functie, moet pUnkOuter het buitenste onbekende object zijn. Anders moet pUnkOuter NULL zijn.

riid
[in] De IID van de aangevraagde interface. Als pUnkOuter niet null is, moet riid zijn IID_IUnknown.

ppvObj
[uit] Een aanwijzer naar de interfacepointer die wordt geïdentificeerd door riid. Als het object deze interface niet ondersteunt, is ppvObj ingesteld op NULL.

Retourwaarde

Een standaard HRESULT-waarde.

Opmerkingen

Als uw module is afgeleid van CComAutoThreadModule, CreateInstance selecteert u eerst een thread om het object in het bijbehorende appartement te maken.

CComClassFactoryAutoThread::LockServer

Hiermee wordt het aantal modulevergrendelingen verhoogd en verminderd door respectievelijk aanroepen _Module::Lock en _Module::Unlock, .

STDMETHODIMP LockServer(BOOL fLock);

Parameterwaarden

Kudde
[in] Indien WAAR, wordt het aantal vergrendelingen verhoogd; anders wordt het aantal vergrendelingen afgebroken.

Retourwaarde

Een standaard HRESULT-waarde.

Opmerkingen

Wanneer u dit gebruikt CComClassFactoryAutoThread, _Module verwijst dit meestal naar het globale exemplaar van CComAutoThreadModule.

Door aanroepen LockServer kan een client een klassefactory vasthouden, zodat meerdere objecten snel kunnen worden gemaakt.

Zie ook

IClassFactory
CComClassFactory2-klasse
Klasse CComClassFactorySingleton
CComObjectRootEx-klasse
CComGlobalsThreadModel
Overzicht van klassen