CComClassFactory 클래스
이 클래스는 IClassFactory 인터페이스를 구현합니다.
구문
class CComClassFactory
: public IClassFactory,
public CComObjectRootEx<CComGlobalsThreadModel>
멤버
공용 메서드
이름 | 설명 |
---|---|
CComClassFactory::CreateInstance | 지정된 CLSID의 개체를 만듭니다. |
CComClassFactory::LockServer | 클래스 팩터리를 메모리에 잠급 수 있습니다. |
설명
CComClassFactory
는 특정 CLSID의 개체를 만드는 방법과 새 개체를 더 빨리 만들 수 있도록 클래스 팩터리를 메모리에 잠그는 메서드를 포함하는 IClassFactory 인터페이스를 구현합니다. IClassFactory
는 시스템 레지스트리에 등록하고 CLSID를 할당하는 모든 클래스에 대해 구현되어야 합니다.
ATL 개체는 일반적으로 CComCoClass에서 파생하여 클래스 팩터리를 획득합니다. 이 클래스에는 CComClassFactory
를 기본 클래스 팩터리로 선언하는 매크로 DECLARE_CLASSFACTORY 포함되어 있습니다. 이 기본값을 재정의하려면 클래스 정의에서 DECLARE_CLASSFACTORY
XXX 매크로 중 하나를 지정합니다. 예를 들어 DECLARE_CLASSFACTORY_EX 매크로는 클래스 팩터리에 대해 지정된 클래스를 사용합니다.
class ATL_NO_VTABLE CMyCustomClass :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CMyCustomClass, &CLSID_MyCustomClass>,
public IDispatchImpl<IMyCustomClass, &IID_IMyCustomClass, &LIBID_NVC_ATL_COMLib, /*wMajor =*/ 1, /*wMinor =*/ 0>
{
public:
DECLARE_CLASSFACTORY_EX(CMyClassFactory)
// Remainder of class declaration omitted.
위의 클래스 정의는 개체의 기본 클래스 팩터리로 사용할 것을 지정 CMyClassFactory
합니다. CMyClassFactory
에서 파생되고 재정CreateInstance
의 CComClassFactory
되어야 합니다.
ATL은 클래스 팩터리를 선언하는 세 가지 다른 매크로를 제공합니다.
DECLARE_CLASSFACTORY2 라이선스를 통해 생성을 제어하는 CComClassFactory2를 사용합니다.
DECLARE_CLASSFACTORY_AUTO_THREAD 여러 아파트에 개체를 만드는 CComClassFactoryAutoThread를 사용합니다.
DECLARE_CLASSFACTORY_SINGLETON 단일 CComObjectGlobal 개체를 생성하는 CComClassFactorySingleton을 사용합니다.
요구 사항
헤더: atlcom.h
CComClassFactory::CreateInstance
지정된 CLSID의 개체를 만들고 이 개체에 대한 인터페이스 포인터를 검색합니다.
STDMETHOD(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로 설정됩니다.
Return Value
표준 HRESULT 값입니다.
CComClassFactory::LockServer
각각 호출 _Module::Lock
하여 모듈 잠금 수를 증가 및 _Module::Unlock
감소합니다.
STDMETHOD(LockServer)(BOOL fLock);
매개 변수
fLock
[in] TRUE이면 잠금 수가 증가합니다. 그렇지 않으면 잠금 수가 감소합니다.
Return Value
표준 HRESULT 값입니다.
설명
_Module
는 CComModule의 전역 인스턴스 또는 CComModule 에서 파생된 클래스를 나타냅니다.
호출 LockServer
을 사용하면 여러 개체를 신속하게 만들 수 있도록 클라이언트가 클래스 팩터리를 유지할 수 있습니다.