如果我将一个模块链接到使用WinSxS部署的mydll.dll上,我的模块中的PE头将简单地引用"mydll.dll“。Windows如何在运行时确定,首先,这个依赖项应该通过WinSxS加载,其次,它在哪个程序集中?
发布于 2009-10-05 17:25:01
它通过“激活上下文”来做到这一点。在我看来,在您了解激活上下文以及它是如何管理的之前,WinSxS没有任何意义。
我在http://omnicognate.wordpress.com/2009/10/05/winsxs/上发表了一篇相当长的博客文章来解释细节。
总而言之,激活上下文是WinSxS在运行时用来解析未版本化对象名称的结构(例如,DLL名称),以获取有关如何查找它们的完整信息。WinSxS中“清单”的目的是构造激活上下文。如果不了解这些激活上下文是如何以及何时构造的,以及它们是如何管理的(它们保存在线程本地堆栈上),就不可能通过WinSxS加载动态链接库所涉及的步骤进行推理,因此也不可能诊断大多数可能出现的问题。
https://stackoverflow.com/questions/1521326
复制相似问题