Hola a todos.
Pregunto sobre una DLL que tiene funciones que a su vez importa de otras DLL. Ejemplo:
El Kernel32.dll tiene funciones que están implementadas dentro del Kernel32.dll por ejemplo Beep. Pero tiene otras funciones que son implementadas en otras DLLs, por ejemplo OpenProcessToken que está implementada en la DLL API-MS-WIN-CORE-PROCESSTHREADS-L1-1-0.DLL. (Hablo por ejemplo en Windows 7)
Es por ello que si se ve la Export Address Table del Kernel32.dll, la función OpenProcessToken aparece como Forwarded a API-MS-WIN-CORE-PROCESSTHREADS-L1-1-0.DLL.
Entonces, la pregunta por la que viene todo esto:
¿Cuando mi programa se carga en memoria para ejecutarse, y el loader de Windows carga la Kernel32.dll en el espacio de direcciones del proceso de mi programa, también carga automáticamente la DLL API-MS-WIN-CORE-PROCESSTHREADS-L1-1-0?
O sea: ¿cuando el loader de Windows carga una DLL que un programa necesita, también carga automáticamente todas las DLL Forwarded, que la primera DLL necesita?
Dicho de otra manera: Si yo cargo una DLL con LoadLibrary, pongamos la Kernel32.dll -> LoadLibrary("kernel32.dll") ¿LoadLibrary cargará además de la Kernel32, también todas las DLL Forwarded que la Kernel32 importe?
Gracias.
Pregunto sobre una DLL que tiene funciones que a su vez importa de otras DLL. Ejemplo:
El Kernel32.dll tiene funciones que están implementadas dentro del Kernel32.dll por ejemplo Beep. Pero tiene otras funciones que son implementadas en otras DLLs, por ejemplo OpenProcessToken que está implementada en la DLL API-MS-WIN-CORE-PROCESSTHREADS-L1-1-0.DLL. (Hablo por ejemplo en Windows 7)
Es por ello que si se ve la Export Address Table del Kernel32.dll, la función OpenProcessToken aparece como Forwarded a API-MS-WIN-CORE-PROCESSTHREADS-L1-1-0.DLL.
Entonces, la pregunta por la que viene todo esto:
¿Cuando mi programa se carga en memoria para ejecutarse, y el loader de Windows carga la Kernel32.dll en el espacio de direcciones del proceso de mi programa, también carga automáticamente la DLL API-MS-WIN-CORE-PROCESSTHREADS-L1-1-0?
O sea: ¿cuando el loader de Windows carga una DLL que un programa necesita, también carga automáticamente todas las DLL Forwarded, que la primera DLL necesita?
Dicho de otra manera: Si yo cargo una DLL con LoadLibrary, pongamos la Kernel32.dll -> LoadLibrary("kernel32.dll") ¿LoadLibrary cargará además de la Kernel32, también todas las DLL Forwarded que la Kernel32 importe?
Gracias.