Класс CComClassFactoryAutoThread
Этот класс реализует интерфейс IClassFactory и позволяет создавать объекты в нескольких квартирах.
Внимание
Этот класс и его члены нельзя использовать в приложениях, выполняемых в среде выполнения Windows.
Синтаксис
class CComClassFactoryAutoThread
: public IClassFactory,
public CComObjectRootEx<CComGlobalsThreadModel>
Участники
Открытые методы
Имя | Описание |
---|---|
CComClassFactoryAutoThread::CreateInstance | Создает объект указанного CLSID. |
CComClassFactoryAutoThread::LockServer | Блокирует фабрику классов в памяти. |
Замечания
CComClassFactoryAutoThread
аналогичен CComClassFactory, но позволяет создавать объекты в нескольких квартирах. Чтобы воспользоваться этой поддержкой, наследуйте модуль EXE из CComAutoThreadModule.
Объекты ATL обычно получают фабрику классов, исходя из CComCoClass. Этот класс включает макрос DECLARE_CLASSFACTORY, который объявляет CComClassFactory в качестве фабрики классов по умолчанию. Чтобы использовать CComClassFactoryAutoThread
, укажите макрос DECLARE_CLASSFACTORY_AUTO_THREAD в определении класса объекта. Например:
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.
Иерархия наследования
CComObjectRootBase
IClassFactory
CComClassFactoryAutoThread
Требования
Заголовок: atlcom.h
CComClassFactoryAutoThread::CreateInstance
Создает объект указанного CLSID и извлекает указатель интерфейса на этот объект.
STDMETHODIMP CreateInstance(
LPUNKNOWN pUnkOuter,
REFIID riid,
void** ppvObj);
Параметры
pUnkOuter
[in] Если объект создается в составе агрегата, pUnkOuter должен быть внешним неизвестным. В противном случае pUnkOuter должен иметь значение NULL.
riid
[in] IID запрошенного интерфейса. Если pUnkOuter не имеет значения NULL, необходимо выполнить IID_IUnknown
riid.
ppvObj
[out] Указатель на указатель интерфейса, определяемый идентификатором riid. Если объект не поддерживает этот интерфейс, ppvObj имеет значение NULL.
Возвращаемое значение
Стандартное значение HRESULT.
Замечания
Если модуль является производным от CComAutoThreadModule, CreateInstance
сначала выбирает поток для создания объекта в связанной квартире.
CComClassFactoryAutoThread::LockServer
Увеличивает и уменьшает количество блокировок модуля путем вызова _Module::Lock
и _Module::Unlock
соответственно.
STDMETHODIMP LockServer(BOOL fLock);
Параметры
стадо
[in] Если значение TRUE, число блокировок увеличивается; в противном случае число блокировок уменьшается.
Возвращаемое значение
Стандартное значение HRESULT.
Замечания
При использовании CComClassFactoryAutoThread
_Module
обычно относится к глобальному экземпляру CComAutoThreadModule.
Вызов LockServer
позволяет клиенту удерживаться на фабрике классов, чтобы можно было быстро создать несколько объектов.
См. также
IClassFactory
Класс CComClassFactory2
Класс CComClassFactorySingleton
Класс CComObjectRootEx
CComGlobalsThreadModel
Общие сведения о классе