激活上下文 是内存中的数据结构,其中包含系统可用于重定向应用程序以加载特定 DLL 版本、COM 对象实例或自定义窗口版本的信息。 激活上下文的一部分可能包含 DLL 加载程序使用的 DLL 重定向信息;另一部分可能包含 COM 服务器信息。 激活上下文函数使用、创建、激活和停用激活上下文。 激活函数可以将应用程序的绑定重定向到指定特定 DLL 版本、窗口类、COM 服务器、类型库和接口的版本命名对象。 有关激活上下文函数和结构的详细信息,请参阅 激活上下文参考。
从 Windows XP 开始,激活上下文函数使 Windows 能够使用 清单中的信息 创建版本命名的对象。 如果应用程序通过调用 CreateProcess创建进程,Windows 将检查是否存在 应用程序清单。 如果清单存在,Windows 将使用清单中的信息填充激活上下文。 由于清单描述了应用程序对 并行程序集 版本的依赖,因此清单中未指定版本的对象将映射到版本命名的对象。 例如,清单可以描述 DLL、文件、窗口类、COM 服务器、类型库和接口。
在激活上下文中创建全局对象时,系统通过咨询清单自动为对象提供特定于版本的名称。 当应用程序执行并请求命名对象时,它将获取版本命名的对象。 这样,代码模块的多个版本就可以同时在系统上运行,而不会相互干扰。 例如,Windows Shell 使用清单来描述对COMCTL32版本 6.0 的依赖性,以及创建窗口类的版本。
如果应用程序通过调用 CreateWindow创建资源,则该过程将指定该函数的类名。 调用 GetCurrentActCtx 获取当前激活上下文,并检查给定类名是否存在映射。 如果存在映射,它将使用该版本的调用过程解析映射并提供特定于版本的类名称。 Windows 创建一个窗口,其中包含与该类名称和版本关联的窗口过程、样式和其他属性。
在大多数情况下,激活上下文由系统管理。 应用程序开发人员和程序集提供程序通常不需要调用堆栈。 应用程序可以通过直接调用激活上下文来管理激活上下文。 有关详细信息,请参阅 使用激活上下文 API。