diff --git a/.gitignore b/.gitignore
index 7a4f8f8..2aec184 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,15 +1,16 @@
-*.exe
+*.db
+*.dcu
+*.ddp
*.dll
+*.exe
+*.local.*
*.opendb
*.opensdf
*.sdf
*.suo
*.user
-*.dcu
-*.ddp
-*.local.*
+/.vs
/bin
/obj
/out
/tmp
-*.db
diff --git a/MUtilities_VS2017.sln b/MUtilities_VS2017.sln
new file mode 100644
index 0000000..17dcacf
--- /dev/null
+++ b/MUtilities_VS2017.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+VisualStudioVersion = 15.0.26430.16
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MUtilities", "MUtilities_VS2017.vcxproj", "{55405FE1-149F-434C-9D72-4B64348D2A08}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|x86 = Debug|x86
+ Release_Static|x86 = Release_Static|x86
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {55405FE1-149F-434C-9D72-4B64348D2A08}.Debug|x86.ActiveCfg = Debug|Win32
+ {55405FE1-149F-434C-9D72-4B64348D2A08}.Debug|x86.Build.0 = Debug|Win32
+ {55405FE1-149F-434C-9D72-4B64348D2A08}.Release_Static|x86.ActiveCfg = Release_Static|Win32
+ {55405FE1-149F-434C-9D72-4B64348D2A08}.Release_Static|x86.Build.0 = Release_Static|Win32
+ {55405FE1-149F-434C-9D72-4B64348D2A08}.Release|x86.ActiveCfg = Release|Win32
+ {55405FE1-149F-434C-9D72-4B64348D2A08}.Release|x86.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/MUtilities_VS2017.vcxproj b/MUtilities_VS2017.vcxproj
new file mode 100644
index 0000000..7f8673d
--- /dev/null
+++ b/MUtilities_VS2017.vcxproj
@@ -0,0 +1,238 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release_Static
+ Win32
+
+
+ Release
+ Win32
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ "$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\$(ProjectName)\MOC_%(Filename).cpp" "%(FullPath)"
+ MOC "$(SolutionDir)tmp\$(ProjectName)\MOC_%(Filename).cpp"
+ $(SolutionDir)tmp\$(ProjectName)\MOC_%(Filename).cpp;%(Outputs)
+ "$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\$(ProjectName)\MOC_%(Filename).cpp" "%(FullPath)"
+ MOC "$(SolutionDir)tmp\$(ProjectName)\MOC_%(Filename).cpp"
+ $(SolutionDir)tmp\$(ProjectName)\MOC_%(Filename).cpp;%(Outputs)
+ "$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\$(ProjectName)\MOC_%(Filename).cpp" "%(FullPath)"
+ MOC "$(SolutionDir)tmp\$(ProjectName)\MOC_%(Filename).cpp"
+ $(SolutionDir)tmp\$(ProjectName)\MOC_%(Filename).cpp;%(Outputs)
+
+
+
+
+
+
+ Document
+ "$(QTDIR)\bin\rcc.exe" -o "$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp" -name "%(Filename)" "%(FullPath)"
+ "$(QTDIR)\bin\rcc.exe" -o "$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp" -name "%(Filename)" "%(FullPath)"
+ "$(QTDIR)\bin\rcc.exe" -o "$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp" -name "%(Filename)" "%(FullPath)"
+ RCC "$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp"
+ RCC "$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp"
+ RCC "$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp"
+ $(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp;%(Outputs)
+ $(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp;%(Outputs)
+ $(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp;%(Outputs)
+
+
+
+ {55405FE1-149F-434C-9D72-4B64348D2A08}
+ Win32Proj
+ MUtilities
+ MUtilities
+ 8.1
+
+
+
+ DynamicLibrary
+ true
+ v141_xp
+ Unicode
+
+
+ DynamicLibrary
+ false
+ v141_xp
+ true
+ Unicode
+
+
+ StaticLibrary
+ false
+ v141_xp
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(SolutionDir)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\obj\$(Platform)\$(Configuration)\$(ProjectName)\
+ MUtils32-1
+
+
+ $(SolutionDir)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\obj\$(Platform)\$(Configuration)\$(ProjectName)\
+ MUtils32-1
+
+
+ $(SolutionDir)\bin\$(Platform)\$(Configuration)\
+ $(SolutionDir)\obj\$(Platform)\$(Configuration)\$(ProjectName)\
+ MUtils32-1
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ WIN32;MUTILS_DLL_EXPORT;_DEBUG;_LIB;QT_GUI_LIB;QT_CORE_LIB;QT_THREAD_SUPPORT;QT_DLL;QT_DEBUG;%(PreprocessorDefinitions)
+ MultiThreadedDebugDLL
+ NoExtensions
+ $(ProjectDir)\include;$(QTDIR)\include;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(SolutionDir)\..\Prerequisites\VisualLeakDetector\include;%(AdditionalIncludeDirectories)
+ true
+ Disabled
+ Default
+ ProgramDatabase
+
+
+ Windows
+ true
+ $(SolutionDir)\..\Prerequisites\Qt4\$(PlatformToolset)\Debug\lib;$(SolutionDir)\..\Prerequisites\VisualLeakDetector\lib\Win32
+ QtCored4.lib;QtGuid4.lib;Winmm.lib;Psapi.lib;Sensapi.lib;PowrProf.lib;Shlwapi.lib;Version.lib;%(AdditionalDependencies)
+
+
+
+
+ Level3
+ NotUsing
+ Full
+ true
+ true
+ WIN32;MUTILS_DLL_EXPORT;NDEBUG;_LIB;QT_GUI_LIB;QT_CORE_LIB;QT_THREAD_SUPPORT;QT_DLL;QT_NO_DEBUG;%(PreprocessorDefinitions)
+ MultiThreadedDLL
+ NoExtensions
+ AnySuitable
+ Speed
+ true
+ false
+ Fast
+ false
+ $(ProjectDir)\include;$(QTDIR)\include;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(SolutionDir)\..\Prerequisites\VisualLeakDetector\include;%(AdditionalIncludeDirectories)
+ true
+ false
+ false
+ false
+ true
+
+
+ Windows
+ true
+ true
+ $(SolutionDir)\..\Prerequisites\Qt4\$(PlatformToolset)\Shared\lib;$(SolutionDir)\..\Prerequisites\VisualLeakDetector\lib\Win32
+ notelemetry.obj;QtCore4.lib;QtGui4.lib;Winmm.lib;Psapi.lib;Sensapi.lib;PowrProf.lib;Shlwapi.lib;Version.lib;%(AdditionalDependencies)
+ false
+ LinkVerboseLib
+
+
+
+
+ Level3
+ NotUsing
+ Full
+ true
+ true
+ WIN32;MUTILS_STATIC_LIB;NDEBUG;_LIB;QT_GUI_LIB;QT_CORE_LIB;QT_THREAD_SUPPORT;QT_NODLL;QT_NO_DEBUG;%(PreprocessorDefinitions)
+ MultiThreaded
+ NoExtensions
+ AnySuitable
+ Speed
+ true
+ false
+ Fast
+ false
+ $(ProjectDir)\include;$(QTDIR)\include;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(SolutionDir)\..\Prerequisites\VisualLeakDetector\include;%(AdditionalIncludeDirectories)
+ true
+ false
+ false
+ false
+ true
+
+
+ Windows
+ true
+ true
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MUtilities_VS2017.vcxproj.filters b/MUtilities_VS2017.vcxproj.filters
new file mode 100644
index 0000000..9f18a2b
--- /dev/null
+++ b/MUtilities_VS2017.vcxproj.filters
@@ -0,0 +1,188 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hh;hpp;hxx;hm;inl;inc;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
+
+
+ {d47fbdba-5e24-460a-bba8-824ea0fe874c}
+
+
+ {458f07b7-5414-4e9c-a599-222196e8d2e8}
+
+
+ {d5bcdb46-27a3-4772-86b4-1b30e02a30cc}
+
+
+ {6261ec8d-8041-495b-bddf-6fe07c11c952}
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files\3rd Party
+
+
+ Source Files\Generated
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files\3rd Party
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files\Generated
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files\3rd Party
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+ Header Files
+
+
+ Public Headers
+
+
+ Public Headers
+
+
+ Public Headers
+
+
+ Public Headers
+
+
+ Header Files
+
+
+ Public Headers
+
+
+ Public Headers
+
+
+ Public Headers
+
+
+ Public Headers
+
+
+ Public Headers
+
+
+ Header Files\3rd Party
+
+
+ Header Files\3rd Party
+
+
+ Public Headers
+
+
+ Public Headers
+
+
+ Public Headers
+
+
+ Header Files\3rd Party
+
+
+ Public Headers
+
+
+ Public Headers
+
+
+ Header Files\3rd Party
+
+
+ Public Headers
+
+
+ Header Files
+
+
+ Public Headers
+
+
+
+
+ Public Headers
+
+
+ Resource Files
+
+
+
\ No newline at end of file
diff --git a/include/MUtils/Version.h b/include/MUtils/Version.h
index 4632fbd..81dd6c4 100644
--- a/include/MUtils/Version.h
+++ b/include/MUtils/Version.h
@@ -66,7 +66,13 @@ namespace MUtils
#error Compiler is not supported!
#endif
#elif defined(_MSC_VER)
- #if (_MSC_VER == 1900)
+ #if (_MSC_VER == 1910)
+ #if ((_MSC_FULL_VER >= 191025017) && (_MSC_FULL_VER <= 191025019))
+ static const char *const COMPILER_VERS = "MSVC 2017.2";
+ #else
+ #error Compiler version is not supported yet!
+ #endif
+ #elif (_MSC_VER == 1900)
#if (_MSC_FULL_VER == 190023026)
static const char *const COMPILER_VERS = "MSVC 2015";
#elif (_MSC_FULL_VER == 190023506)
diff --git a/src/CPUFeatures_Win32.cpp b/src/CPUFeatures_Win32.cpp
index b72f071..3f96e47 100644
--- a/src/CPUFeatures_Win32.cpp
+++ b/src/CPUFeatures_Win32.cpp
@@ -23,6 +23,9 @@
#define WIN32_LEAN_AND_MEAN 1
#include
+//ASM
+#include
+
//MUtils
#include
#include