Как настроить обратные вызовы TLS в Windows без CRT?C++

Программы на C++. Форум разработчиков
Anonymous
Как настроить обратные вызовы TLS в Windows без CRT?

Сообщение Anonymous »

Я пытаюсь зарегистрировать обратный вызов TLS в приложении Windows без использования среды выполнения C (CRT).
  • Компилятор: MSVC 14.44.35207 (Visual Studio 2022)
  • Цель: x64
  • ОС: Windows 11
Я ожидал своего Обратный вызов TLS (

Код: Выделить всё

TlsCallback_0
), который будет автоматически вызываться загрузчиком Windows во время инициализации потока. Но обратный вызов никогда не запускается. В x64dbg я пытался установить точку останова на TlsCallback_0, но она так и не сработала. После некоторых исследований я получил этот фрагмент:

Код: Выделить всё

extern "C" {
void NTAPI TlsCallback_0(PVOID DllHandle, DWORD Reason, PVOID Reserved) {
_io__print("lscb\n");
if (Reason == DLL_PROCESS_ATTACH)
_thread__initls();
}

#pragma const_seg(".CRT$XLB")
__declspec(allocate(".CRT$XLB")) PIMAGE_TLS_CALLBACK TlsCallbacks[] = { TlsCallback_0, 0 };
#pragma const_seg()

#pragma comment(linker, "/INCLUDE:TlsCallback_0")
#pragma comment(linker, "/INCLUDE:TlsCallbacks")
}
...но обратный вызов никогда не вызывается.
Итак, как мне правильно настроить обратный вызов TLS в Windows без использования CRT, чтобы он вызывался автоматически во время инициализации потока?

Подробнее здесь: https://stackoverflow.com/questions/798 ... ithout-crt

Вернуться в «C++»