F4MP/tiltedcode/Code/immersive_launcher/stubs/CrtStartupHooks.cpp
Jous99 37b16f1547 code upload
codigo original de f4mp y tilted para referencias
2026-01-06 18:45:00 +01:00

36 lines
1.1 KiB
C++

#include "launcher.h"
#include <FunctionHook.hpp>
#include <mutex>
#include <TiltedCore/Initializer.hpp>
static std::once_flag s_initGuard;
static uint16_t(WINAPI* Real_crtGetShowWindowMode)() = nullptr;
static int(WINAPI* Real_ismbbled)(uint32_t) = nullptr;
void TP_GetStartupInfoW(LPSTARTUPINFOW apInfo) noexcept
{
std::call_once(s_initGuard, []() { launcher::InitClient(); });
GetStartupInfoW(apInfo);
}
int TP_ismbblead(uint32_t c)
{
std::call_once(s_initGuard, []() { launcher::InitClient(); });
return Real_ismbbled(c);
}
// this is more of a workaround, till we add SEH table support.
void WINAPI TP_RaiseException(DWORD dwExceptionCode, DWORD dwExceptionFlags, DWORD nNumberOfArguments, const ULONG_PTR* lpArguments)
{
if (dwExceptionCode == 0x406D1388 && !IsDebuggerPresent())
return; // thread naming
RaiseException(dwExceptionCode, dwExceptionFlags, nNumberOfArguments, lpArguments);
}
void InstallStartHook()
{
TP_HOOK_IAT2("Kernel32.dll", "GetStartupInfoW", TP_GetStartupInfoW);
TP_HOOK_IAT2("Kernel32.dll", "RaiseException", TP_RaiseException);
};