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_NOAGGREGATION
CO_E_CLASSSTRING
또는 REGDB_E_CLASSNOTREG
E_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
를 호출합니다.