Tengo una biblioteca estática que puede vincularse ya sea a .exe
o .dll
. En el tiempo de ejecución, quiero que todas las funciones de mi biblioteca obtengan el HMODULE
para lo que sea que se haya vinculado el código de la biblioteca estática.¿Cómo obtengo el HMODULE para el código que se está ejecutando actualmente?
Actualmente utilizo el siguiente truco (inspirado en this forum):
const HMODULE GetCurrentModule()
{
MEMORY_BASIC_INFORMATION mbi = {0};
::VirtualQuery(GetCurrentModule, &mbi, sizeof(mbi));
return reinterpret_cast<HMODULE>(mbi.AllocationBase);
}
¿Hay una mejor manera de hacer esto que no se ve tan hacky?
(Nota: El propósito de esto es para cargar algunos recursos Win32 que sé que mis usuarios se han vinculado al mismo tiempo que mi biblioteca estática.)
relacionadas: http://stackoverflow.com/q/119706/946850 – krlmlr