Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La classe
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.