// Immersive Early Loader, idea inspired by chromium https://github.com/chromium/chromium/tree/main/chrome/chrome_elf #include 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; }