激活上下文

激活上下文 是内存中的数据结构,其中包含系统可用于重定向应用程序以加载特定 DLL 版本、COM 对象实例或自定义窗口版本的信息。 激活上下文的一部分可能包含 DLL 加载程序使用的 DLL 重定向信息;另一部分可能包含 COM 服务器信息。 激活上下文函数使用、创建、激活和停用激活上下文。 激活函数可以将应用程序的绑定重定向到指定特定 DLL 版本、窗口类、COM 服务器、类型库和接口的版本命名对象。 有关激活上下文函数和结构的详细信息,请参阅 激活上下文参考

从 Windows XP 开始,激活上下文函数使Windows能够使用清单中的信息来创建版本命名的对象。 如果应用程序通过调用 CreateProcess 创建进程,Windows检查是否存在应用程序清单。 如果清单存在,Windows使用清单中的信息来填充激活上下文。 由于清单描述了应用程序对 并行程序集 版本的依赖,因此清单中未指定版本的对象将映射到版本命名的对象。 例如,清单可以描述 DLL、文件、窗口类、COM 服务器、类型库和接口。

在激活上下文中创建全局对象时,系统会通过咨询清单自动为对象提供特定于版本的名称。 当应用程序执行并请求命名对象时,它将获取版本命名的对象。 这样,代码模块的多个版本就可以同时在系统上运行,而不会相互干扰。 例如,Windows Shell 使用清单来描述对 COMCTL32 版本 6.0 的依赖,以及创建窗口类的版本。

如果应用程序通过调用 CreateWindow 创建资源,则该过程将指定该函数的类名。 对 GetCurrentActCtx 的调用获取当前激活上下文,并检查是否存在给定类名的映射。 如果存在映射,它将使用该版本的调用过程解析映射并提供特定于版本的类名称。 Windows创建一个窗口,其中包含与该类名称和版本关联的窗口过程、样式和其他属性。

大多数情况下,激活上下文由系统管理。 应用程序开发人员和程序集提供程序通常不需要调用堆栈。 应用程序可以通过直接调用激活上下文来管理激活上下文。 有关详细信息,请参阅 使用激活上下文 API