mirror of
https://github.com/libretro/pcsx2.git
synced 2025-01-22 01:24:58 +00:00
Utilities: remove getversionex dependency
This commit is contained in:
parent
811f9c52c6
commit
d9cee7467f
@ -48,133 +48,24 @@ u64 GetPhysicalMemory()
|
||||
return status.ullTotalPhys;
|
||||
}
|
||||
|
||||
typedef void(WINAPI *PGNSI)(LPSYSTEM_INFO);
|
||||
typedef BOOL(WINAPI *PGPI)(DWORD, DWORD, DWORD, DWORD, PDWORD);
|
||||
|
||||
// Win 10 SDK
|
||||
#ifndef PRODUCT_CORE_N
|
||||
#define PRODUCT_CORE_N 0x00000062
|
||||
#endif
|
||||
#ifndef PRODUCT_CORE
|
||||
#define PRODUCT_CORE 0x00000065
|
||||
#endif
|
||||
#ifndef PRODUCT_PROFESSIONAL_WMC
|
||||
#define PRODUCT_PROFESSIONAL_WMC 0x00000067
|
||||
#endif
|
||||
#ifndef PRODUCT_EDUCATION
|
||||
#define PRODUCT_EDUCATION 0x00000079
|
||||
#endif
|
||||
#ifndef PRODUCT_EDUCATION_N
|
||||
#define PRODUCT_EDUCATION_N 0x0000007A
|
||||
#endif
|
||||
#ifndef PRODUCT_ENTERPRISE_S
|
||||
#define PRODUCT_ENTERPRISE_S 0x0000007D
|
||||
#endif
|
||||
#ifndef PRODUCT_ENTERPRISE_S_N
|
||||
#define PRODUCT_ENTERPRISE_S_N 0x0000007E
|
||||
#endif
|
||||
|
||||
// Calculates the Windows OS Version and install information, and returns it as a
|
||||
// Calculates the Windows OS Version and processor architecture, and returns it as a
|
||||
// human-readable string. :)
|
||||
// (Handy function borrowed from Microsoft's MSDN Online, and reformatted to use wxString.)
|
||||
wxString GetOSVersionString()
|
||||
{
|
||||
wxString retval;
|
||||
|
||||
OSVERSIONINFOEX osvi;
|
||||
SYSTEM_INFO si;
|
||||
PGNSI pGNSI;
|
||||
PGPI pGPI;
|
||||
BOOL bOsVersionInfoEx;
|
||||
DWORD dwType;
|
||||
|
||||
memzero(si);
|
||||
memzero(osvi);
|
||||
|
||||
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
|
||||
// GetVersionEx is deprecated, but we don't use it for version checking anyways
|
||||
#pragma warning(suppress : 4996)
|
||||
if (!(bOsVersionInfoEx = GetVersionEx((OSVERSIONINFO *)&osvi)))
|
||||
return L"GetVersionEx Error!";
|
||||
|
||||
// Call GetNativeSystemInfo if supported or GetSystemInfo otherwise.
|
||||
|
||||
pGNSI = (PGNSI)GetProcAddress(GetModuleHandle(L"kernel32.dll"), "GetNativeSystemInfo");
|
||||
if (NULL != pGNSI)
|
||||
pGNSI(&si);
|
||||
else
|
||||
GetSystemInfo(&si);
|
||||
GetNativeSystemInfo(&si);
|
||||
|
||||
if (!IsWindows8Point1OrGreater())
|
||||
return L"Unsupported Operating System!";
|
||||
|
||||
retval += L"Microsoft ";
|
||||
|
||||
// Test for the specific product.
|
||||
|
||||
if (IsWindows10OrGreater())
|
||||
retval += IsWindowsServer() ? L"Windows Server 2016 " : L"Windows 10 ";
|
||||
retval += IsWindowsServer() ? L"Windows Server 2016" : L"Windows 10";
|
||||
else // IsWindows8Point1OrGreater()
|
||||
retval += IsWindowsServer() ? L"Windows Server 2012 R2 " : L"Windows 8.1 ";
|
||||
|
||||
pGPI = (PGPI)GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")), "GetProductInfo");
|
||||
pGPI(osvi.dwMajorVersion, osvi.dwMinorVersion, 0, 0, &dwType);
|
||||
|
||||
switch (dwType)
|
||||
{
|
||||
// Shared between Windows 8.1 and 10.
|
||||
case PRODUCT_PROFESSIONAL:
|
||||
retval += L"Pro";
|
||||
break;
|
||||
case PRODUCT_PROFESSIONAL_N:
|
||||
retval += L"Pro N";
|
||||
break;
|
||||
case PRODUCT_PROFESSIONAL_WMC:
|
||||
retval += L"Pro with Media Center";
|
||||
break;
|
||||
case PRODUCT_ENTERPRISE:
|
||||
retval += L"Enterprise";
|
||||
break;
|
||||
case PRODUCT_ENTERPRISE_N:
|
||||
retval += L"Enterprise N";
|
||||
break;
|
||||
case PRODUCT_SERVER_FOUNDATION:
|
||||
retval += L"Foundation";
|
||||
break;
|
||||
case PRODUCT_STANDARD_SERVER:
|
||||
retval += L"Standard";
|
||||
break;
|
||||
case PRODUCT_STANDARD_SERVER_CORE:
|
||||
retval += L"Standard (core)";
|
||||
break;
|
||||
case PRODUCT_DATACENTER_SERVER:
|
||||
retval += L"Datacenter";
|
||||
break;
|
||||
case PRODUCT_DATACENTER_SERVER_CORE:
|
||||
retval += L"Datacenter (core)";
|
||||
break;
|
||||
// Windows 10 specific.
|
||||
case PRODUCT_ENTERPRISE_S:
|
||||
retval += L"Enterprise 2015 LTSB";
|
||||
break;
|
||||
case PRODUCT_ENTERPRISE_S_N:
|
||||
retval += L"Enterprise 2015 LTSB N";
|
||||
break;
|
||||
case PRODUCT_EDUCATION:
|
||||
retval += L"Education";
|
||||
break;
|
||||
case PRODUCT_CORE:
|
||||
retval += L"Home";
|
||||
break;
|
||||
case PRODUCT_CORE_N:
|
||||
retval += L"Home N";
|
||||
break;
|
||||
case PRODUCT_EDUCATION_N:
|
||||
retval += L"Education N";
|
||||
break;
|
||||
}
|
||||
|
||||
retval += wxsFormat(L" (build %d)", osvi.dwBuildNumber);
|
||||
retval += IsWindowsServer() ? L"Windows Server 2012 R2" : L"Windows 8.1";
|
||||
|
||||
if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64)
|
||||
retval += L", 64-bit";
|
||||
|
Loading…
x
Reference in New Issue
Block a user