فهرست منبع

Added a function to get a Windows NT version

yurambo 10 سال پیش
والد
کامیت
50f1a45106

+ 1 - 0
engine/compilers/VisualStudio 2013/Torque 2D.vcxproj

@@ -1076,6 +1076,7 @@
     <ClInclude Include="..\..\source\platformWin32\winInput_ScriptBinding.h" />
     <ClInclude Include="..\..\source\platformWin32\winMath_ScriptBinding.h" />
     <ClInclude Include="..\..\source\platformWin32\winOGLVideo_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\platformWin32\winVersion.h" />
     <ClInclude Include="..\..\source\platformWin32\winWindow.h" />
     <ClInclude Include="..\..\source\platform\CursorManager_ScriptBinding.h" />
     <ClInclude Include="..\..\source\platform\event.h" />

+ 3 - 0
engine/compilers/VisualStudio 2013/Torque 2D.vcxproj.filters

@@ -3159,6 +3159,9 @@
     <ClInclude Include="..\..\source\2d\sceneobject\SkeletonObject.h">
       <Filter>2d\sceneobject</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\winVersion.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <CustomBuild Include="..\..\source\math\mMath_ASM.asm">

BIN
engine/source/platformWin32/winConsole_ScriptBinding.h


+ 60 - 0
engine/source/platformWin32/winVersion.h

@@ -0,0 +1,60 @@
+//-----------------------------------------------------------------------------
+// Copyright (c) 2013 GarageGames, LLC
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to
+// deal in the Software without restriction, including without limitation the
+// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+// sell copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+// IN THE SOFTWARE.
+//-----------------------------------------------------------------------------
+
+#include <windows.h>
+#include <stdio.h>
+#include <iostream>
+#include <VersionHelpers.h>
+#include <string>
+#include <sstream>
+
+std::string getWinNTVersion()
+{
+	RTL_OSVERSIONINFOEXW *pk_OsVer = new RTL_OSVERSIONINFOEXW;
+	typedef LONG(WINAPI* tRtlGetVersion)(RTL_OSVERSIONINFOEXW*);
+
+	memset(pk_OsVer, 0, sizeof(RTL_OSVERSIONINFOEXW));
+	pk_OsVer->dwOSVersionInfoSize = sizeof(RTL_OSVERSIONINFOEXW);
+
+	HMODULE h_NtDll = GetModuleHandleW(L"ntdll.dll");
+	tRtlGetVersion f_RtlGetVersion = (tRtlGetVersion)GetProcAddress(h_NtDll, "RtlGetVersion");
+
+	if (!f_RtlGetVersion) {
+		delete pk_OsVer;
+		return "0";
+	}
+
+	LONG Status = f_RtlGetVersion(pk_OsVer);
+
+	std::string res = "";
+
+	if (Status == 0) {
+		std::stringstream ss;
+		ss << pk_OsVer->dwMajorVersion << "." << pk_OsVer->dwMinorVersion;
+		res = "OS version: Windows NT " + ss.str();
+	} else
+		res = "0";
+
+	delete pk_OsVer;
+
+	return res;
+}