Контексты активации
контексты активации — это структуры данных в памяти, содержащие сведения, которые система может использовать для перенаправления приложения для загрузки определенной версии DLL, экземпляра COM-объекта или пользовательской версии окна. Один из разделов контекста активации может содержать сведения о перенаправлении DLL, которые используются загрузчиком DLL; другой раздел может содержать сведения о com-сервере. Функции контекста активации используют, создают, активируют и деактивируют контексты активации. Функции активации могут перенаправлять привязку приложения к именованным версиям объектам, указывающим определенные версии DLL, классы окон, COM-серверы, библиотеки типов и интерфейсы. Дополнительные сведения о функциях и структурах контекста активации см. в справочнике по контексту активации .
Начиная с Windows XP, функции контекста активации позволяют Windows использовать сведения в манифестах для создания именованных версий объектов. Если приложение создает процесс путем вызова CreateProcess, Windows проверяет наличие манифеста приложения . Если манифест существует, Windows использует сведения в манифесте для заполнения контекста активации. Так как манифесты описывают зависимость приложения от параллельной сборки версиях, объекты, указанные без версий манифеста, сопоставляются с объектами с именем версии. Например, манифест может описывать библиотеки DLL, файлы, классы окон, COM-серверы, библиотеки типов и интерфейсы.
При создании глобального объекта в контексте активации система автоматически предоставляет объекту имя конкретной версии, консультируя манифест. Когда приложение выполняет и запрашивает именованный объект, он получает объект с именем версии. Это позволяет одновременно запускать несколько версий модуля кода в системе, не вмешиваясь друг в друга. Например, Оболочка Windows использует манифест для описания зависимости от COMCTL32 версии 6.0 и создания версий классов окон.
Если приложение создает ресурс, вызывая CreateWindow, процесс задает имя класса для этой функции. Вызов GetCurrentActCtx получает текущий контекст активации и проверяет наличие сопоставления для заданного имени класса. Если сопоставление существует, он будет использовать эту версию вызывающего процесса для разрешения сопоставления и предоставления имени класса для конкретной версии. Windows создает окно с процедурой окна, стилями и другими атрибутами, связанными с именем и версией этого класса.
Контекст активации управляется системой в большинстве случаев. Разработчикам приложений и поставщикам сборок обычно не требуется выполнять вызовы к стеку. Приложения могут управлять контекстом активации, напрямую вызывая контекст активации. Дополнительные сведения см. в разделе Использование API контекста активации.