winbase.h


FreeLibrary

La función FreeLibrary decrementa el contador de referencias de la biblioteca de enlace dinámico (DLL) cargada por el módulo. Cuando el contador de referencias llega a cero, la proyección del módulo se elimina del espacio de direcciones del proceso y el manipulador deja de ser válido. Esta función sustituye a FreeModule.

Sintaxis

BOOL FreeLibrary(
    HMODULE hLibModule 	// manipulador del módulo de biblioteca cargado
   );

Parámetros

hLibModule: Identifica el módulo de biblioteca cargado. Este manipulador es devuelto por las funciones LoadLibrary o GetModuleHandle.

Valor de retorno

Si la función tiene éxito, el valor de retorno es un valor distinto de cero.

Si la función falla, el valor de retorno es cero. Para obtener información adicional sobre el error, se debe llamar a la función GetLastError.

Observaciones

Cada proceso mantiene un contador de referencias para cada módulo de biblioteca cargada. Este contador se incrementa cada vez que se llama a la función LoadLibrary, y se decrementa cuando se invoca a FreeLibrary. Un módulo DLL cargado durante el proceso de inicialización debido a un enlace dinámico durante el proceso de carga, tiene un contador de referencias de una unidad. Este contador se incrementa si el mismo módulo se carga por una llamada a LoadLibrary.

Antes de eliminar el mapeado de un módulo de biblioteca, el sistema permite a la DLL separarse del proceso mediante una llamada a la función DllEntryPoint de la DLL, si es que tiene una, con el valor DLL_PROCESS_DETACH. Hacer esto le da una oportunidad a la DLL para hacer una limpieza de los recursos asignados para el proceso actual. Después de que la función de punto de entrada regrese, el módulo de biblioteca es eliminado del espacio de direcciones del proceso actual.

Llamar a FreeLibrary no afecta a otros procesos que usen el mismo módulo de biblioteca.