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 CComPtrBasepoint 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 CComPtrBasepoint 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_CLASSSTRINGen 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 CoCreateClassInstanceensuite .

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.

Voir aussi

Vue d’ensemble de la classe