mirror of
https://github.com/Jous99/F4MP.git
synced 2026-01-12 16:30:53 +01:00
45 lines
1.1 KiB
C++
45 lines
1.1 KiB
C++
|
|
// Immersive Early Loader, idea inspired by chromium https://github.com/chromium/chromium/tree/main/chrome/chrome_elf
|
|
#include <Windows.h>
|
|
|
|
namespace
|
|
{
|
|
// FARPROC addr = GetProcAddress(ntdll, "wine_get_version");
|
|
constexpr wchar_t kUSVFSDllName[] = L"usvfs_x64.dll";
|
|
|
|
bool g_WasUSVFSActive = false;
|
|
} // namespace
|
|
|
|
#define ELF_EXP __declspec(dllexport)
|
|
|
|
ELF_EXP bool EarlyInstallSucceeded()
|
|
{
|
|
return !g_WasUSVFSActive;
|
|
}
|
|
|
|
#undef ELF_EXP
|
|
|
|
static void InstallEarlyHooks()
|
|
{
|
|
}
|
|
|
|
// create remote thread sentinel
|
|
|
|
// Warning: The OS loader lock is held during DllMain. Be careful.
|
|
// Don't invoke any functions which might trigger LoadLibrary.
|
|
// https://msdn.microsoft.com/en-us/library/windows/desktop/dn633971.aspx
|
|
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved)
|
|
{
|
|
switch (fdwReason)
|
|
{
|
|
case DLL_PROCESS_ATTACH:
|
|
{
|
|
// the goal here is to check if mo2 usvfs dll was loaded yet.
|
|
g_WasUSVFSActive = GetModuleHandleW(kUSVFSDllName);
|
|
InstallEarlyHooks();
|
|
break;
|
|
}
|
|
case DLL_PROCESS_DETACH: break;
|
|
}
|
|
return TRUE;
|
|
}
|