Clase CComPtrBase
Esta clase proporciona una base para las clases de punteros inteligentes mediante rutinas de memoria basadas en COM.
Sintaxis
template <class T>
class CComPtrBase
Parámetros
T
El tipo de objeto al que hace referencia el puntero inteligente.
Miembros
Constructores públicos
Nombre | Descripción |
---|---|
CComPtrBase::~CComPtrBase |
El destructor . |
Métodos públicos
Nombre | Descripción |
---|---|
CComPtrBase::Advise |
Llame a este método para crear una conexión entre el punto de conexión de CComPtrBase y el receptor de un cliente. |
CComPtrBase::Attach |
Llame a este método para asumir la propiedad de un puntero existente. |
CComPtrBase::CoCreateInstance |
Llame a este método para crear un objeto de la clase asociada a un Id. especificado de clase o de programa. |
CComPtrBase::CopyTo |
Llame a este método para copiar el puntero CComPtrBase en otra variable de puntero. |
CComPtrBase::Detach |
Llame a este método para liberar la propiedad de un puntero. |
CComPtrBase::IsEqualObject |
Llame a este método para comprobar si el IUnknown especificado apunta al mismo objeto asociado al objeto CComPtrBase . |
CComPtrBase::QueryInterface |
Llame a este método para devolver un puntero a una interfaz especificada. |
CComPtrBase::Release |
Llame a este método para liberar la interfaz. |
CComPtrBase::SetSite |
Llame a este método para establecer el sitio del objeto CComPtrBase en el IUnknown del objeto primario. |
Operadores públicos
Nombre | Descripción |
---|---|
CComPtrBase::operator T* |
El operador de conversión. |
CComPtrBase::operator ! |
El operador NOT. |
CComPtrBase::operator & |
El operador de dirección de & . |
CComPtrBase::operator * |
El operador de puntero a * . |
CComPtrBase::operator < |
El operador Menor que. |
CComPtrBase::operator == |
El operador de igualdad. |
CComPtrBase::operator -> |
El operador de puntero a miembros. |
Miembros de datos públicos
Nombre | Descripción |
---|---|
CComPtrBase::p |
Variable de miembro de datos del puntero. |
Comentarios
Esta clase proporciona la base para otros punteros inteligentes que usan rutinas de administración de memoria COM, como CComQIPtr
y CComPtr
. Las clases derivadas agregan sus propios constructores y operadores, pero se basan en los métodos proporcionados por CComPtrBase
.
Requisitos
Encabezado: atlcomcli.h
CComPtrBase::Advise
Llame a este método para crear una conexión entre el punto de conexión de CComPtrBase
y el receptor de un cliente.
HRESULT Advise(
IUnknown* pUnk,
const IID& iid,
LPDWORD pdw) throw();
Parámetros
pUnk
Un puntero al IUnknown
del cliente.
iid
El GUID del punto de conexión. Normalmente, este GUID es el mismo que la interfaz saliente administrada por el punto de conexión.
pdw
Un puntero a la cookie que identifica de forma única la conexión.
Valor devuelto
Devuelve S_OK
si es correcto o un error HRESULT
en caso de error.
Comentarios
Para obtener más información, vea AtlAdvise
.
CComPtrBase::Attach
Llame a este método para asumir la propiedad de un puntero existente.
void Attach(T* p2) throw();
Parámetros
p2
El objeto CComPtrBase
asumirá la propiedad de este puntero.
Comentarios
Attach
llama a CComPtrBase::Release
en la variable miembro CComPtrBase::p
existente y, después, asigna p2
a CComPtrBase::p
. Cuando un objeto CComPtrBase
asume la propiedad de un puntero, llamará automáticamente a Release
en el puntero, lo que elimina el puntero y los datos asignados si el recuento de referencias del objeto va a 0.
CComPtrBase::~CComPtrBase
El destructor .
~CComPtrBase() throw();
Comentarios
Libera la interfaz a la que apunta CComPtrBase
.
CComPtrBase::CoCreateInstance
Llame a este método para crear un objeto de la clase asociada a un Id. especificado de clase o de programa.
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
Puntero a un ProgID, que se usa para recuperar el CLSID.
pUnkOuter
Si es NULL, indica que el objeto no se crea como parte de un agregado. Si no es NULL, este es un puntero a la interfaz IUnknown
del objeto agregado (la IUnknown
controladora).
dwClsContext
Contexto en el que se ejecutará el código que administra el objeto recién creado.
rclsid
CLSID asociado a los datos y al código que se usará para crear el objeto.
Valor devuelto
Devuelve S_OK
si la operación se realiza correctamente; de lo contrario, devuelve REGDB_E_CLASSNOTREG
, CLASS_E_NOAGGREGATION
, CO_E_CLASSSTRING
o E_NOINTERFACE
. Consulte CoCreateClassInstance
y CLSIDFromProgID
para obtener una descripción de estos errores.
Comentarios
Si se llama al primer formulario del método, CLSIDFromProgID
se usa para recuperar el CLSID. A continuación, ambos formularios llaman a CoCreateClassInstance
.
En las compilaciones de depuración, se producirá un error de aserción si CComPtrBase::p
no es igual a NULL.
CComPtrBase::CopyTo
Llame a este método para copiar el puntero CComPtrBase
en otra variable de puntero.
HRESULT CopyTo(T** ppT) throw();
Parámetros
ppT
Dirección de la variable que va a recibir el puntero CComPtrBase
.
Valor devuelto
Devuelve S_OK
si la operación se realiza correctamente; de lo contrario, devuelve E_POINTER
.
Comentarios
Copia el puntero CComPtrBase
a ppT
. El recuento de referencias de la variable miembro CComPtrBase::p
se incrementa.
Se devolverá un error HRESULT
si ppT
es igual a NULL. En las compilaciones de depuración, se producirá un error de aserción si ppT
es igual a NULL.
CComPtrBase::Detach
Llame a este método para liberar la propiedad de un puntero.
T* Detach() throw();
Valor devuelto
Devuelve una copia del puntero.
Comentarios
Libera la propiedad de un puntero, establece la variable miembro de datos de CComPtrBase::p
en NULL y devuelve una copia del puntero.
CComPtrBase::IsEqualObject
Llame a este método para comprobar si el IUnknown
especificado apunta al mismo objeto asociado al objeto CComPtrBase
.
bool IsEqualObject(IUnknown* pOther) throw();
Parámetros
pOther
IUnknown *
que se va comparar.
Valor devuelto
Devuelve “true” si los objetos son idénticos; en caso contrario, devuelve “false”.
CComPtrBase::operator !
El operador NOT.
bool operator!() const throw();
Valor devuelto
Devuelve “true” si el puntero CComHeapPtr
es igual a NULL; en caso contrario, devuelve “false”.
CComPtrBase::operator &
El operador de dirección de &
.
T** operator&() throw();
Valor devuelto
Devuelve la dirección del objeto al que apunta el objeto CComPtrBase
.
CComPtrBase::operator *
El operador de puntero a *
.
T& operator*() const throw();
Valor devuelto
Devuelve el valor de CComPtrBase::p
; es decir, un puntero al objeto al que hace referencia el objeto CComPtrBase
.
En las compilaciones de depuración, se producirá un error de aserción si CComPtrBase::p
no es igual a NULL.
CComPtrBase::operator ==
El operador de igualdad.
bool operator== (T* pT) const throw();
Parámetros
pT
Un puntero a un objeto.
Valor devuelto
Devuelve “true” si CComPtrBase
y pT
apuntan al mismo objeto; en caso contrario, devuelve “false”.
CComPtrBase::operator ->
Operador de puntero a miembro.
_NoAddRefReleaseOnCComPtr<T>* operator->() const throw();
Valor devuelto
Devuelve el valor de la variable miembro de datos de CComPtrBase::p
.
Comentarios
Use este operador para llamar a un método de una clase a la que apunta el objeto CComPtrBase
. En las compilaciones de depuración, se producirá un error de aserción si el miembro de datos de CComPtrBase
apunta a NULL.
CComPtrBase::operator <
El operador Menor que.
bool operator<(T* pT) const throw();
Parámetros
pT
Un puntero a un objeto.
Valor devuelto
Devuelve “true” si el puntero administrado por el objeto actual es menor que el puntero con el que se le compara.
CComPtrBase::operator T*
El operador de conversión.
operator T*() const throw();
Comentarios
Devuelve un puntero al tipo de datos de objeto definido en la plantilla de clase.
CComPtrBase::p
Variable de miembro de datos del puntero.
T* p;
Comentarios
Esta variable miembro contiene la información del puntero.
CComPtrBase::QueryInterface
Llame a este método para devolver un puntero a una interfaz especificada.
template <class Q> HRESULT QueryInterface(Q
** pp) const throw();
Parámetros
Q
El tipo de objeto cuyo puntero de interfaz es necesario.
pp
Dirección de la variable de salida que recibe el puntero de interfaz solicitado.
Valor devuelto
Devuelve S_OK
si la operación se realiza correctamente; de lo contrario, devuelve E_NOINTERFACE
.
Comentarios
Este método llama a IUnknown::QueryInterface
.
En las compilaciones de depuración, se producirá un error de aserción si pp
no es igual a NULL.
CComPtrBase::Release
Llame a este método para liberar la interfaz.
void Release() throw();
Comentarios
La interfaz se libera y CComPtrBase::p
se establece en NULL.
CComPtrBase::SetSite
Llame a este método para establecer el sitio del objeto CComPtrBase
en el IUnknown
del objeto primario.
HRESULT SetSite(IUnknown* punkParent) throw();
Parámetros
punkParent
Un puntero a la interfaz IUnknown
del elemento primario.
Valor devuelto
Devuelve S_OK
si es correcto o un error HRESULT
en caso de error.
Comentarios
Este método llama a AtlSetChildSite
.