Compartilhar via


Definição de interfaces COM

A Microsoft define muitas interfaces COM. Na maioria dos casos, você pode reutilizar essas interfaces genéricas. No entanto, alguns aplicativos têm requisitos específicos que tornam desejável ou necessário definir suas próprias interfaces de objeto.

Todas as interfaces COM devem derivar, direta ou indiretamente, da interface IUnknown. Dentro dessa restrição, sua interface personalizada pode oferecer suporte a praticamente qualquer método ou parâmetro, incluindo métodos assíncronos. Você também pode gerar uma biblioteca de tipos para suas interfaces personalizadas para que os clientes possam acessar informações sobre os métodos do objeto em tempo de execução. Depois de definir uma interface, descrevê-la em Microsoft Interface Definition Language (MIDL), compilá-la e registrá-la, você usá-la como qualquer interface genérica. Com o COM distribuído, os métodos de interface estão disponíveis tanto para processos remotos quanto para outros processos no mesmo computador.

Finalmente, a criação de interfaces COM requer um ambiente de desenvolvimento que inclua um compilador C/C++ e o compilador Midl.exe.

As etapas na criação de uma interface COM são as seguintes:

  • Decida como você deseja fornecer suporte de marshaling para sua interface; com empacotamento controlado por biblioteca de tipos ou com uma DLL de proxy/stub. Até mesmo as interfaces em processo devem ser empacotadas se quiserem ser usadas além dos limites do apartamento. É uma boa ideia criar suporte de marshaling em cada interface COM, mesmo se você acha que não vai precisar dele. Consulte Interface Marshaling para obter mais informações.
  • Descreva a interface ou interfaces em um arquivo de definição de interface (IDL). Além disso, você pode especificar determinados aspectos locais da interface em um arquivo de configuração do aplicativo (ACF). Se você estiver usando o empacotamento controlado por biblioteca de tipos, adicione uma instrução de biblioteca que faça referência às interfaces para as quais você deseja gerar informações de tipo.
  • Use o compilador MIDL para gerar um arquivo de biblioteca de tipos e um arquivo de cabeçalho, ou arquivos proxy/stub de linguagem C, arquivo identificador de interface, arquivo de dados DLL e arquivo de cabeçalho. Consulte Compilação MIDL para obter mais informações.
  • Dependendo do método de empacotamento escolhido, escreva um arquivo de definição de módulo (DEF), compile e vincule todos os arquivos gerados por MIDL em uma única DLL de proxy e registre a interface no registro do sistema ou registre a biblioteca de tipos. Consulte Carregando e registrando uma biblioteca de tipos e Criando e registrando uma DLL de proxy para obter mais informações.

Anatomia de um arquivo IDL

Clientes e servidores COM

Regras de Design de Interface

O Component Object Model