Udostępnij za pośrednictwem


Klasa CComClassFactoryAutoThread

Ta klasa implementuje interfejs IClassFactory i umożliwia tworzenie obiektów w wielu mieszkaniach.

Ważne

Tej klasy i jej składowych nie można używać w aplikacjach wykonywanych w środowisko wykonawcze systemu Windows.

Składnia

class CComClassFactoryAutoThread
    : public IClassFactory,
      public CComObjectRootEx<CComGlobalsThreadModel>

Członkowie

Metody publiczne

Nazwa/nazwisko opis
CComClassFactoryAutoThread::CreateInstance Tworzy obiekt określonego identyfikatora CLSID.
CComClassFactoryAutoThread::LockServer Blokuje fabrykę klas w pamięci.

Uwagi

CComClassFactoryAutoThread jest podobny do CComClassFactory, ale umożliwia tworzenie obiektów w wielu mieszkaniach. Aby skorzystać z tej obsługi, utwórz moduł EXE z modułu CComAutoThreadModule.

Obiekty ATL zwykle uzyskują fabrykę klas, wyprowadzając je z klasy CComCoClass. Ta klasa zawiera DECLARE_CLASSFACTORY makra, które deklaruje CComClassFactory jako domyślną fabrykę klas. Aby użyć CComClassFactoryAutoThreadmetody , określ makro DECLARE_CLASSFACTORY_AUTO_THREAD w definicji klasy obiektu. Przykład:

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.

Hierarchia dziedziczenia

CComObjectRootBase

Ccomobjectrootex

IClassFactory

CComClassFactoryAutoThread

Wymagania

Nagłówek: atlcom.h

CComClassFactoryAutoThread::CreateInstance

Tworzy obiekt określonego identyfikatora CLSID i pobiera wskaźnik interfejsu do tego obiektu.

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

Parametry

pUnkOuter
[in] Jeśli obiekt jest tworzony w ramach agregacji, element pUnkOuter musi być zewnętrznym nieznanym obiektem. W przeciwnym razie pUnkOuter musi mieć wartość NULL.

Riid
[in] Identyfikator IID żądanego interfejsu. Jeśli parametr pUnkOuter ma wartość inną niż NULL, riid musi mieć wartość IID_IUnknown.

ppvObj
[out] Wskaźnik do wskaźnika interfejsu zidentyfikowany przez riid. Jeśli obiekt nie obsługuje tego interfejsu, parametr ppvObj ma wartość NULL.

Wartość zwracana

Standardowa wartość HRESULT.

Uwagi

Jeśli moduł pochodzi z modułu CComAutoThreadModule, CreateInstance najpierw wybiera wątek, aby utworzyć obiekt w skojarzonym mieszkaniu.

CComClassFactoryAutoThread::LockServer

Zwiększa i dekrementuje liczbę blokad modułu przez wywołanie _Module::Lock i _Module::Unlock, odpowiednio.

STDMETHODIMP LockServer(BOOL fLock);

Parametry

Stado
[in] Jeśli wartość TRUE, liczba blokad jest zwiększana; w przeciwnym razie liczba blokad jest dekrementowana.

Wartość zwracana

Standardowa wartość HRESULT.

Uwagi

W przypadku korzystania z klasy CComClassFactoryAutoThread_Module zazwyczaj odnosi się do globalnego wystąpienia modułu CComAutoThreadModule.

Wywołanie LockServer umożliwia klientowi trzymanie się fabryki klas, dzięki czemu można szybko utworzyć wiele obiektów.

Zobacz też

Iclassfactory
Klasa CComClassFactory2
Klasa CComClassFactorySingleton
Klasa CComObjectRootEx
Ccomglobalsthreadmodel
Omówienie klasy