En-tête PE et LARGEADDRESSAWARE non évalués pour les modules DLL?

Dans l’en-tête PE, un indicateur indique si le fichier binary est LargeAddressAware ou non.
L’en-tête PE lui-même existe pour les deux, * .exe et * .dll.

Le système d’exploitation Windows évalue-t-il uniquement cet indicateur pour l’exécutable parent?
Est-il complètement ignoré pour tous les modules DLL?

Alors, pourquoi devrais-je activer l’indicateur LAA linker pour les DLL si personne ne l’évalue?

J’avais en tête ce qui suit:
Existe-t-il un moyen de forcer Windows à émettre un avertissement si un ex-LAA charge un module qui n’est pas compilé comme étant LAA?

Voir aussi la question connexe: Inconvénients de l’utilisation de / LARGEADDRESSAWARE pour les exécutables Windows 32 bits?

Le système d’exploitation Windows évalue-t-il uniquement cet indicateur pour l’exécutable parent?

Oui.

Est-il complètement ignoré pour tous les modules DLL?

Oui.

Alors, pourquoi devrais-je activer l’indicateur LAA linker pour les DLL si personne ne l’évalue?

Tu ne devrais pas. Il est inutile de le faire.

J’avais en tête ce qui suit: Existe-t-il un moyen de forcer Windows à émettre un avertissement si un ex compatible LAA charge un module qui n’est pas compilé comme étant LAA?

Non, il n’y en a pas.


La chose est que le tas est vaste. Il est partagé par tous les modules. Vous ne pouvez pas en avoir en utilisant un tas LAA et d’autres pas. Ainsi, seul l’exécutable a la possibilité de prendre cette décision. L’indicateur est dans le format de fichier PE qui est commun pour DLL et EXE. Mais cela n’a de sens que pour les EXE.