Post actualizado el día September 27, 2026 by DeiviSanzPlay
O SetThreadDescription” é uma que contra o Windows 10 SDK (1709+). contra a DLL do sistema mas sim contra api-ms–l1-1-3. dll. Em produção, isso se traduz em que o erro não aparece ao iniciar o processo, mas sim na primeira chamada à função, quando o lazy binding da import table falha silenciosamente e o carregador não encontra o encaminhamento em sistemas legacy.
O valor limite é a build 14393. Abaixo dela, api-ms-win-core-processthreads-l1-1-3. dll não contém o forwarder para o ponto real em kernel32. Execute dumpbin /imports seu_executavel. exe | findstr SetThreadDescription para verificar contra qual API set o seu binário resolve. Se a saída mostrar a DLL do API set umbrella e não kernel32 diretamente, você tem o problema. Corrija compilando com _WIN32_WINNT=0x0A00 e NTDDI_VERSION=0x0A000000 para forçar a vinculação direta contra kernel32. Alternativamente, use GetProcAddress(GetModuleHandle(L"kernel32. dll"), "SetThreadDescription") para carga dinâmica com fallback silencioso para NOP se o ponteiro for nulo.
Na minha experiência com telemetria de crash dumps em frotas heterogêneas de Windows, o erro mais comum ao aplicar isso é assumir que o manifesto de compatibilidade ou um VerifyVersionInfo bastam como guarda. A primeira vez que implementei isso, aprendi que a verificação de versão previne a execução do código, mas não a resolução da IAT, que ocorre no entry point antes que o seu WinMain tenha controle.