Partager via


CComClassFactoryAutoThread, classe

Cette classe implémente l’interface IClassFactory et permet de créer des objets dans plusieurs appartements.

Important

Cette classe et ses membres ne peuvent pas être utilisés dans les applications qui s’exécutent dans Windows Runtime.

Syntaxe

class CComClassFactoryAutoThread
    : public IClassFactory,
      public CComObjectRootEx<CComGlobalsThreadModel>

Membres

Méthodes publiques

Nom Description
CComClassFactoryAutoThread ::CreateInstance Crée un objet du CLSID spécifié.
CComClassFactoryAutoThread ::LockServer Verrouille la fabrique de classe en mémoire.

Notes

CComClassFactoryAutoThread est similaire à CComClassFactory, mais permet de créer des objets dans plusieurs appartements. Pour tirer parti de cette prise en charge, dérivez votre module EXE de CComAutoThreadModule.

Les objets ATL acquièrent normalement une fabrique de classes en dérivant de CComCoClass. Cette classe inclut la macro DECLARE_CLASSFACTORY, qui déclare CComClassFactory comme fabrique de classe par défaut. Pour utiliser CComClassFactoryAutoThread, spécifiez la macro DECLARE_CLASSFACTORY_AUTO_THREAD dans la définition de classe de votre objet. Par exemple :

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.

Hiérarchie d'héritage

CComObjectRootBase

CComObjectRootEx

IClassFactory

CComClassFactoryAutoThread

Spécifications

En-tête : atlcom.h

CComClassFactoryAutoThread ::CreateInstance

Crée un objet du CLSID spécifié et récupère un pointeur d’interface vers cet objet.

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

Paramètres

pUnkOuter
[in] Si l’objet est créé dans le cadre d’un agrégat, pUnkOuter doit être l’inconnu externe. Sinon, pUnkOuter doit être NULL.

riid
[in] IID de l’interface demandée. Si pUnkOuter n’est pas NULL, riid doit être IID_IUnknown.

ppvObj
[out] Pointeur vers le pointeur d’interface identifié par riid. Si l’objet ne prend pas en charge cette interface, ppvObj a la valeur NULL.

Valeur de retour

Valeur HRESULT standard.

Notes

Si votre module dérive de CComAutoThreadModule, CreateInstance sélectionnez d’abord un thread pour créer l’objet dans l’appartement associé.

CComClassFactoryAutoThread ::LockServer

Incrémente et décrémente le nombre de verrous du module en appelant _Module::Lock et _Module::Unlock, respectivement.

STDMETHODIMP LockServer(BOOL fLock);

Paramètres

troupeau
[in] Si la valeur est TRUE, le nombre de verrous est incrémenté ; sinon, le nombre de verrous est décrémenté.

Valeur de retour

Valeur HRESULT standard.

Notes

Lors de l’utilisation CComClassFactoryAutoThread, _Module fait généralement référence à l’instance globale de CComAutoThreadModule.

L’appel LockServer permet à un client de conserver une fabrique de classes afin que plusieurs objets puissent être créés rapidement.

Voir aussi

IClassFactory
CComClassFactory2, classe
CComClassFactorySingleton, classe
CComObjectRootEx, classe
CComGlobalsThreadModel
Vue d’ensemble de la classe