【发布时间】:2012-07-10 01:15:07
【问题描述】:
我在一次采访中被问到这样一个问题:
在windows中,假设有一个依赖于某些dll的exe,当你启动时 exe,然后会加载依赖的dll,是这些dll吗 加载内核模式还是用户模式?
我不太确定这个问题,没有提到答案 - 你能帮忙解释一下吗?
谢谢。
【问题讨论】:
-
在这种情况下,我会非常想挑战“单击 exe”会执行它的假设。
-
@BenVoigt 抱歉,我没听清楚,但是“单击 exe”到底有什么问题?
-
如果我在 Windows 资源管理器中单击一个 exe 文件,它就会被选中。如果我在 Visual Studio 中单击 exe 文件,资源编辑器将打开并显示图标、字符串、菜单和对话框资源。如果我在 Dependency Walker 中单击一个 exe 文件,则会分析依赖的 DLL。只有在其中一种情况下,依赖 DLL 从磁盘读取,并且仅作为数据文件,它们没有“加载”(在 OS 库加载器的意义上)。
-
@BenVoigt 有道理:) 我应该简单地将其改写为“启动 exe”
-
Linux 具有扩展名为 .ko(非必需)的动态可加载内核模块,它们不同于具有扩展名 (.so) 的动态可加载用户库。我不知道 Windows 中是否有类似的区别。但答案将来自类比。
标签: windows dll operating-system