Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
A Active Template Library (ATL) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.
Esta classe fornece uma base para classes inteligentes de ponteiros 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 apontador inteligente.
Membros
Construtores públicos
| Nome | Description |
|---|---|
CComPtrBase::~CComPtrBase |
O destruidor. |
Métodos públicos
| Nome | Description |
|---|---|
CComPtrBase::Advise |
Chame este método para criar uma ligação entre o CComPtrBaseponto de ligação de e o sumidouro de um cliente. |
CComPtrBase::Attach |
Chame este método para assumir a posse de um ponteiro existente. |
CComPtrBase::CoCreateInstance |
Chame este método para criar um objeto da classe associada a um ID de Classe ou ID de Programa especificado. |
CComPtrBase::CopyTo |
Chame este método para copiar o CComPtrBase ponteiro para outra variável apontador. |
CComPtrBase::Detach |
Chame este método para libertar a propriedade de um apontador. |
CComPtrBase::IsEqualObject |
Chame este método para verificar se o especificado IUnknown aponta para o mesmo objeto associado ao CComPtrBase objeto. |
CComPtrBase::QueryInterface |
Chame este método para devolver um ponteiro a uma interface especificada. |
CComPtrBase::Release |
Chama este método para libertar a interface. |
CComPtrBase::SetSite |
Chame este método para definir o sítio do CComPtrBase objeto para o IUnknown do objeto pai. |
Operadores públicos
| Nome | Description |
|---|---|
CComPtrBase::operator T* |
O operador do elenco. |
CComPtrBase::operator ! |
O operador do NOT. |
CComPtrBase::operator & |
O operador de endereço-of & . |
CComPtrBase::operator * |
O operador do apontador * . |
CComPtrBase::operator < |
O operador menos do que isso. |
CComPtrBase::operator == |
O operador de igualdade. |
CComPtrBase::operator -> |
O operador de apontar para membros. |
Membros de dados públicos
| Nome | Description |
|---|---|
CComPtrBase::p |
A variável membro dos dados do apontador. |
Observações
Esta classe fornece a base para outros apontadores inteligentes que utilizam rotinas de gestão de memória COM, como CComQIPtr e CComPtr. As classes derivadas acrescentam os seus próprios construtores e operadores, mas dependem dos métodos fornecidos por CComPtrBase.
Requerimentos
Cabeçalho: atlcomcli.h
CComPtrBase::Advise
Chame este método para criar uma ligação entre o CComPtrBaseponto de ligação de e o sumidouro de um cliente.
HRESULT Advise(
IUnknown* pUnk,
const IID& iid,
LPDWORD pdw) throw();
Parâmetros
pUnk
Um apontamento para o IUnknown.
iid
O GUID do ponto de ligação. Normalmente, este GUID é igual à interface de saída gerida pelo ponto de ligação.
pdw
Um apontador para o cookie que identifica de forma única a ligação.
Valor de retorno
Retornos S_OK do sucesso, ou um erro HRESULT em caso de falha.
Observações
Para obter mais informações, veja AtlAdvise.
CComPtrBase::Attach
Chame este método para assumir a posse de um ponteiro existente.
void Attach(T* p2) throw();
Parâmetros
p2
O CComPtrBase objeto assumirá a posse deste ponteiro.
Observações
Attach chama CComPtrBase::Release à variável membro existente CComPtrBase::p e depois atribui p2 a CComPtrBase::p. Quando um CComPtrBase objeto assume a posse de um ponteiro, chama Release automaticamente o ponteiro, o que elimina o ponteiro e quaisquer dados alocados se a contagem de referências do objeto chegar a 0.
CComPtrBase::~CComPtrBase
O destruidor.
~CComPtrBase() throw();
Observações
Liberta a interface apontada por CComPtrBase.
CComPtrBase::CoCreateInstance
Chame este método para criar um objeto da classe associada a um ID de Classe ou ID de Programa especificado.
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
Apontador para um ProgID, usado para recuperar o CLSID.
pUnkOuter
Se for NULL, indica que o objeto não está a ser criado como parte de um agregado. Se não-NULL, é um apontador para a interface do IUnknown objeto agregado (o controlador IUnknown).
dwClsContext
Contexto em que o código que gere o objeto recém-criado irá correr.
rclsid
CLSID associado aos dados e ao código que serão usados para criar o objeto.
Valor de retorno
Retornos S_OK do sucesso, ou REGDB_E_CLASSNOTREG, CLASS_E_NOAGGREGATION, CO_E_CLASSSTRING, ou E_NOINTERFACE do fracasso. Veja CoCreateClassInstance e CLSIDFromProgID para uma descrição destes erros.
Observações
Se a primeira forma do método for chamada, CLSIDFromProgID é usada para recuperar o CLSID. Ambas as formas chamam CoCreateClassInstanceentão .
Em builds de depuração, ocorrerá um erro de asserção se CComPtrBase::p não for igual a NULL.
CComPtrBase::CopyTo
Chame este método para copiar o CComPtrBase ponteiro para outra variável apontador.
HRESULT CopyTo(T** ppT) throw();
Parâmetros
ppT
Endereço da variável para receber o CComPtrBase apontador.
Valor de retorno
Retornos S_OK do sucesso, E_POINTER do fracasso.
Observações
Copia o CComPtrBase ponteiro para ppT. A contagem de referência na CComPtrBase::p variável membro é incrementada.
Um erro HRESULT será devolvido 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 este método para libertar a propriedade de um apontador.
T* Detach() throw();
Valor de retorno
Devolve uma cópia do ponteiro.
Observações
Liberta a propriedade de um ponteiro, define a CComPtrBase::p variável membro de dados para NULL e devolve uma cópia do ponteiro.
CComPtrBase::IsEqualObject
Chame este método para verificar se o especificado IUnknown aponta para o mesmo objeto associado ao CComPtrBase objeto.
bool IsEqualObject(IUnknown* pOther) throw();
Parâmetros
pOther
O IUnknown * para comparar.
Valor de retorno
Retorna verdadeiro se os objetos forem idênticos, falso caso contrário.
CComPtrBase::operator !
O operador do NOT.
bool operator!() const throw();
Valor de retorno
Retorna true se o CComHeapPtr ponteiro for igual a NULL, false caso contrário.
CComPtrBase::operator &
O operador de endereço-of & .
T** operator&() throw();
Valor de retorno
Devolve o endereço do objeto apontado pelo CComPtrBase objeto.
CComPtrBase::operator *
O operador do apontador * .
T& operator*() const throw();
Valor de retorno
Devolve o valor de CComPtrBase::p; ou seja, um ponteiro para o objeto referenciado pelo CComPtrBase objeto.
Se o debug for construído, 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 apontador para um objeto.
Valor de retorno
Retorna true se CComPtrBase e pT apontam para o mesmo objeto, false caso contrário.
CComPtrBase::operator ->
O operador apontador para membro.
_NoAddRefReleaseOnCComPtr<T>* operator->() const throw();
Valor de retorno
Devolve o valor da CComPtrBase::p variável membro de dados.
Observações
Use este operador para chamar um método numa classe apontada pelo CComPtrBase objeto. Em compilações de depuração, ocorrerá uma falha de asserção se o CComPtrBase membro de dados apontar para NULL.
CComPtrBase::operator <
O operador menos do que isso.
bool operator<(T* pT) const throw();
Parâmetros
pT
Um apontador para um objeto.
Valor de retorno
Retorna verdadeiro se o ponteiro gerido pelo objeto atual for menor do que o ponteiro com o qual está a ser comparado.
CComPtrBase::operator T*
O operador do elenco.
operator T*() const throw();
Observações
Devolve um ponteiro para o tipo de dado de objeto definido no template de classe.
CComPtrBase::p
A variável membro dos dados do apontador.
T* p;
Observações
Esta variável membro contém a informação do apontador.
CComPtrBase::QueryInterface
Chame este método para devolver um ponteiro a 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 de retorno
Retornos S_OK do sucesso, ou E_NOINTERFACE do fracasso.
Observações
Este 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
Chama este método para libertar a interface.
void Release() throw();
Observações
A interface é libertada e CComPtrBase::p está definida como NULL.
CComPtrBase::SetSite
Chame este método para definir o sítio do CComPtrBase objeto para o IUnknown do objeto pai.
HRESULT SetSite(IUnknown* punkParent) throw();
Parâmetros
punkParent
Um ponteiro para a IUnknown interface do pai.
Valor de retorno
Retornos S_OK do sucesso, ou um erro HRESULT em caso de falha.
Observações
Este método chama AtlSetChildSite.