是否为DLL模块评估了PE头和LARGEADDRESSAWARE?

时间:2014-04-12 19:00:16

标签: windows dll portable-executable virtual-address-space

在PE标题中,有一个标志,指示二进制文件是否为LargeAddressAware PE头本身同时存在* .exe和* .dll。

Windows OS是否真的只评估父可执行文件的此标志? 是否完全忽略了所有DLL模块?

那么,如果没有人在评估它,我为什么要为DLL启用LAA链接器标志呢?

我记得以下几点:
有没有办法强制Windows在启用LAA的exe加载未编译为LAA的模块时发出警告?

另请参阅相关问题:Drawbacks of using /LARGEADDRESSAWARE for 32 bit Windows executables?

1 个答案:

答案 0 :(得分:4)

  

Windows OS是否真的只为父可执行文件评估此标志?

是。

  

是否完全忽略了所有DLL模块?

是。

  

那么,如果没有人在评估它,我为什么要为DLL启用LAA链接器标志呢?

你不应该。这样做毫无意义。

  

我记得以下几点:   有没有办法强制Windows在启用LAA的exe加载未编译为LAA的模块时发出警告?

没有。


事情是堆是进程范围的。它由所有模块共享。你不能让一些人使用LAA堆而不是其他人。所以只有可执行文件才有机会做出这个决定。该标志是PE文件格式,对于DLL和EXE是常见的。但它只对EXE有意义。