Funzione DisableThreadLibraryCalls (libloaderapi.h)
Disabilita le notifiche DLL_THREAD_ATTACH e DLL_THREAD_DETACH per la libreria di collegamento dinamico (DLL) specificata. In questo modo è possibile ridurre le dimensioni del working set per alcune applicazioni.
Sintassi
BOOL DisableThreadLibraryCalls(
[in] HMODULE hLibModule
);
Parametri
[in] hLibModule
Handle per il modulo DLL per il quale devono essere disabilitate le notifiche DLL_THREAD_ATTACH e DLL_THREAD_DETACH. La funzione LoadLibrary, LoadLibraryEx o GetModuleHandle restituisce questo handle. Si noti che non è possibile chiamare GetModuleHandle con NULL
perché restituisce l'indirizzo di base dell'immagine eseguibile, non l'immagine DLL.
Valore restituito
Se la funzione ha esito positivo, il valore restituito è diverso da zero.
Se la funzione ha esito negativo, il valore restituito è zero. La funzione DisableThreadLibraryCalls ha esito negativo se la DLL specificata da hModule ha una risorsa di archiviazione locale thread statica attiva o se hModule è un handle di modulo non valido. Per informazioni dettagliate sull'errore, chiamare GetLastError.
Commenti
La funzione DisableThreadLibraryCalls consente a una DLL di disabilitare le chiamate di notifica DLL_THREAD_ATTACH e DLL_THREAD_DETACH. Può trattarsi di un'ottimizzazione utile per le applicazioni multithreading con molte DLL, la creazione e l'eliminazione di thread frequenti e le cui DLL non necessitano di queste notifiche a livello di thread di allegati/scollegamento. Un'applicazione server RPC (Remote Procedure Call) è un esempio di tale applicazione. In questi tipi di applicazioni, le routine di inizializzazione dll rimangono spesso in memoria per il servizio DLL_THREAD_ATTACH e le notifiche DLL_THREAD_DETACH. Disabilitando le notifiche, il codice di inizializzazione della DLL non viene inserito nel paging perché viene creato o eliminato un thread, riducendo così le dimensioni del set di codice funzionante dell'applicazione. Per implementare l'ottimizzazione, modificare il codice DLL_PROCESS_ATTACH di una DLL per chiamare DisableThreadLibraryCalls.
Non chiamare questa funzione da una DLL collegata alla libreria di runtime C statica (CRT). Il CRT statico richiede DLL_THREAD_ATTACH e DLL_THREAD_DETATCH notifiche per funzionare correttamente.
Questa funzione non esegue alcuna ottimizzazione se l'archiviazione locale thread statica (TLS) è abilitata. TLS statico è abilitato quando si usano variabili thread_local , variabili __declspec( thread ) o statici locali della funzione.
Requisiti
Client minimo supportato | Windows XP [app desktop | App UWP] |
Server minimo supportato | Windows Server 2003 [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | libloaderapi.h (include Windows.h) |
Libreria | Kernel32.lib |
DLL | Kernel32.dll |
Vedere anche
Funzione Entry-Point libreria a collegamento dinamico