Compartilhar via


Contextos de ativação

contextos de ativação são estruturas de dados na memória que contêm informações que o sistema pode usar para redirecionar um aplicativo para carregar uma versão de DLL específica, uma instância de objeto COM ou uma versão de janela personalizada. Uma seção do contexto de ativação pode conter informações de redirecionamento de DLL que são usadas pelo carregador de DLL; outra seção pode conter informações do servidor COM. As funções de contexto de ativação usam, criam, ativam e desativam contextos de ativação. As funções de ativação podem redirecionar a associação de um aplicativo a objetos nomeados por versão que especificam versões específicas de DLL, classes de janela, servidores COM, bibliotecas de tipos e interfaces. Para obter mais informações sobre as estruturas e funções de contexto de ativação, consulte a referência de contexto de ativação .

A partir do Windows XP, as funções de contexto de ativação permitem que o Windows use informações em manifestos para criar objetos nomeados por versão. Se um aplicativo criar um processo chamando CreateProcess, o Windows verificará a existência de um manifesto do aplicativo . Se houver um manifesto, o Windows usará as informações no manifesto para preencher o contexto de ativação. Como os manifestos descrevem a dependência de um aplicativo em assembly lado a lado versões, os objetos especificados sem versões no manifesto são mapeados para objetos nomeados por versão. Por exemplo, o manifesto pode descrever DLLs, arquivos, classes de janela, servidores COM, bibliotecas de tipos e interfaces.

Quando um objeto global é criado dentro do contexto de ativação, o sistema fornece automaticamente ao objeto um nome específico da versão consultando o manifesto. Quando o aplicativo executa e solicita um objeto nomeado, ele obtém o objeto nomeado por versão. Isso permite que várias versões de um módulo de código são executadas no sistema ao mesmo tempo sem interferir umas nas outras. Por exemplo, o Windows Shell usa um manifesto para descrever uma dependência da versão 6.0 do COMCTL32 e criar versões de classes de janela.

Se um aplicativo criar um recurso chamando CreateWindow, o processo especifica um nome de classe para essa função. A chamada para GetCurrentActCtx obtém o contexto de ativação atual e verifica se existe um mapeamento para o nome de classe fornecido. Se houver um mapeamento, ele usará essa versão do processo de chamada para resolver o mapeamento e fornecer o nome da classe específica à versão. O Windows cria uma janela com o procedimento de janela, estilos e outros atributos associados a esse nome de classe e versão.

O contexto de ativação é gerenciado pelo sistema na maioria dos casos. Os desenvolvedores de aplicativos e os provedores de assembly geralmente não precisam fazer chamadas para a pilha. Os aplicativos podem gerenciar um contexto de ativação chamando diretamente o contexto de ativação. Para obter mais informações, consulte Usando a API de Contexto de Ativação.