Contextos de activación
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 versiones dll concretas, clases de ventana, servidores COM, bibliotecas de tipos e interfaces. Para obtener más información sobre las funciones y estructuras de contexto de activación, consulte la referencia de contexto de activación de .
A partir de Windows XP, las funciones de contexto de activación permiten a Windows usar información en manifiestos crear objetos con nombre de versión. Si una aplicación crea un proceso llamando a CreateProcess, Windows comprueba la existencia de un manifiesto de aplicación de . 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 de ensamblado en paralelo versiones, los objetos especificados sin versiones en el 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 dentro del contexto de activación, el sistema proporciona 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, Shell de Windows usa un manifiesto para describir una dependencia de la versión 6.0 de COMCTL32 y crear versiones de clases de ventana.
Si una aplicación crea un recurso llamando 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 Using the Activation Context API.