Question

Dans l'en-tête PE, il y a un drapeau pour indiquer si le binaire est larguaddressaware ou non.
L'en-tête PE lui-même existe pour les deux, * .exe et * .dll.

est-ce vraiment le cas que Windows OS évalue ce drapeau pour l'exécutable parent uniquement?
Est-ce complètement ignoré pour tous les modules DLL?

Alors, pourquoi devrais-je activer le drapeau de laa Linker pour les DLL si personne ne l'évalue?

J'avais ce qui suit:

Existe-t-il un moyen de forcer Windows émettre un avertissement dans le cas où une EXE activée A LAA charge un module qui n'est pas compilé comme laa?

Voir aussi question connexe: inconvénients de l'utilisation / larguaddressaware pour les exécutables Windows 32 bits?

Était-ce utile?

La solution

est-ce vraiment le cas que Windows OS évalue ce drapeau pour l'exécutable parent uniquement?

Oui.

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

Oui.

Alors, pourquoi devrais-je activer le drapeau de laa Linker pour les DLL si personne ne l'évalue?

Vous ne devriez pas.Il est inutile de le faire.

J'avais ce qui suit: Existe-t-il un moyen de forcer Windows émettre un avertissement dans le cas où une EXE activée A LAA charge un module qui n'est pas compilé comme laa?

Non, il n'y a pas.


La chose est que le tas est large.Il est partagé par tous les modules.Vous ne pouvez pas avoir d'utiliser un tas LAA et d'autres non.Donc, seul l'exécutable a une chance de prendre cette décision.Le drapeau est dans le format de fichier PE qui est commun pour DLL et EXE.Mais cela n'a que la signification pour les exes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top