Compartilhar via


ATL e o Marshaler de livre

A página de atributos do assistente simples de objeto de ATL fornece uma opção que permite que sua classe agrega o marshaler de livre (FTM).

O assistente gera código para criar uma instância do empacotador de livre em FinalConstruct e liberar essa instância em FinalRelease.Uma macro de COM_INTERFACE_ENTRY_AGGREGATE é adicionado automaticamente ao mapa COM para garantir que as solicitações de QueryInterface para IMarshal são tratadas pelo empacotador de livre.

O marshaler de livre permite acesso direto às interfaces no seu objeto de qualquer segmento no mesmo processo, acelerando chamadas entre).Essa opção é destinada para as classes que usam os dois modelo.

A o usar esta opção, as classes devem levar a responsabilidade para a segurança de segmento de seus dados.Além de isso, os objetos que agrega o marshaler de livre e a necessidade de usar os ponteiros de interface obtidos de outros objetos deve executar etapas adicionais para garantir que as interfaces são empacotados corretamente.Geralmente isso envolve armazenar os ponteiros de interface na tabela global (GIT) de interface e obter o ponteiro de GIT cada vez que é usado.ATL fornece a classe CComGITPtr para ajudá-lo a usar os ponteiros de interface armazenados no GIT.

Consulte também

Referência

CoCreateFreeThreadedMarshaler

IMarshal

When to Use the Global Interface Table

In-Process Server Threading Issues

Outros recursos

Conceitos de ATL