CComPtrBase 수업

이 클래스는 COM 기반 메모리 루틴을 사용하는 스마트 포인터 클래스에 대한 기초를 제공합니다.

구문

template <class T>
class CComPtrBase

매개 변수

T
스마트 포인터에서 참조할 개체 형식입니다.

멤버

Public 생성자

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

공용 메서드

이름 설명
CComPtrBase::Advise 이 메서드를 호출하여 '의 연결 지점과 클라이언트의 싱크 간에 CComPtrBase연결을 만듭니다.
CComPtrBase::Attach 이 메서드를 호출하여 기존 포인터의 소유권을 가져옵니다.
CComPtrBase::CoCreateInstance 이 메서드를 호출하여 지정된 클래스 ID 또는 프로그램 ID와 연결된 클래스의 개체를 만듭니다.
CComPtrBase::CopyTo 포인터를 다른 포인터 변수에 CComPtrBase 복사하려면 이 메서드를 호출합니다.
CComPtrBase::Detach 포인터의 소유권을 해제하려면 이 메서드를 호출합니다.
CComPtrBase::IsEqualObject 지정된 IUnknown 개체가 개체와 연결된 동일한 개체를 가리키는지 확인하려면 이 메서드를 CComPtrBase 호출합니다.
CComPtrBase::QueryInterface 지정된 인터페이스에 대한 포인터를 반환하려면 이 메서드를 호출합니다.
CComPtrBase::Release 이 메서드를 호출하여 인터페이스를 해제합니다.
CComPtrBase::SetSite 개체의 사이트를 부모 개체의 CComPtrBase 사이트로 설정하려면 이 메서드를 IUnknown 호출합니다.

Public 연산자

속성 설명
CComPtrBase::operator T* 캐스트 연산자입니다.
CComPtrBase::operator ! NOT 연산자입니다.
CComPtrBase::operator & 주소 & 연산자입니다.
CComPtrBase::operator * 포인터 대 * 연산자입니다.
CComPtrBase::operator < 보다 작음 연산자입니다.
CComPtrBase::operator == 같음 연산자입니다.
CComPtrBase::operator -> 멤버에 대한 포인터 연산자입니다.

공용 데이터 멤버

속성 설명
CComPtrBase::p 포인터 데이터 멤버 변수입니다.

설명

이 클래스는 COM 메모리 관리 루틴(예: 및 CComPtr)을 사용하는 다른 스마트 포인터의 기초를 CComQIPtr 제공합니다. 파생 클래스는 자체 생성자 및 연산자를 추가하지만 CComPtrBase.

요구 사항

헤더: atlcomcli.h

CComPtrBase::Advise

이 메서드를 호출하여 '의 연결 지점과 클라이언트의 싱크 간에 CComPtrBase연결을 만듭니다.

HRESULT Advise(
    IUnknown* pUnk,
    const IID& iid,
    LPDWORD pdw) throw();

매개 변수

pUnk
클라이언트에 대한 포인터입니다 IUnknown.

iid
연결점의 GUID입니다. 일반적으로 이 GUID는 연결 지점에서 관리하는 나가는 인터페이스와 동일합니다.

pdw
연결을 고유하게 식별하는 쿠키에 대한 포인터입니다.

반환 값

성공 또는 오류 오류를 HRESULT 반환 S_OK 합니다.

설명

자세한 내용은 AtlAdvise를 참조하세요.

CComPtrBase::Attach

이 메서드를 호출하여 기존 포인터의 소유권을 가져옵니다.

void Attach(T* p2) throw();

매개 변수

p2
개체는 CComPtrBase 이 포인터의 소유권을 맡습니다.

설명

Attach는 기존 멤버 변수를 호출 CComPtrBase::Release 한 다음 에 할당합니다 p2 CComPtrBase::p.CComPtrBase::p 개체가 CComPtrBase 포인터의 소유권을 가져오는 경우 포인터를 자동으로 호출 Release 하여 개체의 참조 수가 0으로 이동하면 포인터 및 할당된 데이터를 삭제합니다.

CComPtrBase::~CComPtrBase

소멸자입니다.

~CComPtrBase() throw();

설명

가 가리키는 인터페이스를 해제합니다 CComPtrBase.

CComPtrBase::CoCreateInstance

이 메서드를 호출하여 지정된 클래스 ID 또는 프로그램 ID와 연결된 클래스의 개체를 만듭니다.

HRESULT CoCreateInstance(
    LPCOLESTR szProgID,
    LPUNKNOWN pUnkOuter = NULL,
    DWORD dwClsContext = CLSCTX_ALL) throw();

HRESULT CoCreateInstance(
    REFCLSID rclsid,
    LPUNKNOWN pUnkOuter = NULL,
    DWORD dwClsContext = CLSCTX_ALL) throw();

매개 변수

szProgID
CLSID를 복구하는 데 사용되는 ProgID에 대한 포인터입니다.

pUnkOuter
NULL인 경우 개체가 집계의 일부로 생성되지 않음을 나타냅니다. NULL이 아닌 경우 집계 개체의 인터페이스(제어IUnknown)에 대한 포인터입니다IUnknown.

dwClsContext
새로 만든 개체를 관리하는 코드가 실행되는 컨텍스트입니다.

rclsid
개체를 만드는 데 사용할 데이터 및 코드와 연결된 CLSID입니다.

반환 값

성공 또는 , CLASS_E_NOAGGREGATIONCO_E_CLASSSTRING또는 REGDB_E_CLASSNOTREGE_NOINTERFACE 실패에 대해 반환 S_OK 합니다. 이러한 오류에 대한 설명은 참조 CoCreateClassInstance 하세요 CLSIDFromProgID .

설명

메서드의 첫 번째 형식이 호출 CLSIDFromProgID 되면 CLSID를 복구하는 데 사용됩니다. 그런 다음 두 양식 모두 호출 CoCreateClassInstance합니다.

디버그 빌드에서 NULL과 같지 않으면 CComPtrBase::p 어설션 오류가 발생합니다.

CComPtrBase::CopyTo

포인터를 다른 포인터 변수에 CComPtrBase 복사하려면 이 메서드를 호출합니다.

HRESULT CopyTo(T** ppT) throw();

매개 변수

ppT
포인터를 받을 변수의 주소입니다 CComPtrBase .

반환 값

성공하면 S_OK를 반환하고 실패하면 E_POINTER를 반환합니다.

설명

포인터를 .에 CComPtrBase 복사합니다 ppT. 멤버 변수에 CComPtrBase::p 대한 참조 수가 증가합니다.

NULL과 같으면 ppT 오류가 HRESULT 반환됩니다. 디버그 빌드에서 NULL과 같으면 ppT 어설션 오류가 발생합니다.

CComPtrBase::Detach

포인터의 소유권을 해제하려면 이 메서드를 호출합니다.

T* Detach() throw();

반환 값

포인터의 복사본을 반환합니다.

설명

포인터의 소유권을 해제하고, 데이터 멤버 변수를 NULL로 설정하고 CComPtrBase::p , 포인터의 복사본을 반환합니다.

CComPtrBase::IsEqualObject

지정된 IUnknown 개체가 개체와 연결된 동일한 개체를 가리키는지 확인하려면 이 메서드를 CComPtrBase 호출합니다.

bool IsEqualObject(IUnknown* pOther) throw();

매개 변수

pOther
비교할 IUnknown *입니다.

반환 값

개체가 동일하면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

CComPtrBase::operator !

NOT 연산자입니다.

bool operator!() const throw();

반환 값

포인터가 NULL과 CComHeapPtr 같으면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

CComPtrBase::operator &

주소 & 연산자입니다.

T** operator&() throw();

반환 값

개체가 가리키는 CComPtrBase 개체의 주소를 반환합니다.

CComPtrBase::operator *

포인터 대 * 연산자입니다.

T& operator*() const throw();

반환 값

개체에서 참조 CComPtrBase 하는 개체에 대한 포인터인 ;의 CComPtrBase::p값을 반환합니다.

디버그가 빌드되면 NULL과 같지 않으면 CComPtrBase::p 어설션 오류가 발생합니다.

CComPtrBase::operator ==

같음 연산자입니다.

bool operator== (T* pT) const throw();

매개 변수

pT
개체에 대한 포인터입니다.

반환 값

동일한 개체를 가리키면 CComPtrBase true를 반환하고 pT , 그렇지 않으면 false를 반환합니다.

CComPtrBase::operator ->

멤버에 대한 포인터 연산자입니다.

_NoAddRefReleaseOnCComPtr<T>* operator->() const throw();

반환 값

데이터 멤버 변수의 CComPtrBase::p 값을 반환합니다.

설명

이 연산자를 사용하여 개체가 가리키는 클래스의 메서드를 호출합니다 CComPtrBase . 디버그 빌드에서 데이터 멤버가 NULL을 가리키는 경우 CComPtrBase 어설션 오류가 발생합니다.

CComPtrBase::operator <

보다 작음 연산자입니다.

bool operator<(T* pT) const throw();

매개 변수

pT
개체에 대한 포인터입니다.

반환 값

현재 개체에서 관리되는 포인터가 비교되는 포인터보다 작으면 true를 반환합니다.

CComPtrBase::operator T*

캐스트 연산자입니다.

operator T*() const throw();

설명

클래스 템플릿에 정의된 개체 데이터 형식에 대한 포인터를 반환합니다.

CComPtrBase::p

포인터 데이터 멤버 변수입니다.

T* p;

설명

이 멤버 변수는 포인터 정보를 보유합니다.

CComPtrBase::QueryInterface

지정된 인터페이스에 대한 포인터를 반환하려면 이 메서드를 호출합니다.

template <class Q> HRESULT QueryInterface(Q
** pp) const throw();

매개 변수

Q
인터페이스 포인터가 필요한 개체 형식입니다.

pp
요청된 인터페이스 포인터를 받는 출력 변수의 주소입니다.

반환 값

성공 또는 E_NOINTERFACE 실패에 대해 반환 S_OK 합니다.

설명

이 메서드는 IUnknown::QueryInterface를 호출합니다.

디버그 빌드에서 NULL과 같지 않으면 pp 어설션 오류가 발생합니다.

CComPtrBase::Release

이 메서드를 호출하여 인터페이스를 해제합니다.

void Release() throw();

설명

인터페이스가 해제되고 CComPtrBase::p NULL로 설정됩니다.

CComPtrBase::SetSite

개체의 사이트를 부모 개체의 CComPtrBase 사이트로 설정하려면 이 메서드를 IUnknown 호출합니다.

HRESULT SetSite(IUnknown* punkParent) throw();

매개 변수

punkParent
부모의 인터페이스에 IUnknown 대한 포인터입니다.

반환 값

성공 또는 오류 오류를 HRESULT 반환 S_OK 합니다.

설명

이 메서드는 AtlSetChildSite를 호출합니다.

참고 항목

클래스 개요