Fonction DisableThreadLibraryCalls (libloaderapi.h)

Désactive les notifications DLL_THREAD_ATTACH et DLL_THREAD_DETACH pour la bibliothèque de liens dynamiques (DLL) spécifiée. Cela peut réduire la taille du jeu de travail pour certaines applications.

Syntaxe

BOOL DisableThreadLibraryCalls(
  [in] HMODULE hLibModule
);

Paramètres

[in] hLibModule

Handle du module DLL pour lequel les notifications DLL_THREAD_ATTACH et DLL_THREAD_DETACH doivent être désactivées. La fonction LoadLibrary, LoadLibraryEx ou GetModuleHandle retourne ce handle. Notez que vous ne pouvez pas appeler GetModuleHandle avec NULL , car cela retourne l’adresse de base de l’image exécutable, et non l’image DLL.

Valeur retournée

Si la fonction réussit, la valeur de retour est différente de zéro.

Si la fonction échoue, la valeur de retour est égale à zéro. La fonction DisableThreadLibraryCalls échoue si la DLL spécifiée par hModule a un stockage local de thread statique actif, ou si hModule est un handle de module non valide. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.

Remarques

La fonction DisableThreadLibraryCalls permet à une DLL de désactiver les appels de notification DLL_THREAD_ATTACH et DLL_THREAD_DETACH. Il peut s’agir d’une optimisation utile pour les applications multithread qui ont de nombreuses DLL, créent et suppriment fréquemment des threads, et dont les DLL n’ont pas besoin de ces notifications au niveau des threads de pièce jointe/détachement. Une application serveur d’appel de procédure distante (RPC) est un exemple d’une telle application. Dans ces types d’applications, les routines d’initialisation dll restent souvent en mémoire pour traiter les notifications DLL_THREAD_ATTACH et DLL_THREAD_DETACH. En désactivant les notifications, le code d’initialisation dll n’est pas paginé, car un thread est créé ou supprimé, ce qui réduit la taille de l’ensemble de code de travail de l’application. Pour implémenter l’optimisation, modifiez le code DLL_PROCESS_ATTACH d’une DLL pour appeler DisableThreadLibraryCalls.

N’appelez pas cette fonction à partir d’une DLL liée à la bibliothèque d’exécution C statique (CRT). Le CRT statique nécessite DLL_THREAD_ATTACH et DLL_THREAD_DETATCH notifications pour fonctionner correctement.

Cette fonction n’effectue aucune optimisation si le stockage local de thread statique (TLS) est activé. Tls statique est activé lors de l’utilisation de variables thread_local, de variables __declspec( thread ) ou de fonctions statiques locales.

Configuration requise

   
Client minimal pris en charge Windows XP [applications de bureau | applications UWP]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau | applications UWP]
Plateforme cible Windows
En-tête libloaderapi.h (inclure Windows.h)
Bibliothèque Kernel32.lib
DLL Kernel32.dll

Voir aussi

Dynamic-Link Library Entry-Point Function

Fonctions de bibliothèque de liens dynamiques

FreeLibraryAndExitThread

API Vertdll disponibles dans les enclaves VBS