CComClassFactoryAutoThread 类

此类实现 IClassFactory 接口,并允许在多个单元中创建对象。

重要

无法在 Windows 运行时中执行的应用程序中使用此类及其成员。

语法

class CComClassFactoryAutoThread
    : public IClassFactory,
      public CComObjectRootEx<CComGlobalsThreadModel>

成员

公共方法

名称 描述
CComClassFactoryAutoThread::CreateInstance 创建指定 CLSID 的对象。
CComClassFactoryAutoThread::LockServer 锁定内存中的类工厂。

注解

CComClassFactoryAutoThread 类似于 CComClassFactory,但允许在多个单元中创建对象。 若要利用此支持,请从 CComAutoThreadModule 派生 EXE 模块。

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

CComObjectRootEx

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,riid 必须是 IID_IUnknown

ppvObj
[out] 指向 riid 标识的接口指针的指针。 如果对象不支持此接口,则 ppvObj 设置为 NULL。

返回值

标准 HRESULT 值。

注解

如果模块派生自 CComAutoThreadModuleCreateInstance 会首先选择一个线程在关联的单元中创建对象。

CComClassFactoryAutoThread::LockServer

通过分别调用 _Module::Lock_Module::Unlock,递增和递减模块锁计数。

STDMETHODIMP LockServer(BOOL fLock);

参数

fLock
[in] 如果为 TRUE,则锁计数递增;否则,锁计数递减。

返回值

标准 HRESULT 值。

备注

使用 CComClassFactoryAutoThread 时,_Module 通常引用 CComAutoThreadModule 的全局实例。

调用 LockServer 允许客户端保留到类工厂,以便快速创建多个对象。

另请参阅

IClassFactory
CComClassFactory2 类
CComClassFactorySingleton 类
CComObjectRootEx 类
CComGlobalsThreadModel
类概述