Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Classe
Essa classe fornece uma base para classes de ponteiro inteligente usando rotinas de memória baseadas em COM.
Sintaxe
template <class T>
class CComPtrBase
Parâmetros
T
O tipo de objeto a ser referenciado pelo ponteiro inteligente.
Membros
Construtores públicos
| Nome | Descrição |
|---|---|
CComPtrBase::~CComPtrBase |
O destruidor. |
Métodos públicos
| Nome | Descrição |
|---|---|
CComPtrBase::Advise |
Chame esse método para criar uma conexão entre o ponto de conexão de CComPtrBase e o coletor de um cliente. |
CComPtrBase::Attach |
Chame esse método para assumir a propriedade de um ponteiro existente. |
CComPtrBase::CoCreateInstance |
Chame esse método para criar um objeto da classe associada a uma ID de classe ou ID de programa especificada. |
CComPtrBase::CopyTo |
Chame esse método para copiar o ponteiro CComPtrBase para outra variável de ponteiro. |
CComPtrBase::Detach |
Chame esse método para liberar a propriedade de um ponteiro. |
CComPtrBase::IsEqualObject |
Chame esse método para verificar se o IUnknown especificado aponta para o mesmo objeto associado ao objeto CComPtrBase. |
CComPtrBase::QueryInterface |
Chame esse método para retornar um ponteiro para uma interface especificada. |
CComPtrBase::Release |
Chame esse método para liberar a interface. |
CComPtrBase::SetSite |
Chame esse método para definir o site do objeto CComPtrBasepara o IUnknown do objeto pai. |
Operadores públicos
| Nome | Descrição |
|---|---|
CComPtrBase::operator T* |
O operador de conversão. |
CComPtrBase::operator ! |
O operador NOT. |
CComPtrBase::operator & |
O operador address-of &. |
CComPtrBase::operator * |
O operador pointer-to *. |
CComPtrBase::operator < |
O operador less-than. |
CComPtrBase::operator == |
O operador de igualdade. |
CComPtrBase::operator -> |
O operador ponteiros para membro. |
Membros de dados públicos
| Nome | Descrição |
|---|---|
CComPtrBase::p |
A variável de membro de dados de ponteiro. |
Comentários
Essa classe fornece a base para outros ponteiros inteligentes que usam rotinas de gerenciamento de memória COM, como CComQIPtr e CComPtr. As classes derivadas adicionam os seus próprios construtores e operadores, mas contam com os métodos fornecidos por CComPtrBase.
Requisitos
Cabeçalho: atlcomcli.h
CComPtrBase::Advise
Chame esse método para criar uma conexão entre o ponto de conexão de CComPtrBase e o coletor de um cliente.
HRESULT Advise(
IUnknown* pUnk,
const IID& iid,
LPDWORD pdw) throw();
Parâmetros
pUnk
Um ponteiro para IUnknown do cliente.
iid
O GUID do ponto de conexão. Normalmente, esse GUID é igual à interface de saída gerenciada pelo ponto de conexão.
pdw
Um ponteiro para o cookie que identifica exclusivamente a conexão.
Valor retornado
Retorna S_OK se houver êxito ou um erro HRESULT se houver falha.
Comentários
Para obter mais informações, consulte AtlAdvise.
CComPtrBase::Attach
Chame esse método para assumir a propriedade de um ponteiro existente.
void Attach(T* p2) throw();
Parâmetros
p2
O objeto CComPtrBase assumirá a propriedade desse ponteiro.
Comentários
Attach chama CComPtrBase::Release na variável de membro CComPtrBase::p existente e atribui p2 a CComPtrBase::p. Quando um objeto CComPtrBase assumir a propriedade de um ponteiro, ele chamará automaticamente Release no ponteiro, que excluirá o ponteiro e os dados alocados se a contagem de referência no objeto for 0.
CComPtrBase::~CComPtrBase
O destruidor.
~CComPtrBase() throw();
Comentários
Libera a interface apontada por CComPtrBase.
CComPtrBase::CoCreateInstance
Chame esse método para criar um objeto da classe associada a uma ID de classe ou ID de programa especificada.
HRESULT CoCreateInstance(
LPCOLESTR szProgID,
LPUNKNOWN pUnkOuter = NULL,
DWORD dwClsContext = CLSCTX_ALL) throw();
HRESULT CoCreateInstance(
REFCLSID rclsid,
LPUNKNOWN pUnkOuter = NULL,
DWORD dwClsContext = CLSCTX_ALL) throw();
Parâmetros
szProgID
Ponteiro para um ProgID, utilizado para recuperar o CLSID.
pUnkOuter
Se for NULL, indica que o objeto não está sendo criado como parte de uma agregação. Se for não NULL, é um ponteiro para a interface IUnknown do objeto agregado (o IUnknown de controle).
dwClsContext
Contexto em que o código que gerencia o objeto recém-criado executará.
rclsid
CLSID associado aos dados e ao código que serão usados para criar o objeto.
Valor retornado
Retornará S_OK se for bem-sucedido ou REGDB_E_CLASSNOTREG, CLASS_E_NOAGGREGATION, CO_E_CLASSSTRING ou E_NOINTERFACE em caso de falha. Consulte CoCreateClassInstance e CLSIDFromProgID para obter uma descrição desses erros.
Comentários
Se o primeiro formulário do método for chamado, CLSIDFromProgID será usado para recuperar o CLSID. Ambos os formulários chamam CoCreateClassInstance.
Em builds de depuração, ocorrerá um erro de asserção se CComPtrBase::p não for igual a NULL.
CComPtrBase::CopyTo
Chame esse método para copiar o ponteiro CComPtrBase para outra variável de ponteiro.
HRESULT CopyTo(T** ppT) throw();
Parâmetros
ppT
Endereço da variável para receber o ponteiro CComPtrBase.
Valor retornado
Retornará S_OK se for bem-sucedido, E_POINTER em caso de falha.
Comentários
Copia o ponteiro CComPtrBase para ppT. A contagem de referência na variável de membro CComPtrBase::p é incrementada.
Um erro HRESULT será retornado se ppT for igual a NULL. Em builds de depuração, ocorrerá um erro de asserção se ppT for igual a NULL.
CComPtrBase::Detach
Chame esse método para liberar a propriedade de um ponteiro.
T* Detach() throw();
Valor retornado
Retorna uma cópia do ponteiro.
Comentários
Libera a propriedade de um ponteiro, define a variável de membro de dado CComPtrBase::p e retorna uma cópia do ponteiro.
CComPtrBase::IsEqualObject
Chame esse método para verificar se o IUnknown especificado aponta para o mesmo objeto associado ao objeto CComPtrBase.
bool IsEqualObject(IUnknown* pOther) throw();
Parâmetros
pOther
O IUnknown * a ser comparado.
Valor retornado
Retornará true se os objetos forem idênticos, caso contrário, retornará false.
CComPtrBase::operator !
O operador NOT.
bool operator!() const throw();
Valor retornado
Retornará true se o ponteiro CComHeapPtr for igual a NULL, caso contrário, retornará false.
CComPtrBase::operator &
O operador address-of &.
T** operator&() throw();
Valor retornado
Retorna o endereço do objeto apontado pelo objeto CComPtrBase.
CComPtrBase::operator *
O operador pointer-to *.
T& operator*() const throw();
Valor retornado
Retorna o valor de CComPtrBase::p, ou seja, um ponteiro para o objeto referenciado pelo objeto CComPtrBase.
Se builds de depuração, ocorrerá um erro de asserção se CComPtrBase::p não for igual a NULL.
CComPtrBase::operator ==
O operador de igualdade.
bool operator== (T* pT) const throw();
Parâmetros
pT
Um ponteiro para um objeto.
Valor retornado
Retornará true se CComPtrBase e pT apontarem para o mesmo objeto, caso contrário, retornará false.
CComPtrBase::operator ->
O operador ponteiro para membro.
_NoAddRefReleaseOnCComPtr<T>* operator->() const throw();
Valor retornado
Retorna o valor da variável de membro de dados CComPtrBase::p.
Comentários
Use esse operador para chamar um método em uma classe apontada pelo objeto CComPtrBase. Em builds de depuração, ocorrerá uma falha de asserção se o membro de dados CComPtrBase apontar para NULL.
CComPtrBase::operator <
O operador less-than.
bool operator<(T* pT) const throw();
Parâmetros
pT
Um ponteiro para um objeto.
Valor retornado
Retornará true se o ponteiro gerenciado pelo objeto atual for menor que o ponteiro com o qual está sendo comparado.
CComPtrBase::operator T*
O operador de conversão.
operator T*() const throw();
Comentários
Retorna um ponteiro para o tipo de dados de objeto definido no modelo de classe.
CComPtrBase::p
A variável de membro de dados de ponteiro.
T* p;
Comentários
Essa variável de membro contém as informações do ponteiro.
CComPtrBase::QueryInterface
Chame esse método para retornar um ponteiro para uma interface especificada.
template <class Q> HRESULT QueryInterface(Q
** pp) const throw();
Parâmetros
Q
O tipo de objeto cujo ponteiro de interface é necessário.
pp
Endereço da variável de saída que recebe o ponteiro de interface solicitado.
Valor retornado
Retornará S_OK se for bem-sucedido ou E_NOINTERFACE em caso de falha.
Comentários
Esse método chama IUnknown::QueryInterface.
Em builds de depuração, ocorrerá um erro de asserção se pp não for igual a NULL.
CComPtrBase::Release
Chame esse método para liberar a interface.
void Release() throw();
Comentários
A interface é liberada e CComPtrBase::p é definido como NULL.
CComPtrBase::SetSite
Chame esse método para definir o site do objeto CComPtrBasepara o IUnknown do objeto pai.
HRESULT SetSite(IUnknown* punkParent) throw();
Parâmetros
punkParent
Um ponteiro para a interface IUnknown do pai.
Valor retornado
Retorna S_OK se houver êxito ou um erro HRESULT se houver falha.
Comentários
Esse método chama AtlSetChildSite.