Compartilhar via


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

Funções de biblioteca de vínculo dinâmico

FreeLibraryAndExitThread

APIs Vertdll disponíveis em enclaves de VBS