Condividi tramite


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

Funzioni della libreria a collegamento dinamico

FreeLibraryAndExitThread

API Vertdll disponibili nelle enclave VBS