Contextos de activación

Los contextos de activación son estructuras de datos en memoria que contienen información que el sistema puede usar para redirigir una aplicación para cargar una versión de DLL determinada, una instancia de objeto COM o una versión de ventana personalizada. Una sección del contexto de activación puede contener información de redirección de DLL que usa el cargador de DLL; otra sección puede contener información del servidor COM. Las funciones de contexto de activación usan, crean, activan y desactivan contextos de activación. Las funciones de activación pueden redirigir el enlace de una aplicación a objetos con nombre de versión que especifican determinadas versiones dll, clases de ventana, servidores COM, bibliotecas de tipos e interfaces. Para obtener más información sobre las estructuras y las funciones de contexto de activación, vea Referencia de contexto de activación.

A partir de Windows XP, las funciones de contexto de activación permiten a Windows usar información en manifiestos para crear objetos con nombre de versión. Si una aplicación crea un proceso mediante una llamada a CreateProcess, Windows comprueba la existencia de un manifiesto de aplicación. Si existe un manifiesto, Windows usa la información del manifiesto para rellenar el contexto de activación. Dado que los manifiestos describen la dependencia de una aplicación en versiones de ensamblado en paralelo , los objetos especificados sin versiones del manifiesto se asignan a objetos con nombre de versión. Por ejemplo, el manifiesto puede describir archivos DLL, archivos, clases de ventana, servidores COM, bibliotecas de tipos e interfaces.

Cuando se crea un objeto global en el contexto de activación, el sistema asigna automáticamente al objeto un nombre específico de la versión consultando el manifiesto. Cuando la aplicación ejecuta y solicita un objeto con nombre, obtiene el objeto con nombre de versión. Esto permite que varias versiones de un módulo de código se ejecuten en el sistema al mismo tiempo sin interferir entre sí. Por ejemplo, Windows Shell usa un manifiesto para describir una dependencia de la versión 6.0 de COMCTL32 y para crear versiones de clases de ventana.

Si una aplicación crea un recurso mediante una llamada a CreateWindow, el proceso especifica un nombre de clase para esa función. La llamada a GetCurrentActCtx obtiene el contexto de activación actual y comprueba si existe una asignación para el nombre de clase especificado. Si existe una asignación, usará esa versión del proceso de llamada para resolver la asignación y proporcionar el nombre de clase específico de la versión. Windows crea una ventana con el procedimiento de ventana, los estilos y otros atributos asociados a ese nombre de clase y versión.

El sistema administra el contexto de activación en la mayoría de los casos. Normalmente, los desarrolladores de aplicaciones y los proveedores de ensamblados no necesitan realizar llamadas a la pila. Las aplicaciones pueden administrar un contexto de activación llamando directamente al contexto de activación. Para obtener más información, consulte Uso de la API de contexto de activación.