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 CComPtrBase punto 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 CComPtrBase
punto 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 CComPtrBase
punta .
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_NOAGGREGATION
CO_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 CoCreateClassInstance
quindi .
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
.