Função DisableThreadLibraryCalls (libloaderapi.h)
Desabilita as notificações de DLL_THREAD_ATTACH e DLL_THREAD_DETACH para a DLL (biblioteca de vínculo dinâmico) especificada. Isso pode reduzir o tamanho do conjunto de trabalho para alguns aplicativos.
Sintaxe
BOOL DisableThreadLibraryCalls(
[in] HMODULE hLibModule
);
Parâmetros
[in] hLibModule
Um identificador para o módulo DLL para o qual as notificações DLL_THREAD_ATTACH e DLL_THREAD_DETACH devem ser desabilitadas. A função LoadLibrary, LoadLibraryEx ou GetModuleHandle retorna esse identificador. Observe que você não pode chamar GetModuleHandle com NULL
porque isso retorna o endereço base da imagem executável, não a imagem DLL.
Valor retornado
Se a função for bem-sucedida, o valor retornado será diferente de zero.
Se a função falhar, o valor retornado será zero. A função DisableThreadLibraryCalls falhará se a DLL especificada por hModule tiver armazenamento local de thread estático ativo ou se hModule for um identificador de módulo inválido. Para obter informações de erro estendidas, chame GetLastError.
Comentários
A função DisableThreadLibraryCalls permite que uma DLL desabilite as chamadas de notificação DLL_THREAD_ATTACH e DLL_THREAD_DETACH. Essa pode ser uma otimização útil para aplicativos multithread que têm muitas DLLs, frequentemente criam e excluem threads e cujas DLLs não precisam dessas notificações no nível do thread de anexo/desanexação. Um aplicativo de servidor RPC (chamada de procedimento remoto) é um exemplo desse aplicativo. Nesses tipos de aplicativos, as rotinas de inicialização de DLL geralmente permanecem na memória para atender DLL_THREAD_ATTACH e DLL_THREAD_DETACH notificações. Ao desabilitar as notificações, o código de inicialização de DLL não é paginado porque um thread é criado ou excluído, reduzindo assim o tamanho do conjunto de códigos de trabalho do aplicativo. Para implementar a otimização, modifique o código DLL_PROCESS_ATTACH de uma DLL para chamar DisableThreadLibraryCalls.
Não chame essa função de uma DLL vinculada à CRT (biblioteca de tempo de execução C) estática. O CRT estático requer DLL_THREAD_ATTACH e DLL_THREAD_DETATCH notificações para funcionar corretamente.
Essa função não executará nenhuma otimização se o TLS (Armazenamento Local de Thread estático) estiver habilitado. O TLS estático é habilitado ao usar variáveis thread_local , variáveis __declspec( thread ) ou estático local da função.
Requisitos
Cliente mínimo com suporte | Windows XP [aplicativos da área de trabalho | aplicativos UWP] |
Servidor mínimo com suporte | Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | libloaderapi.h (inclua Windows.h) |
Biblioteca | Kernel32.lib |
DLL | Kernel32.dll |
Confira também
Função Entry-Point biblioteca de vínculo dinâmico