Contextes d’activation
contextes d’activation sont des structures de données en mémoire contenant des informations que le système peut utiliser pour rediriger une application pour charger une version DE DLL particulière, une instance d’objet COM ou une version de fenêtre personnalisée. Une section du contexte d’activation peut contenir des informations de redirection DLL utilisées par le chargeur DLL ; Une autre section peut contenir des informations sur le serveur COM. Les fonctions de contexte d’activation utilisent, créent, activent et désactivent les contextes d’activation. Les fonctions d’activation peuvent rediriger la liaison d’une application vers des objets nommés par version qui spécifient des versions de DLL particulières, des classes de fenêtre, des serveurs COM, des bibliothèques de types et des interfaces. Pour plus d’informations sur les fonctions et structures du contexte d’activation, consultez la informations de référence sur le contexte d’activation.
À compter de Windows XP, les fonctions de contexte d’activation permettent à Windows d’utiliser des informations dans manifestes pour créer des objets nommés par version. Si une application crée un processus en appelant CreateProcess, Windows recherche l’existence d’un manifeste d’application . S’il existe un manifeste, Windows utilise les informations du manifeste pour remplir le contexte d’activation. Étant donné que les manifestes décrivent la dépendance d’une application sur assembly côte à côte versions, les objets spécifiés sans versions du manifeste sont mappés à des objets nommés par version. Par exemple, le manifeste peut décrire des DLL, des fichiers, des classes de fenêtre, des serveurs COM, des bibliothèques de types et des interfaces.
Lorsqu’un objet global est créé dans le contexte d’activation, le système donne automatiquement à l’objet un nom spécifique à la version en consultant le manifeste. Lorsque l’application s’exécute et demande un objet nommé, elle obtient l’objet nommé version. Cela permet à plusieurs versions d’un module de code de s’exécuter simultanément sur le système sans interférer entre elles. Par exemple, Windows Shell utilise un manifeste pour décrire une dépendance à la version 6.0 de COMCTL32 et créer des versions de classes de fenêtre.
Si une application crée une ressource en appelant CreateWindow, le processus spécifie un nom de classe à cette fonction. L’appel à GetCurrentActCtx obtient le contexte d’activation actuel et vérifie si un mappage existe pour le nom de classe donné. Si un mappage existe, il utilise cette version du processus appelant pour résoudre le mappage et fournir le nom de classe spécifique à la version. Windows crée une fenêtre avec la procédure de fenêtre, les styles et d’autres attributs associés à ce nom de classe et à cette version.
Le contexte d’activation est géré par le système dans la plupart des cas. Les développeurs d’applications et les fournisseurs d’assemblys n’ont généralement pas besoin d’effectuer des appels à la pile. Les applications peuvent gérer un contexte d’activation en appelant directement le contexte d’activation. Pour plus d’informations, consultez Utilisation de l’API de contexte d’activation.