CComAggObject 클래스

이 클래스는 집계된 개체에 대한 IUnknown 인터페이스를 구현합니다. 정의에 따라 집계된 개체는 외부 개체 내에 포함됩니다. 클래스는 CComAggObject 외부 클라이언트에서 직접 액세스할 수 있는 인터페이스를 노출한다는 점을 제외하고 CComObject 클래스와 비슷합니다.

구문

template<class contained>
class CComAggObject : public IUnknown,
   public CComObjectRootEx<contained::_ThreadModel::ThreadModelNoCS>

매개 변수

contained
CComObjectRoot 또는 CComObjectRootEx에서 파생된 클래스와 개체에서 지원하려는 다른 인터페이스에서 파생됩니다.

멤버

공용 생성자

속성 설명
CComAggObject::CComAggObject 생성자입니다.
CComAggObject::~CComAggObject 소멸자입니다.

공용 메서드

이름 설명
CComAggObject::AddRef 집계된 개체에 대한 참조 수를 증분합니다.
CComAggObject::CreateInstance 이 정적 함수를 사용하면 CoCreateInstance의 오버헤드 없이 새 CComAggObjectcontained>< 개체를 만들 수 있습니다.
CComAggObject::FinalConstruct 의 최종 초기화를 m_contained수행합니다.
CComAggObject::FinalRelease 의 최종 소멸을 수행합니다 m_contained.
CComAggObject::QueryInterface 요청된 인터페이스에 대한 포인터를 검색합니다.
CComAggObject::Release 집계된 개체의 참조 수를 줄입니다.

공용 데이터 멤버

이름 설명
CComAggObject::m_contained 외부 호출을 IUnknown 알 수 없는 대리자입니다.

설명

CComAggObject집계된 개체에 대해 IUnknown 을 구현합니다. CComAggObject에는 외부 개체의 IUnknown 인터페이스와는 별개인 자체 IUnknown 인터페이스가 있으며 기본 자체 참조 개수를 가져옵니다.

집계에 대한 자세한 내용은 ATL COM 개체의 기본 사항 문서를 참조하세요.

상속 계층 구조

CComObjectRootBase

CComObjectRootEx

IUnknown

CComAggObject

요구 사항

헤더: atlcom.h

CComAggObject::AddRef

집계된 개체에 대한 참조 수를 증분합니다.

STDMETHOD_(ULONG, AddRef)();

Return Value

진단 또는 테스트에 유용할 수 있는 값입니다.

CComAggObject::CComAggObject

생성자입니다.

CComAggObject(void* pv);

매개 변수

pv
[in] 외부 알 수 없습니다.

설명

CComContainedObjectM_contained 멤버를 초기화하고 모듈 잠금 수를 늘립니다.

소멸자가 모듈 잠금 수를 감소합니다.

CComAggObject::~CComAggObject

소멸자입니다.

~CComAggObject();

설명

할당된 모든 리소스를 해제하고 FinalRelease를 호출하며 모듈 잠금 수를 줄입니다.

CComAggObject::CreateInstance

이 정적 함수를 사용하면 CoCreateInstance의 오버헤드 없이 새 CComAggObjectcontained>< 개체를 만들 수 있습니다.

static HRESULT WINAPI CreateInstance(
    LPUNKNOWN pUnkOuter,
    CComAggObject<contained>** pp);

매개 변수

pp
[out] CComAggObject에 대한 포인터에 포함된 포인터입니다>.< 실패하면 CreateInstance pp가 NULL로 설정됩니다.

Return Value

표준 HRESULT 값입니다.

설명

반환된 개체의 참조 개수는 0이므로 즉시 호출 AddRef 한 다음 완료되면 개체 포인터에 대한 참조를 해제하는 데 사용합니다 Release .

개체에 직접 액세스할 필요가 없지만 오버헤드 CoCreateInstance없이 새 개체를 만들려면 CComCoClass::CreateInstance를 대신 사용합니다.

CComAggObject::FinalConstruct

개체 생성의 마지막 단계에서 호출되는 이 메서드는 m_contained 멤버에서 최종 초기화를 수행합니다.

HRESULT FinalConstruct();

Return Value

표준 HRESULT 값입니다.

CComAggObject::FinalRelease

개체를 파기하는 동안 호출된 이 메서드는 m_contained 멤버를 해제 합니다.

void FinalRelease();

CComAggObject::m_contained

클래스에서 파생된 CComContainedObject 개체입니다.

CComContainedObject<contained> m_contained;

매개 변수

contained
[in] CComObjectRoot 또는 CComObjectRootEx에서 파생된 클래스와 개체에서 지원하려는 다른 인터페이스에서 파생됩니다.

설명

모든 IUnknown 호출을 통해 m_contained 알 수 없는 외부에 위임됩니다.

CComAggObject::QueryInterface

요청된 인터페이스에 대한 포인터를 검색합니다.

STDMETHOD(QueryInterface)(REFIID iid, void** ppvObject);
template <class Q>
HRESULT STDMETHODCALLTYPE QueryInterface(Q** pp);

매개 변수

iid
[in] 요청되는 인터페이스의 식별자입니다.

ppvObject
[out] iid로 식별되는 인터페이스 포인터에 대한 포인터입니다. 개체가 이 인터페이스 를 지원하지 않으면 ppvObject 가 NULL로 설정됩니다.

pp
[out] 형식 Q으로 식별되는 인터페이스 포인터에 대한 포인터입니다. 개체가 이 인터페이스 를 지원하지 않는 경우 pp 는 NULL로 설정됩니다.

Return Value

표준 HRESULT 값입니다.

설명

요청된 인터페이스인 IUnknownQueryInterface 경우 집계된 개체 자체 IUnknown 에 대한 포인터를 반환하고 참조 수를 증분합니다. 그렇지 않으면 이 메서드는 멤버를 통해 인터페이스를 CComContainedObject 쿼리하고 m_contained.

CComAggObject::Release

집계된 개체의 참조 수를 줄입니다.

STDMETHOD_(ULONG, Release)();

Return Value

디버그 빌드에서 진단 또는 테스트에 유용할 수 있는 값을 반환합니다Release. 디버그가 아닌 빌드에서는 항상 0을 반환합니다 Release .

참고 항목

CComObject 클래스
CComPolyObject 클래스
DECLARE_AGGREGATABLE
DECLARE_ONLY_AGGREGATABLE
DECLARE_NOT_AGGREGATABLE
클래스 개요