Как настроить обратные вызовы 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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