Files
reactos/dll/appcompat/shims/layer/globalmemorystatus.c
T
Mark Jansen 7c05a10a90 [ACLAYERS] Add shim for GlobalMemoryStatus
This is needed by games like Half-life that won't start without it.
2026-06-21 01:33:39 +02:00

40 lines
1.1 KiB
C

/*
* PROJECT: ReactOS 'Layers' Shim library
* LICENSE: MIT (https://spdx.org/licenses/MIT)
* PURPOSE: GlobalMemoryStatus2GB shim
* COPYRIGHT: Copyright 2026 Mark Jansen <[email protected]>
*/
#define WIN32_NO_STATUS
#include <windef.h>
#include <winbase.h>
#include <shimlib.h>
typedef VOID(NTAPI *GLOBALMEMORYSTATUSPROC)(LPMEMORYSTATUS lpBuffer);
#define SHIM_NS GlobalMemoryStatus2GB
#include <setup_shim.inl>
VOID NTAPI
SHIM_OBJ_NAME(APIHook_GlobalMemoryStatus)(LPMEMORYSTATUS lpBuffer)
{
CALL_SHIM(0, GLOBALMEMORYSTATUSPROC)(lpBuffer);
if (lpBuffer->dwTotalPhys > 0x3FFFFFFF)
lpBuffer->dwTotalPhys = 0x3FFFFFFF;
if (lpBuffer->dwAvailPhys > 0x3FFFFFFF)
lpBuffer->dwAvailPhys = 0x3FFFFFFF;
if (lpBuffer->dwTotalPageFile > 0x7FFFFFFF)
lpBuffer->dwTotalPageFile = 0x7FFFFFFF;
if (lpBuffer->dwAvailPageFile > 0x3FFFFFFF)
lpBuffer->dwAvailPageFile = 0x3FFFFFFF;
}
#define SHIM_NUM_HOOKS 1
#define SHIM_SETUP_HOOKS SHIM_HOOK(0, "KERNEL32.DLL", "GlobalMemoryStatus", SHIM_OBJ_NAME(APIHook_GlobalMemoryStatus))
#include <implement_shim.inl>