I have some code running to detect windows XP which I think should work but what should I replace the '??'s with to detect whether I'm running on Windows XP?
bool IsWindowsXP()
{
bool isWindowsXp = false;
OSVERSIONINFOEX osvi;
ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
if( GetVersionEx((OSVERSIONINFO*)&osvi) )
{
const DWORD MinXpVersion = ??;
const DWORD MaxXpVersion = ??;
if ((osvi.dwPlatformId == VER_PLATFORM_WIN32_NT) &&
(vi.dwMajorVersion >= MinXpVersion) &&
(vi.dwMajorVersion <= MinXpVersion))
{
isWindowsXp = false;
}
}
return isWindowsXp;
}
On the documentation page for the OSVERSIONINFOEX
structure, the two relevant fields say this:
For more information, see Remarks.
Down in the remarks section is a handy table:
Operating system Version number dwMajorVersion dwMinorVersion Other Windows 8 6.2 6 2 OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION Windows Server 2012 6.2 6 2 OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION Windows 7 6.1 6 1 OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION Windows Server 2008 R2 6.1 6 1 OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION Windows Server 2008 6 6 0 OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION Windows Vista 6 6 0 OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION Windows Server 2003 R2 5.2 5 2 GetSystemMetrics(SM_SERVERR2) != 0 Windows Home Server 5.2 5 2 OSVERSIONINFOEX.wSuiteMask & VER_SUITE_WH_SERVER Windows Server 2003 5.2 5 2 GetSystemMetrics(SM_SERVERR2) == 0 Windows XP Prof x64 Ed 5.2 5 2 (OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION) && (SYSTEM_INFO.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64) Windows XP 5.1 5 1 Not applicable Windows 2000 5 5 0 Not applicable
As seen in the table, XP is 5.1.
No need extra library, header, working also on VC++ Express :
BOOL chkxp(){
DWORD version = GetVersion();
DWORD major = (DWORD)(LOBYTE(LOWORD(version)));
DWORD minor = (DWORD)(HIBYTE(LOWORD(version)));
return ((major == 5) && (minor == 1)); // 5.1 is WIN Xp 5.2 is XP x64
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With