La classe CComPtrBase
Cette classe fournit une base pour les classes de pointeur intelligentes à l’aide de routines de mémoire COM.
Syntaxe
template <class T>
class CComPtrBase
Paramètres
T
Type d’objet à référencer par le pointeur intelligent.
Membres
Constructeurs publics
Nom | Description |
---|---|
CComPtrBase::~CComPtrBase |
Destructeur. |
Méthodes publiques
Nom | Description |
---|---|
CComPtrBase::Advise |
Appelez cette méthode pour créer une connexion entre le CComPtrBase point de connexion du client et le récepteur d’un client. |
CComPtrBase::Attach |
Appelez cette méthode pour prendre possession d’un pointeur existant. |
CComPtrBase::CoCreateInstance |
Appelez cette méthode pour créer un objet de la classe associée à un ID de classe ou un ID de programme spécifié. |
CComPtrBase::CopyTo |
Appelez cette méthode pour copier le CComPtrBase pointeur vers une autre variable de pointeur. |
CComPtrBase::Detach |
Appelez cette méthode pour libérer la propriété d’un pointeur. |
CComPtrBase::IsEqualObject |
Appelez cette méthode pour vérifier si les points spécifiés IUnknown pointent vers le même objet associé à l’objet CComPtrBase . |
CComPtrBase::QueryInterface |
Appelez cette méthode pour retourner un pointeur vers une interface spécifiée. |
CComPtrBase::Release |
Appelez cette méthode pour libérer l’interface. |
CComPtrBase::SetSite |
Appelez cette méthode pour définir le site de l’objet CComPtrBase sur l’objet IUnknown parent. |
Opérateurs publics
Nom | Description |
---|---|
CComPtrBase::operator T* |
Opérateur de cast. |
CComPtrBase::operator ! |
Opérateur NOT. |
CComPtrBase::operator & |
Opérateur d’adresse.& |
CComPtrBase::operator * |
Opérateur pointeur vers * . |
CComPtrBase::operator < |
Opérateur inférieur à celui-ci. |
CComPtrBase::operator == |
Opérateur d’égalité. |
CComPtrBase::operator -> |
Opérateur pointeur vers membres. |
Membres de données publiques
Nom | Description |
---|---|
CComPtrBase::p |
Variable membre de données du pointeur. |
Notes
Cette classe fournit la base d’autres pointeurs intelligents qui utilisent des routines de gestion de la mémoire COM, telles que CComQIPtr
et CComPtr
. Les classes dérivées ajoutent leurs propres constructeurs et opérateurs, mais s’appuient sur les méthodes fournies par CComPtrBase
.
Spécifications
En-tête : atlcomcli.h
CComPtrBase::Advise
Appelez cette méthode pour créer une connexion entre le CComPtrBase
point de connexion du client et le récepteur d’un client.
HRESULT Advise(
IUnknown* pUnk,
const IID& iid,
LPDWORD pdw) throw();
Paramètres
pUnk
Pointeur vers le client IUnknown
.
iid
GUID du point de connexion. En règle générale, ce GUID est identique à l’interface sortante gérée par le point de connexion.
pdw
Pointeur vers le cookie qui identifie de manière unique la connexion.
Valeur retournée
Retourne S_OK
la réussite ou une erreur en cas d’échec HRESULT
.
Notes
Pour plus d’informations, consultez AtlAdvise
.
CComPtrBase::Attach
Appelez cette méthode pour prendre possession d’un pointeur existant.
void Attach(T* p2) throw();
Paramètres
p2
L’objet CComPtrBase
prend possession de ce pointeur.
Notes
Attach
appelle CComPtrBase::Release
la variable membre existante CComPtrBase::p
, puis l’affecte p2
à CComPtrBase::p
. Lorsqu’un CComPtrBase
objet prend possession d’un pointeur, il appelle Release
automatiquement le pointeur, ce qui supprime le pointeur et toutes les données allouées si le nombre de références sur l’objet passe à 0.
CComPtrBase::~CComPtrBase
Destructeur.
~CComPtrBase() throw();
Notes
Libère l’interface pointée par CComPtrBase
.
CComPtrBase::CoCreateInstance
Appelez cette méthode pour créer un objet de la classe associée à un ID de classe ou un ID de programme spécifié.
HRESULT CoCreateInstance(
LPCOLESTR szProgID,
LPUNKNOWN pUnkOuter = NULL,
DWORD dwClsContext = CLSCTX_ALL) throw();
HRESULT CoCreateInstance(
REFCLSID rclsid,
LPUNKNOWN pUnkOuter = NULL,
DWORD dwClsContext = CLSCTX_ALL) throw();
Paramètres
szProgID
Pointeur vers un ProgID, utilisé pour récupérer le CLSID.
pUnkOuter
Si la valeur EST NULL, indique que l’objet n’est pas créé dans le cadre d’un agrégat. Si la valeur n’est pas NULL, est un pointeur vers l’interface de IUnknown
l’objet d’agrégation (contrôle IUnknown
).
dwClsContext
Contexte dans lequel le code qui gère l’objet nouvellement créé s’exécute.
rclsid
CLSID associé aux données et au code qui seront utilisés pour créer l’objet.
Valeur retournée
Retourne S_OK
une valeur réussie, ou REGDB_E_CLASSNOTREG
, CLASS_E_NOAGGREGATION
, ou E_NOINTERFACE
CO_E_CLASSSTRING
en cas d’échec. Consultez CoCreateClassInstance
et CLSIDFromProgID
pour obtenir une description de ces erreurs.
Notes
Si la première forme de la méthode est appelée, CLSIDFromProgID
est utilisée pour récupérer le CLSID. Les deux formulaires appellent CoCreateClassInstance
ensuite .
Dans les builds de débogage, une erreur d’assertion se produit si CComPtrBase::p
elle n’est pas égale à NULL.
CComPtrBase::CopyTo
Appelez cette méthode pour copier le CComPtrBase
pointeur vers une autre variable de pointeur.
HRESULT CopyTo(T** ppT) throw();
Paramètres
ppT
Adresse de la variable à recevoir le CComPtrBase
pointeur.
Valeur retournée
Retourne S_OK
en cas de réussite, E_POINTER
en cas d’échec.
Notes
Copie le CComPtrBase
pointeur vers ppT
. Le nombre de références sur la CComPtrBase::p
variable membre est incrémenté.
Une erreur HRESULT
est retournée si ppT
elle est égale à NULL. Dans les builds de débogage, une erreur d’assertion se produit si ppT
elle est égale à NULL.
CComPtrBase::Detach
Appelez cette méthode pour libérer la propriété d’un pointeur.
T* Detach() throw();
Valeur retournée
Retourne une copie du pointeur.
Notes
Libère la propriété d’un pointeur, définit la CComPtrBase::p
variable membre de données sur NULL et retourne une copie du pointeur.
CComPtrBase::IsEqualObject
Appelez cette méthode pour vérifier si les points spécifiés IUnknown
pointent vers le même objet associé à l’objet CComPtrBase
.
bool IsEqualObject(IUnknown* pOther) throw();
Paramètres
pOther
IUnknown *
à comparer.
Valeur retournée
Retourne true si les objets sont identiques, false sinon.
CComPtrBase::operator !
Opérateur NOT.
bool operator!() const throw();
Valeur retournée
Retourne true si le CComHeapPtr
pointeur est égal à NULL, false sinon.
CComPtrBase::operator &
Opérateur d’adresse.&
T** operator&() throw();
Valeur retournée
Retourne l’adresse de l’objet pointé vers l’objet CComPtrBase
.
CComPtrBase::operator *
Opérateur pointeur vers *
.
T& operator*() const throw();
Valeur retournée
Retourne la valeur de CComPtrBase::p
; autrement dit, un pointeur vers l’objet référencé par l’objet CComPtrBase
.
Si le débogage génère des builds, une erreur d’assertion se produit si CComPtrBase::p
elle n’est pas égale à NULL.
CComPtrBase::operator ==
Opérateur d’égalité.
bool operator== (T* pT) const throw();
Paramètres
pT
Pointeur vers un objet .
Valeur retournée
Retourne true si CComPtrBase
et pT
pointez vers le même objet, false sinon.
CComPtrBase::operator ->
Opérateur pointeur à membre.
_NoAddRefReleaseOnCComPtr<T>* operator->() const throw();
Valeur retournée
Retourne la valeur de la CComPtrBase::p
variable membre de données.
Notes
Utilisez cet opérateur pour appeler une méthode dans une classe pointée par l’objet CComPtrBase
. Dans les builds de débogage, une défaillance d’assertion se produit si le CComPtrBase
membre de données pointe vers NULL.
CComPtrBase::operator <
Opérateur inférieur à celui-ci.
bool operator<(T* pT) const throw();
Paramètres
pT
Pointeur vers un objet .
Valeur retournée
Retourne true si le pointeur géré par l’objet actuel est inférieur au pointeur auquel il est comparé.
CComPtrBase::operator T*
Opérateur de cast.
operator T*() const throw();
Notes
Retourne un pointeur vers le type de données d’objet défini dans le modèle de classe.
CComPtrBase::p
Variable membre de données du pointeur.
T* p;
Notes
Cette variable membre contient les informations de pointeur.
CComPtrBase::QueryInterface
Appelez cette méthode pour retourner un pointeur vers une interface spécifiée.
template <class Q> HRESULT QueryInterface(Q
** pp) const throw();
Paramètres
Q
Type d’objet dont le pointeur d’interface est requis.
pp
Adresse de la variable de sortie qui reçoit le pointeur d’interface demandé.
Valeur retournée
Retourne S_OK
une valeur réussie ou E_NOINTERFACE
en cas d’échec.
Notes
Cette méthode appelle IUnknown::QueryInterface
.
Dans les builds de débogage, une erreur d’assertion se produit si pp
elle n’est pas égale à NULL.
CComPtrBase::Release
Appelez cette méthode pour libérer l’interface.
void Release() throw();
Notes
L’interface est libérée et CComPtrBase::p
a la valeur NULL.
CComPtrBase::SetSite
Appelez cette méthode pour définir le site de l’objet CComPtrBase
sur l’objet IUnknown
parent.
HRESULT SetSite(IUnknown* punkParent) throw();
Paramètres
punkParent
Pointeur vers l’interface IUnknown
du parent.
Valeur retournée
Retourne S_OK
la réussite ou une erreur en cas d’échec HRESULT
.
Notes
Cette méthode appelle AtlSetChildSite
.