Compartilhar via


Macros de COM_INTERFACE_ENTRY

Esses macros insira as interfaces de um objeto no seu mapa COM para que eles possam ser acessados por QueryInterface.A ordem de entradas no mapa COM é interfaces do pedido será selecionado a existência IID compatível durante QueryInterface.

Cada objeto que deseja expor as interfaces através de QueryInterface deve ter seu próprio mapeamento COM.Inicia o mapa de BEGIN_COM_MAPCOM com macros.As entradas de interface são adicionadas a um ou mais dos COM_INTERFACE_ENTRY de macros, e o mapa terminar com a macro de END_COM_MAP .Por exemplo:

BEGIN_COM_MAP(CMyObject)
   COM_INTERFACE_ENTRY(IMyObject)
   COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()

Observe que a primeira entrada no mapa COM deve ser uma interface no objeto que contém o mapa COM.Portanto, não pode iniciar suas entradas de mapa de COM_INTERFACE_ENTRY_CHAINCOM com, o que faz com que o mapa da de um objeto diferente a ser pesquisada no ponto onde COM_INTERFACE_ENTRY_CHAIN(COtherObject) aparece no mapa da do objeto.Se você deseja pesquisar primeiro o mapa da de outro objeto, para adicionar uma entrada de interface para IUnknown ao seu mapa COM, então encadear o mapa da de outro objeto.Por exemplo:

BEGIN_COM_MAP(CThisObject)
   COM_INTERFACE_ENTRY(IUnknown)
   COM_INTERFACE_ENTRY_CHAIN(CBase)
END_COM_MAP()
Observação de cuidadoCuidado

Até a data de versão 3,0, ATL usa a palavra-chave __uuidof( class ) do compilador para obter o IID correspondente para uma determinada classe.Devido a alterações em macros de COM_INTERFACE_ENTRY vigor na versão 3,0, agora você incluir somente o cabeçalho para que a interface, use em vez de também vincular a uma biblioteca que define o IIDs correspondente para a interface.Essa alteração pode causar problemas se o cabeçalho foi gerado anteriormente por uma versão anterior de MIDL, ou se mão- foi codificado e não marcado adequadamente.Se a declaração para a interface no cabeçalho não foi marcada comum uuidassociado )de __declspec( , então qualquer tentativa de usar a palavra-chave de __uuidof para essa interface falhará.Você pode reverter para o mais antigos (macros de ATL 2.x) COM_INTERFACE_ENTRY definindo _ATL_NO_UUIDOF em suas configurações de compilação para trabalhar em torno de alguns problemas com esse novo comportamento.

Macros de entrada de mapa COM

A seguir estão as macros disponíveis de entrada:

Requisitos

Cabeçalho: atlcom.h

Consulte também

Outros recursos

Macros de mapa COM

Macros de ATL