Condividi tramite


Classe CComPtrBase

Questa classe fornisce una base per le classi puntatore intelligenti che usano routine di memoria basate su COM.

Sintassi

template <class T>
class CComPtrBase

Parametri

T
Tipo di oggetto a cui fare riferimento il puntatore intelligente.

Membri

Costruttori pubblici

Nome Descrizione
CComPtrBase::~CComPtrBase Distruttore.

Metodi pubblici

Nome Descrizione
CComPtrBase::Advise Chiamare questo metodo per creare una connessione tra il CComPtrBasepunto di connessione del e il sink di un client.
CComPtrBase::Attach Chiamare questo metodo per acquisire la proprietà di un puntatore esistente.
CComPtrBase::CoCreateInstance Chiamare questo metodo per creare un oggetto della classe associata a un ID classe o a un ID programma specificato.
CComPtrBase::CopyTo Chiamare questo metodo per copiare il CComPtrBase puntatore in un'altra variabile del puntatore.
CComPtrBase::Detach Chiamare questo metodo per rilasciare la proprietà di un puntatore.
CComPtrBase::IsEqualObject Chiamare questo metodo per verificare se i punti specificati IUnknown allo stesso oggetto associato all'oggetto CComPtrBase .
CComPtrBase::QueryInterface Chiamare questo metodo per restituire un puntatore a un'interfaccia specificata.
CComPtrBase::Release Chiamare questo metodo per rilasciare l'interfaccia.
CComPtrBase::SetSite Chiamare questo metodo per impostare il sito dell'oggetto CComPtrBase sull'oggetto IUnknown padre.

Operatori pubblici

Nome Descrizione
CComPtrBase::operator T* Operatore cast.
CComPtrBase::operator ! Operatore NOT.
CComPtrBase::operator & Operatore address-of & .
CComPtrBase::operator * Operatore da puntatore a * .
CComPtrBase::operator < Operatore minore di.
CComPtrBase::operator == Operatore di uguaglianza.
CComPtrBase::operator -> Operatore puntatore a membri.

Membri dati pubblici

Nome Descrizione
CComPtrBase::p Variabile membro dati del puntatore.

Osservazioni:

Questa classe fornisce la base per altri puntatori intelligenti che usano routine di gestione della memoria COM, ad esempio CComQIPtr e CComPtr. Le classi derivate aggiungono costruttori e operatori personalizzati, ma si basano sui metodi forniti da CComPtrBase.

Requisiti

Intestazione: atlcomcli.h

CComPtrBase::Advise

Chiamare questo metodo per creare una connessione tra il CComPtrBasepunto di connessione del e il sink di un client.

HRESULT Advise(
    IUnknown* pUnk,
    const IID& iid,
    LPDWORD pdw) throw();

Parametri

pUnk
Puntatore a .IUnknown

iid
GUID del punto di connessione. In genere, questo GUID corrisponde all'interfaccia in uscita gestita dal punto di connessione.

pdw
Puntatore al cookie che identifica in modo univoco la connessione.

Valore restituito

Restituisce S_OK l'esito positivo o un errore in caso di errore HRESULT .

Osservazioni:

Per ulteriori informazioni, vedere AtlAdvise.

CComPtrBase::Attach

Chiamare questo metodo per acquisire la proprietà di un puntatore esistente.

void Attach(T* p2) throw();

Parametri

p2
L'oggetto CComPtrBase assumerà la proprietà di questo puntatore.

Osservazioni:

Attach chiama CComPtrBase::Release sulla variabile membro esistente CComPtrBase::p e quindi assegna p2 a CComPtrBase::p. Quando un CComPtrBase oggetto acquisisce la proprietà di un puntatore, viene chiamato Release automaticamente sul puntatore, che elimina il puntatore ed eventuali dati allocati se il conteggio dei riferimenti per l'oggetto passa a 0.

CComPtrBase::~CComPtrBase

Distruttore.

~CComPtrBase() throw();

Osservazioni:

Rilascia l'interfaccia a cui CComPtrBasepunta .

CComPtrBase::CoCreateInstance

Chiamare questo metodo per creare un oggetto della classe associata a un ID classe o a un ID programma specificato.

HRESULT CoCreateInstance(
    LPCOLESTR szProgID,
    LPUNKNOWN pUnkOuter = NULL,
    DWORD dwClsContext = CLSCTX_ALL) throw();

HRESULT CoCreateInstance(
    REFCLSID rclsid,
    LPUNKNOWN pUnkOuter = NULL,
    DWORD dwClsContext = CLSCTX_ALL) throw();

Parametri

szProgID
Puntatore a un ProgID, usato per ripristinare il CLSID.

pUnkOuter
Se NULL, indica che l'oggetto non viene creato come parte di un'aggregazione. Se non NULL, è un puntatore all'interfaccia dell'oggetto IUnknown aggregato (controllo IUnknown).

dwClsContext
Contesto in cui verrà eseguito il codice che gestisce l'oggetto appena creato.

rclsid
CLSID associato ai dati e al codice che verranno usati per creare l'oggetto.

Valore restituito

Restituisce S_OK in caso di esito positivo, o REGDB_E_CLASSNOTREG, CLASS_E_NOAGGREGATIONCO_E_CLASSSTRING, o E_NOINTERFACE in caso di errore. Vedere CoCreateClassInstance e CLSIDFromProgID per una descrizione di questi errori.

Osservazioni:

Se viene chiamato il primo formato del metodo, CLSIDFromProgID viene utilizzato per recuperare il CLSID. Entrambi i moduli chiamano CoCreateClassInstancequindi .

Nelle compilazioni di debug si verificherà un errore di asserzione se CComPtrBase::p non è uguale a NULL.

CComPtrBase::CopyTo

Chiamare questo metodo per copiare il CComPtrBase puntatore in un'altra variabile del puntatore.

HRESULT CopyTo(T** ppT) throw();

Parametri

ppT
Indirizzo della variabile per ricevere il CComPtrBase puntatore.

Valore restituito

Restituisce S_OK in caso di esito positivo, E_POINTER in caso di errore.

Osservazioni:

Copia il CComPtrBase puntatore in ppT. Il conteggio dei riferimenti per la CComPtrBase::p variabile membro viene incrementato.

Se è uguale a NULL, verrà restituito ppT un erroreHRESULT. Nelle compilazioni di debug si verificherà un errore di asserzione se ppT è uguale a NULL.

CComPtrBase::Detach

Chiamare questo metodo per rilasciare la proprietà di un puntatore.

T* Detach() throw();

Valore restituito

Restituisce una copia del puntatore.

Osservazioni:

Rilascia la proprietà di un puntatore, imposta la CComPtrBase::p variabile membro dati su NULL e restituisce una copia del puntatore.

CComPtrBase::IsEqualObject

Chiamare questo metodo per verificare se i punti specificati IUnknown allo stesso oggetto associato all'oggetto CComPtrBase .

bool IsEqualObject(IUnknown* pOther) throw();

Parametri

pOther
Oggetto IUnknown * da confrontare.

Valore restituito

Restituisce true se gli oggetti sono identici, false in caso contrario.

CComPtrBase::operator !

Operatore NOT.

bool operator!() const throw();

Valore restituito

Restituisce true se il CComHeapPtr puntatore è uguale a NULL, false in caso contrario.

CComPtrBase::operator &

Operatore address-of & .

T** operator&() throw();

Valore restituito

Restituisce l'indirizzo dell'oggetto a cui punta l'oggetto CComPtrBase .

CComPtrBase::operator *

Operatore da puntatore a * .

T& operator*() const throw();

Valore restituito

Restituisce il valore di CComPtrBase::p, ovvero un puntatore all'oggetto a cui fa riferimento l'oggetto CComPtrBase .

Se si esegue il debug delle compilazioni, si verificherà un errore di asserzione se CComPtrBase::p non è uguale a NULL.

CComPtrBase::operator ==

Operatore di uguaglianza.

bool operator== (T* pT) const throw();

Parametri

pT
Puntatore a un oggetto .

Valore restituito

Restituisce true se CComPtrBase e pT puntano allo stesso oggetto, false in caso contrario.

CComPtrBase::operator ->

Operatore da puntatore a membro.

_NoAddRefReleaseOnCComPtr<T>* operator->() const throw();

Valore restituito

Restituisce il valore della CComPtrBase::p variabile membro dati.

Osservazioni:

Utilizzare questo operatore per chiamare un metodo in una classe a cui punta l'oggetto CComPtrBase . Nelle compilazioni di debug si verificherà un errore di asserzione se il CComPtrBase membro dati punta a NULL.

CComPtrBase::operator <

Operatore minore di.

bool operator<(T* pT) const throw();

Parametri

pT
Puntatore a un oggetto .

Valore restituito

Restituisce true se il puntatore gestito dall'oggetto corrente è minore del puntatore a cui viene confrontato.

CComPtrBase::operator T*

Operatore cast.

operator T*() const throw();

Osservazioni:

Restituisce un puntatore al tipo di dati dell'oggetto definito nel modello di classe.

CComPtrBase::p

Variabile membro dati del puntatore.

T* p;

Osservazioni:

Questa variabile membro contiene le informazioni sul puntatore.

CComPtrBase::QueryInterface

Chiamare questo metodo per restituire un puntatore a un'interfaccia specificata.

template <class Q> HRESULT QueryInterface(Q
** pp) const throw();

Parametri

Q
Tipo di oggetto il cui puntatore di interfaccia è obbligatorio.

pp
Indirizzo della variabile di output che riceve il puntatore dell'interfaccia richiesto.

Valore restituito

Restituisce S_OK in caso di esito positivo o E_NOINTERFACE negativo.

Osservazioni:

Questo metodo chiama IUnknown::QueryInterface.

Nelle compilazioni di debug si verificherà un errore di asserzione se pp non è uguale a NULL.

CComPtrBase::Release

Chiamare questo metodo per rilasciare l'interfaccia.

void Release() throw();

Osservazioni:

L'interfaccia viene rilasciata e CComPtrBase::p è impostata su NULL.

CComPtrBase::SetSite

Chiamare questo metodo per impostare il sito dell'oggetto CComPtrBase sull'oggetto IUnknown padre.

HRESULT SetSite(IUnknown* punkParent) throw();

Parametri

punkParent
Puntatore all'interfaccia IUnknown dell'elemento padre.

Valore restituito

Restituisce S_OK l'esito positivo o un errore in caso di errore HRESULT .

Osservazioni:

Questo metodo chiama AtlSetChildSite.

Vedi anche

Panoramica della classe