tag para mp3tag full descargar winapi loadlibrary

winapi - para - mp3tag pc download



¿LoadLibrary crea instancias distintas? (3)

Hace algo inteligente. Windows mantiene un recuento de referencia para cada DLL cargado a través de LoadLibrary. Es por eso que tiene que llamar a FreeLibrary una vez por cada llamada a LoadLibrary correspondiente. Suponiendo que no liberas la DLL primero, cada llamada a LoadLibrary te dará el mismo identificador.

De la documentación de MSDN para FreeLibrary:

Cada proceso mantiene un recuento de referencia para cada módulo de biblioteca cargado. Este recuento de referencia se incrementa cada vez que se llama a LoadLibrary y disminuye cada vez que se llama a FreeLibrary.

Si utilizo Win32 API LoadLibrary para cargar la misma DLL 3 veces seguidas, debería devolver 3 identificadores distintos y las funciones de cada biblioteca deberían tener todas las direcciones correctas. (¿O hace algo "inteligente" y detecta si el dll ya se ha cargado para el proceso y solo apunta al mismo módulo?)


No, no lo hace. Para solucionar esto, puede copiar el archivo .dll en un archivo temporal (tantas veces como sea necesario para cargar el archivo .dll) y luego eliminar los archivos una vez que haya terminado.


Si son la misma DLL, entonces no volverá a cargarla.

http://msdn.microsoft.com/en-us/library/ms684175(VS.85).aspx

"Si el módulo especificado es una DLL que aún no está cargada para el proceso de llamada, el sistema llama a la función DllMain de la DLL con el valor DLL_PROCESS_ATTACH. Si DllMain devuelve TRUE, LoadLibrary devuelve un identificador al módulo. Si DllMain devuelve FALSE, el sistema descarga la DLL del espacio de direcciones del proceso y LoadLibrary devuelve NULL. No es seguro llamar a LoadLibrary desde DllMain. Para obtener más información, consulte la sección de Comentarios en DllMain ".

"Si lpFileName no incluye una ruta y hay más de un módulo cargado con el mismo nombre base y extensión, la función devuelve un identificador al módulo que se cargó primero".