Funciones globales de mapa de COM
Estas funciones proporcionan compatibilidad con las implementaciones IUnknown
de mapa COM.
Función | Descripción |
---|---|
AtlInternalQueryInterface | Delega al objeto IUnknown de un objeto no agregado. |
InlineIsEqualIUnknown | Genera código eficaz para comparar interfaces con IUnknown . |
Requisitos
Encabezado: atlbase.h
AtlInternalQueryInterface
Recupera un puntero a la interfaz solicitada.
HRESULT AtlInternalQueryInterface(
void* pThis,
const _ATL_INTMAP_ENTRY* pEntries,
REFIID iid,
void** ppvObject);
Parámetros
pThis
[in] Puntero al objeto que contiene el mapa COM de interfaces expuestas a QueryInterface
.
pEntries
[in] Matriz de estructuras _ATL_INTMAP_ENTRY
que acceden a un mapa de interfaces disponibles.
iid
[in] GUID de la interfaz que se solicita.
ppvObject
[out] Puntero al puntero de interfaz especificado en iid o NULL si no se encuentra la interfaz.
Valor devuelto
Uno de los valores HRESULT estándar.
Comentarios
AtlInternalQueryInterface
solo administra interfaces de la tabla de asignación COM. Si el objeto se agrega, AtlInternalQueryInterface
no delega al desconocido externo. Para especificar interfaces en la tabla de asignación COM, puede usar la macro COM_INTERFACE_ENTRY o cualquiera de sus variantes.
Ejemplo
// 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
Llame a esta función en el caso especial de prueba de IUnknown
.
BOOL InlineIsEqualUnknown(REFGUID rguid1);
Parámetros
rguid1
[in] GUID que se va a comparar con IID_IUnknown
.