Función DisableThreadLibraryCalls (libloaderapi.h)
Deshabilita el DLL_THREAD_ATTACH y las notificaciones de DLL_THREAD_DETACH para la biblioteca de vínculos dinámicos (DLL) especificada. Esto puede reducir el tamaño del conjunto de trabajo para algunas aplicaciones.
Sintaxis
BOOL DisableThreadLibraryCalls(
[in] HMODULE hLibModule
);
Parámetros
[in] hLibModule
Identificador del módulo DLL para el que se deshabilitarán las notificaciones de DLL_THREAD_ATTACH y DLL_THREAD_DETACH. La función LoadLibrary, LoadLibraryEx o GetModuleHandle devuelve este identificador. Tenga en cuenta que no puede llamar a GetModuleHandle con NULL
porque devuelve la dirección base de la imagen ejecutable, no la imagen DLL.
Valor devuelto
Si la función se realiza correctamente, el valor devuelto es distinto de cero.
Si la función no se realiza correctamente, el valor devuelto es cero. La función DisableThreadLibraryCalls produce un error si el archivo DLL especificado por hModule tiene un almacenamiento local de subproceso estático activo o si hModule es un identificador de módulo no válido. Para obtener información de error extendida, llame a GetLastError.
Comentarios
La función DisableThreadLibraryCalls permite que un archivo DLL deshabilite las llamadas de notificación de DLL_THREAD_ATTACH y DLL_THREAD_DETACH. Esto puede ser una optimización útil para aplicaciones multiproceso que tienen muchos archivos DLL, con frecuencia crean y eliminan subprocesos, y cuyos archivos DLL no necesitan estas notificaciones de nivel de subproceso de datos adjuntos o desasociaciones. Una aplicación de servidor de llamada a procedimiento remoto (RPC) es un ejemplo de esta aplicación. En este tipo de aplicaciones, las rutinas de inicialización de DLL a menudo permanecen en memoria para atender DLL_THREAD_ATTACH y DLL_THREAD_DETACH notificaciones. Al deshabilitar las notificaciones, el código de inicialización de DLL no se pagina porque se crea o elimina un subproceso, lo que reduce el tamaño del conjunto de código de trabajo de la aplicación. Para implementar la optimización, modifique el código de DLL_PROCESS_ATTACH de un archivo DLL para llamar a DisableThreadLibraryCalls.
No llame a esta función desde un archivo DLL que esté vinculado a la biblioteca en tiempo de ejecución estática de C (CRT). El CRT estático requiere DLL_THREAD_ATTACH y DLL_THREAD_DETATCH notificaciones para funcionar correctamente.
Esta función no realiza ninguna optimización si está habilitado el almacenamiento local de subprocesos estáticos (TLS). TLS estático se habilita cuando se usan variables thread_local , variables __declspec( subproceso ) o estáticas locales de función.
Requisitos
Cliente mínimo compatible | Windows XP [aplicaciones de escritorio | aplicaciones para UWP] |
Servidor mínimo compatible | Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP] |
Plataforma de destino | Windows |
Encabezado | libloaderapi.h (incluya Windows.h) |
Library | Kernel32.lib |
Archivo DLL | Kernel32.dll |
Vea también
Función de Entry-Point biblioteca de vínculos dinámicos