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
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