Funzioni globali di mappa COM
Queste funzioni forniscono il supporto per le implementazioni della mappa IUnknown
COM.
Funzione | Descrizione |
---|---|
AtlInternalQueryInterface | Delega all'oggetto IUnknown di un oggetto nonaggregato. |
InlineIsEqualIUnknown | Genera codice efficiente per confrontare le interfacce con IUnknown . |
Requisiti
Intestazione: atlbase.h
AtlInternalQueryInterface
Recupera un puntatore all'interfaccia richiesta.
HRESULT AtlInternalQueryInterface(
void* pThis,
const _ATL_INTMAP_ENTRY* pEntries,
REFIID iid,
void** ppvObject);
Parametri
pThis
[in] Puntatore all'oggetto contenente la mappa COM di interfacce esposte a QueryInterface
.
pEntries
[in] Matrice di _ATL_INTMAP_ENTRY
strutture che accedono a una mappa delle interfacce disponibili.
iid
[in] GUID dell'interfaccia richiesta.
ppvObject
[out] Puntatore al puntatore dell'interfaccia specificato in iid o NULL se l'interfaccia non viene trovata.
Valore restituito
Uno dei valori HRESULT standard.
Osservazioni:
AtlInternalQueryInterface
gestisce solo le interfacce nella tabella di mappe COM. Se l'oggetto è aggregato, AtlInternalQueryInterface
non delega all'oggetto sconosciuto esterno. È possibile immettere le interfacce nella tabella mappa COM con la macro COM_INTERFACE_ENTRY o una delle relative varianti.
Esempio
// MyTimerProc is a callback function passed to SetTimer()
VOID CALLBACK MyTimerProc(HWND /*hwnd*/, UINT /*uMsg*/, UINT /*idEvent*/,
DWORD /*dwTime*/)
{
LPDISPATCH pDisp = NULL;
// gpMyCtrl is a global variable of type CMyCtrl*
// _GetEntries() is a static function you get with BEGIN_COM_MAP()
AtlInternalQueryInterface (gpMyCtrl, CMyCtrl::_GetEntries(), IID_IDispatch,
(LPVOID*)&pDisp);
//...
pDisp->Release ();
}
InlineIsEqualIUnknown
Chiamare questa funzione per il caso speciale di test per IUnknown
.
BOOL InlineIsEqualUnknown(REFGUID rguid1);
Parametri
rguid1
[in] GUID da confrontare con IID_IUnknown
.