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>
Elementy członkowskie
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ć CComClassFactoryAutoThread
metody , określ makro DECLARE_CLASSFACTORY_AUTO_THREAD w definicji klasy obiektu. Na 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
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