Compartir a través de


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

Funciones de la biblioteca de vínculos dinámicos

FreeLibraryAndExitThread

API de Vertdll disponibles en enclaves de VBS