windows: Added WIN_IsWindowsXP, for extreme runtime compatibility checks.

Reference Issue #8666.
main
Ryan C. Gordon 2024-01-25 18:18:15 -05:00
parent 56fa22c63b
commit 2144c2ac71
2 changed files with 12 additions and 0 deletions

View File

@ -211,6 +211,15 @@ static BOOL IsWindowsVersionOrGreater(WORD wMajorVersion, WORD wMinorVersion, WO
return retval; return retval;
#endif #endif
// this is the oldest thing we run on (and we may lose support for this in SDL3 at any time!),
// so there's no "OrGreater" as that would always be TRUE. The other functions are here to
// ask "can we support a specific feature?" but this function is here to ask "do we need to do
// something different for an OS version we probably should abandon?" :)
BOOL WIN_IsWindowsXP(void)
{
CHECKWINVER(FALSE, !WIN_IsWindowsVistaOrGreater() && IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WINXP), LOBYTE(_WIN32_WINNT_WINXP), 0));
}
BOOL WIN_IsWindowsVistaOrGreater(void) BOOL WIN_IsWindowsVistaOrGreater(void)
{ {
CHECKWINVER(TRUE, IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_VISTA), LOBYTE(_WIN32_WINNT_VISTA), 0)); CHECKWINVER(TRUE, IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_VISTA), LOBYTE(_WIN32_WINNT_VISTA), 0));

View File

@ -145,6 +145,9 @@ extern void WIN_CoUninitialize(void);
extern HRESULT WIN_RoInitialize(void); extern HRESULT WIN_RoInitialize(void);
extern void WIN_RoUninitialize(void); extern void WIN_RoUninitialize(void);
/* Returns SDL_TRUE if we're running on Windows XP (any service pack). DOES NOT CHECK XP "OR GREATER"! */
extern BOOL WIN_IsWindowsXP(void);
/* Returns SDL_TRUE if we're running on Windows Vista and newer */ /* Returns SDL_TRUE if we're running on Windows Vista and newer */
extern BOOL WIN_IsWindowsVistaOrGreater(void); extern BOOL WIN_IsWindowsVistaOrGreater(void);