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
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 值。
注解
如果模块派生自 CComAutoThreadModule,CreateInstance
会首先选择一个线程在关联的单元中创建对象。
CComClassFactoryAutoThread::LockServer
通过分别调用 _Module::Lock
和 _Module::Unlock
,递增和递减模块锁计数。
STDMETHODIMP LockServer(BOOL fLock);
参数
fLock
[in] 如果为 TRUE,则锁计数递增;否则,锁计数递减。
返回值
标准 HRESULT 值。
备注
使用 CComClassFactoryAutoThread
时,_Module
通常引用 CComAutoThreadModule 的全局实例。
调用 LockServer
允许客户端保留到类工厂,以便快速创建多个对象。
另请参阅
IClassFactory
CComClassFactory2 类
CComClassFactorySingleton 类
CComObjectRootEx 类
CComGlobalsThreadModel
类概述