Pregunta

En el encabezado de PE hay una bandera para indicar si el binario es LargeAadDressAware o no.
El encabezado de PE existe para ambos, * .exe y * .dll.

¿Es realmente el caso que Windows OS evalúa esta bandera para el ejecutable padre, solo? ¿Está completamente ignorado para todos los módulos DLL?

Entonces, ¿por qué debo permitir la bandera de enlazador LAA para DLL si nadie lo está evaluando?

Tenía lo siguiente en mente:

¿Hay alguna manera de forzar a Windows, emitir una advertencia en caso de que una EXE habilitada LAA cargue un módulo que no esté compilado como LAA?

Ver también Pregunta relacionada: inconvenientes de usando / larseaddressaware para los ejecutables de Windows de 32 bits?

¿Fue útil?

Solución

¿Es realmente el caso que Windows OS evalúa esta bandera para el ejecutable padre, solo?

si.

¿Está completamente ignorado para todos los módulos DLL?

si.

Entonces, ¿por qué debo permitir la bandera de enlazador LAA para DLL si nadie lo está evaluando?

No deberías.No tiene sentido hacerlo.

Tenía en cuenta lo siguiente: ¿Hay alguna manera de forzar a Windows, emitir una advertencia en caso de que una EXE habilitada LAA cargue un módulo que no esté compilado como LAA?

no que no hay.


La cosa es el montón es el proceso de ancho.Es compartido por todos los módulos.No puedes tener algunos usando un montón de Laa y otros no.Así que solo el ejecutable tiene la oportunidad de tomar esta decisión.La bandera está en el formato de archivo PE que es común para DLL y EXE.Pero solo tiene un significado para los exes.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top