La classe CComPtrBase
Cette classe fournit une base pour les classes de pointeur intelligentes à l’aide de routines de mémoire COM.
template <class T>
class CComPtrBase
T
Type d’objet à référencer par le pointeur intelligent.
Nom | Description |
---|---|
CComPtrBase::~CComPtrBase |
Destructeur. |
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. |
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. |
Nom | Description |
---|---|
CComPtrBase::p |
Variable membre de données du pointeur. |
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
.
En-tête : atlcomcli.h
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();
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.
Retourne S_OK
la réussite ou une erreur en cas d’échec HRESULT
.
Pour plus d’informations, consultez AtlAdvise
.
Appelez cette méthode pour prendre possession d’un pointeur existant.
void Attach(T* p2) throw();
p2
L’objet CComPtrBase
prend possession de ce pointeur.
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.
Destructeur.
~CComPtrBase() throw();
Libère l’interface pointée par CComPtrBase
.
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();
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.
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.
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.
Appelez cette méthode pour copier le CComPtrBase
pointeur vers une autre variable de pointeur.
HRESULT CopyTo(T** ppT) throw();
ppT
Adresse de la variable à recevoir le CComPtrBase
pointeur.
Retourne S_OK
en cas de réussite, E_POINTER
en cas d’échec.
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.
Appelez cette méthode pour libérer la propriété d’un pointeur.
T* Detach() throw();
Retourne une copie du pointeur.
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.
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();
pOther
IUnknown *
à comparer.
Retourne true si les objets sont identiques, false sinon.
Opérateur NOT.
bool operator!() const throw();
Retourne true si le CComHeapPtr
pointeur est égal à NULL, false sinon.
Opérateur d’adresse.&
T** operator&() throw();
Retourne l’adresse de l’objet pointé vers l’objet CComPtrBase
.
Opérateur pointeur vers *
.
T& operator*() const throw();
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.
Opérateur d’égalité.
bool operator== (T* pT) const throw();
pT
Pointeur vers un objet .
Retourne true si CComPtrBase
et pT
pointez vers le même objet, false sinon.
Opérateur pointeur à membre.
_NoAddRefReleaseOnCComPtr<T>* operator->() const throw();
Retourne la valeur de la CComPtrBase::p
variable membre de données.
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.
Opérateur inférieur à celui-ci.
bool operator<(T* pT) const throw();
pT
Pointeur vers un objet .
Retourne true si le pointeur géré par l’objet actuel est inférieur au pointeur auquel il est comparé.
Opérateur de cast.
operator T*() const throw();
Retourne un pointeur vers le type de données d’objet défini dans le modèle de classe.
Variable membre de données du pointeur.
T* p;
Cette variable membre contient les informations de pointeur.
Appelez cette méthode pour retourner un pointeur vers une interface spécifiée.
template <class Q> HRESULT QueryInterface(Q
** pp) const throw();
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é.
Retourne S_OK
une valeur réussie ou E_NOINTERFACE
en cas d’échec.
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.
Appelez cette méthode pour libérer l’interface.
void Release() throw();
L’interface est libérée et CComPtrBase::p
a la valeur NULL.
Appelez cette méthode pour définir le site de l’objet CComPtrBase
sur l’objet IUnknown
parent.
HRESULT SetSite(IUnknown* punkParent) throw();
punkParent
Pointeur vers l’interface IUnknown
du parent.
Retourne S_OK
la réussite ou une erreur en cas d’échec HRESULT
.
Cette méthode appelle AtlSetChildSite
.