Compartilhar via


Funções globais de mapa COM

Essas funções são compatíveis com as implementações de IUnknown de mapa COM.

Função Descrição
AtlInternalQueryInterface Delega para o IUnknown de um objeto não agregado.
InlineIsEqualIUnknown Gera um código eficiente para comparar interfaces com IUnknown.

Requisitos

Cabeçalho: atlbase.h

AtlInternalQueryInterface

Recupera um ponteiro para a interface solicitada.

HRESULT AtlInternalQueryInterface(
    void* pThis,
    const _ATL_INTMAP_ENTRY* pEntries,
    REFIID iid,
    void** ppvObject);

Parâmetros

pThis
[in] Um ponteiro para o objeto que contém o mapa COM de interfaces expostas a QueryInterface.

pEntries
[in] Uma matriz de estruturas _ATL_INTMAP_ENTRY que acessa um mapa de interfaces disponíveis.

iid
[in] O GUID da interface que está sendo solicitado.

ppvObject
[out] Um ponteiro para o ponteiro de interface especificado em iid ou NULL se a interface não for encontrada.

Valor de retorno

Um dos valores HRESULT padrão.

Comentários

AtlInternalQueryInterface somente lida com interfaces na tabela de mapa COM. Se o objeto for agregado, AtlInternalQueryInterface não delegará ao desconhecido externo. Você pode inserir interfaces na tabela de mapa COM com a macro COM_INTERFACE_ENTRY ou uma de suas variantes.

Exemplo

// 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

Chame essa função especialmente para teste de IUnknown.

BOOL InlineIsEqualUnknown(REFGUID rguid1);

Parâmetros

rguid1
[in] O GUID a ser comparado a IID_IUnknown.

Confira também

Funções
Macros de mapa COM