forked from Chuyu-Team/VC-LTL
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathptd_downlevel.cpp
More file actions
32 lines (25 loc) · 777 Bytes
/
Copy pathptd_downlevel.cpp
File metadata and controls
32 lines (25 loc) · 777 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <Windows.h>
#include <ptd_downlevel.h>
static ptd_downlevel ___ptd_downlevel_data[0x4000];
EXTERN_C ptd_downlevel* __fastcall __LTL_get_ptd_downlevel()
{
return &___ptd_downlevel_data[(GetCurrentThreadId() >> 1) % _countof(___ptd_downlevel_data)];
}
static VOID NTAPI ptd_downlevel_TLS_CALLBACK(
PVOID DllHandle,
DWORD Reason,
PVOID Reserved
)
{
if (DLL_THREAD_ATTACH == Reason)
{
memset(__LTL_get_ptd_downlevel(), 0, sizeof(ptd_downlevel));
}
}
#pragma section(".CRT$XLB", long, read) // LTL Loader TLS Callback
__declspec(allocate(".CRT$XLB")) static PIMAGE_TLS_CALLBACK __LTL_TLS_CALLBACKs = ptd_downlevel_TLS_CALLBACK;
#if defined(_X86_)
#pragma comment(linker, "/INCLUDE:__tls_used")
#else
#pragma comment(linker, "/INCLUDE:_tls_used")
#endif