static XnStatus GetOSName(xnOSInfo* pOSInfo) { if (IsWindows8Point1OrGreater()) sprintf(pOSInfo->csOSName, "%s", "Windows8Point1OrGreater\n"); else if (IsWindows8OrGreater()) sprintf(pOSInfo->csOSName, "%s", "Windows8\n"); else if (IsWindows7SP1OrGreater()) sprintf(pOSInfo->csOSName, "%s", "Windows7SP1\n"); else if (IsWindows7OrGreater()) sprintf(pOSInfo->csOSName, "%s", "Windows7\n"); else if (IsWindowsVistaSP2OrGreater()) sprintf(pOSInfo->csOSName, "%s", "VistaSP2\n"); else if (IsWindowsVistaSP1OrGreater()) sprintf(pOSInfo->csOSName, "%s", "VistaSP1\n"); else if (IsWindowsVistaOrGreater()) sprintf(pOSInfo->csOSName, "%s", "Vista\n"); else if (IsWindowsXPSP3OrGreater()) sprintf(pOSInfo->csOSName, "%s", "XPSP3\n"); else if (IsWindowsXPSP2OrGreater()) sprintf(pOSInfo->csOSName, "%s", "XPSP2\n"); else if (IsWindowsXPSP1OrGreater()) sprintf(pOSInfo->csOSName, "%s", "XPSP1\n"); else if (IsWindowsXPOrGreater()) sprintf(pOSInfo->csOSName, "%s", "XP\n"); else sprintf(pOSInfo->csOSName, "%s", "Unknown win version\n"); return (XN_STATUS_OK); }
void Component_RunPreInit() { #ifdef _M_AMD64 // again, a Win7 SP1 check (Chromium x64 isn't supported below this operating level) if (!IsWindows7SP1OrGreater()) { FatalError("CitizenFX requires Windows 7 SP1 or higher. Please upgrade to this operating system version to run CitizenFX."); } #endif // CEF keeps loading/unloading this - load it ourselves to make the refcount always 1 LoadLibrary(L"bluetoothapis.dll"); // load Chrome dependencies ourselves so that the system won't try loading from other paths LoadLibrary(MakeRelativeCitPath(L"bin/chrome_elf.dll").c_str()); LoadLibrary(MakeRelativeCitPath(L"bin/libEGL.dll").c_str()); LoadLibrary(MakeRelativeCitPath(L"bin/libGLESv2.dll").c_str()); // load the CEF library HMODULE libcef = LoadLibraryW(MakeRelativeCitPath(L"bin/libcef.dll").c_str()); if (!libcef) { MessageBoxW(NULL, L"Could not load bin/libcef.dll.", L"CitizenFX", MB_ICONSTOP | MB_OK); ExitProcess(0); } __HrLoadAllImportsForDll("libcef.dll"); Instance<NUIApp>::Set(new NUIApp()); // instantiate a NUIApp auto selfApp = Instance<NUIApp>::Get(); CefMainArgs args(GetModuleHandle(NULL)); static CefRefPtr<CefApp> app(selfApp); auto schemeHandlerFactory = new NUISchemeHandlerFactory(); schemeHandlerFactory->AddRef(); Instance<NUISchemeHandlerFactory>::Set(schemeHandlerFactory); InitFunctionBase::RunAll(); OnResumeGame.Connect([] () { FinalizeInitNUI(); }); // try to execute as a CEF process int exitCode = CefExecuteProcess(args, app, nullptr); // and exit if we did if (exitCode >= 0) { ExitProcess(0); } }
/* * Place platform-specific startup hacks here. This is the right * place to put code that must be executed early in the launch of any new * server process. Note that this code will NOT be executed when a backend * or sub-bootstrap process is forked, unless we are in a fork/exec * environment (ie EXEC_BACKEND is defined). * * XXX The need for code here is proof that the platform in question * is too brain-dead to provide a standard C execution environment * without help. Avoid adding more here, if you can. */ static void startup_hacks(const char *progname) { /* * Windows-specific execution environment hacking. */ #ifdef WIN32 { WSADATA wsaData; int err; /* Make output streams unbuffered by default */ setvbuf(stdout, NULL, _IONBF, 0); setvbuf(stderr, NULL, _IONBF, 0); /* Prepare Winsock */ err = WSAStartup(MAKEWORD(2, 2), &wsaData); if (err != 0) { write_stderr("%s: WSAStartup failed: %d\n", progname, err); exit(1); } /* In case of general protection fault, don't show GUI popup box */ SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX); #if defined(_M_AMD64) && _MSC_VER == 1800 /*---------- * Avoid crashing in certain floating-point operations if we were * compiled for x64 with MS Visual Studio 2013 and are running on * Windows prior to 7/2008R2 SP1 on an AVX2-capable CPU. * * Ref: https://connect.microsoft.com/VisualStudio/feedback/details/811093/visual-studio-2013-rtm-c-x64-code-generation-bug-for-avx2-instructions *---------- */ if (!IsWindows7SP1OrGreater()) { _set_FMA3_enable(0); } #endif /* defined(_M_AMD64) && _MSC_VER == 1800 */ } #endif /* WIN32 */ /* * Initialize dummy_spinlock, in case we are on a platform where we have * to use the fallback implementation of pg_memory_barrier(). */ SpinLockInit(&dummy_spinlock); }
int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow) { if (!IsWindows7SP1OrGreater()) { MessageBoxW(nullptr, L"You need at least Windows 10.", L"Version Not Supported", MB_OK | MB_ICONERROR); return -1; } DotComInitialize dot; HeapSetInformation(NULL, HeapEnableTerminationOnCorruption, NULL, 0); return MetroWindowRunLoop(); }
void dectectOS() //TODO:Fix this as it doesn't know how to check version { char *osVersion; //if(IsWindows10OrGreater()) osVersion = "Windows 10"; if(IsWindows8Point1OrGreater()) osVersion = "Windows 8.1"; else if(IsWindows8OrGreater()) osVersion = "Windows 8"; else if(IsWindows7SP1OrGreater()) osVersion = "Windows 7 Service Pack 1"; else if(IsWindowsVistaSP2OrGreater()) osVersion = "Windows Vista Service Pack 2"; else if(IsWindowsVistaSP1OrGreater()) osVersion = "Windows Vista Service Pack 1"; else if(IsWindowsVistaOrGreater()) osVersion = "Windows Vista"; else if(IsWindowsXPSP3OrGreater()) osVersion = "Windows XP Service Pack 3"; else if(IsWindowsXPSP2OrGreater()) osVersion = "Windows XP Service Pack 2"; else if(IsWindowsXPSP1OrGreater()) osVersion = "Windows XP Service Pack 1"; else if(IsWindowsXPOrGreater()) osVersion = "Windows XP"; else if(IsWindowsServer()) osVersion = "Windows Server"; printf("\nOS Version : %s", osVersion); }
version get_version() { #if (_MSC_VER >= oVS2015_VER) bool is_server = IsWindowsServer(); //if (IsWindows10OrGreater()) return is_server ? windows::version::win10 : windows::version::win10; if (IsWindows8Point1OrGreater()) return is_server ? windows::version::server_2012_sp1 : windows::version::win8_1; if (IsWindows8OrGreater()) return is_server ? windows::version::server_2012 : windows::version::win8; if (IsWindows7SP1OrGreater()) return is_server ? windows::version::server_2008r2_sp1 : windows::version::win7_sp1; if (IsWindows7OrGreater()) return is_server ? windows::version::server_2008r2 : windows::version::win7; if (IsWindowsVistaSP2OrGreater()) return is_server ? windows::version::server_2008_sp2 : windows::version::vista_sp2; if (IsWindowsVistaSP1OrGreater()) return is_server ? windows::version::server_2008_sp1 : windows::version::vista_sp1; if (IsWindowsVistaOrGreater()) return is_server ? windows::version::server_2008 : windows::version::vista; if (IsWindowsXPSP3OrGreater()) return is_server ? windows::version::xp : windows::version::xp; if (IsWindowsXPSP2OrGreater()) return is_server ? windows::version::xp_sp1 : windows::version::xp_sp1; if (IsWindowsXPSP1OrGreater()) return is_server ? windows::version::xp_sp2 : windows::version::xp_sp2; if (IsWindowsXPOrGreater()) return is_server ? windows::version::xp_sp3 : windows::version::xp_sp3; if (IsWindowsVersionOrGreater(5, 2, 0)) return is_server ? windows::version::server_2003 : windows::version::xp_pro_64bit; if (IsWindowsVersionOrGreater(5, 0, 0)) return is_server ? windows::version::win2000 : windows::version::win2000; #else OSVERSIONINFOEX osvi; osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); if (GetVersionEx((OSVERSIONINFO*)&osvi)) { if (osvi.dwMajorVersion == 6) { if (osvi.dwMinorVersion == 2) { if (osvi.wServicePackMajor == 1) return osvi.wProductType == VER_NT_WORKSTATION ? version::win8_1 : version::server_2012_sp1; else if (osvi.wServicePackMajor == 0) return osvi.wProductType == VER_NT_WORKSTATION ? version::win8 : version::server_2012; } else if (osvi.dwMinorVersion == 1) { if (osvi.wServicePackMajor == 0) return osvi.wProductType == VER_NT_WORKSTATION ? version::win7 : version::server_2008r2; else if (osvi.wServicePackMajor == 1) return osvi.wProductType == VER_NT_WORKSTATION ? version::win7_sp1 : version::server_2008r2_sp1; } else if (osvi.dwMinorVersion == 0) { if (osvi.wServicePackMajor == 2) return osvi.wProductType == VER_NT_WORKSTATION ? version::vista_sp2 : version::server_2008_sp2; else if (osvi.wServicePackMajor == 1) return osvi.wProductType == VER_NT_WORKSTATION ? version::vista_sp1 : version::server_2008_sp1; else if (osvi.wServicePackMajor == 0) return osvi.wProductType == VER_NT_WORKSTATION ? version::vista : version::server_2008; } } else if (osvi.dwMajorVersion == 5) { if (osvi.dwMinorVersion == 2) { SYSTEM_INFO si; GetSystemInfo(&si); if ((osvi.wProductType == VER_NT_WORKSTATION) && (si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64)) return version::xp_pro_64bit; else if (osvi.wSuiteMask & 0x00008000 /*VER_SUITE_WH_SERVER*/) return version::home_server; else return GetSystemMetrics(SM_SERVERR2) ? version::server_2003r2 : version::server_2003; } else if (osvi.dwMinorVersion == 1) return version::xp; else if (osvi.dwMinorVersion == 0) return version::win2000; } } #endif return version::unknown; }