[Ttssh2-commit] [6221] チケット #35744 VS2015の警告除去

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2015年 12月 23日 (水) 22:22:21 JST


Revision: 6221
          http://sourceforge.jp/projects/ttssh2/scm/svn/commits/6221
Author:   yutakapon
Date:     2015-12-23 22:22:21 +0900 (Wed, 23 Dec 2015)
Log Message:
-----------
チケット #35744 VS2015の警告除去

ttlib.c の GetVersionEx() で警告が出ないようにした。

Ticket Links:
------------
    http://sourceforge.jp/projects/ttssh2/tracker/detail/35744

Modified Paths:
--------------
    branches/vs2015_warn/teraterm/common/ttlib.c

-------------- next part --------------
Modified: branches/vs2015_warn/teraterm/common/ttlib.c
===================================================================
--- branches/vs2015_warn/teraterm/common/ttlib.c	2015-12-23 10:47:58 UTC (rev 6220)
+++ branches/vs2015_warn/teraterm/common/ttlib.c	2015-12-23 13:22:21 UTC (rev 6221)
@@ -16,6 +16,29 @@
 // for _ismbblead
 #include <mbctype.h>
 
+/* OS version with GetVersionEx(*1)
+
+                dwMajorVersion   dwMinorVersion    dwPlatformId
+Windows95       4                0                 VER_PLATFORM_WIN32_WINDOWS
+Windows98       4                10                VER_PLATFORM_WIN32_WINDOWS 
+WindowsMe       4                90                VER_PLATFORM_WIN32_WINDOWS
+WindowsNT4.0    4                0                 VER_PLATFORM_WIN32_NT
+Windows2000     5                0                 VER_PLATFORM_WIN32_NT
+WindowsXP       5                1                 VER_PLATFORM_WIN32_NT
+WindowsXPx64    5                2                 VER_PLATFORM_WIN32_NT
+WindowsVista    6                0                 VER_PLATFORM_WIN32_NT
+Windows7        6                1                 VER_PLATFORM_WIN32_NT
+Windows8        6                2                 VER_PLATFORM_WIN32_NT
+Windows8.1(*2)  6                2                 VER_PLATFORM_WIN32_NT
+Windows8.1(*3)  6                3                 VER_PLATFORM_WIN32_NT
+Windows10(*2)   6                2                 VER_PLATFORM_WIN32_NT
+Windows10(*3)   10               0                 VER_PLATFORM_WIN32_NT
+
+(*1) GetVersionEx()\x82\xAA c4996 warning \x82ƂȂ\xE9\x82̂́AVS2013(_MSC_VER=1800) \x82\xA9\x82\xE7\x82ł\xB7\x81B
+(*2) manifest\x82\xC9 supportedOS Id \x82\xF0\x92lj\xC1\x82\xB5\x82Ă\xA2\x82Ȃ\xA2\x81B
+(*3) manifest\x82\xC9 supportedOS Id \x82\xF0\x92lj\xC1\x82\xB5\x82Ă\xA2\x82\xE9\x81B
+*/
+
 // for isInvalidFileNameChar / replaceInvalidFileNameChar
 static char *invalidFileNameChars = "\\/:*?\"<>|";
 
@@ -955,8 +978,28 @@
 	OutputDebugString(tmp);
 }
 
+// OS\x82\xAA WindowsNT4.0 \x82\xA9\x82ǂ\xA4\x82\xA9\x82𔻕ʂ\xB7\x82\xE9\x81B
+//
+// return TRUE:  NT4.0
+//        FALSE: Not NT4.0
 BOOL is_NT4()
 {
+#if (_MSC_VER >= 1800)
+	// VS2013\x88ȏゾ\x82\xC6 GetVersionEx() \x82\xAA\x8Cx\x8D\x90\x82ƂȂ邽\x82߁AVerifyVersionInfo() \x82\xF0\x8Eg\x82\xA4\x81B
+	// \x82\xB5\x82\xA9\x82\xB5\x81AVS2013\x82Ńr\x83\x8B\x83h\x82\xB5\x82\xBD\x83v\x83\x8D\x83O\x83\x89\x83\x80\x82́A\x82\xBB\x82\xE0\x82\xBB\x82\xE0 NT4.0 \x82ł͓\xAE\x8D삵\x82Ȃ\xA2\x82\xBD\x82߁A
+	// \x96\xB3\x8F\xF0\x8C\x8F\x82\xC9 FALSE \x82\xF0\x95Ԃ\xB5\x82Ă\xE0\x82悢\x82\xA9\x82\xE0\x82\xB5\x82\xEA\x82Ȃ\xA2\x81B
+	OSVERSIONINFOEX osvi;
+	DWORDLONG dwlConditionMask = 0;
+	int op = VER_EQUAL;
+	BOOL ret;
+
+	ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
+	osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
+	osvi.dwMajorVersion = 4;
+	VER_SET_CONDITION(dwlConditionMask, VER_MAJORVERSION, op);
+	ret = VerifyVersionInfo(&osvi, VER_MAJORVERSION, dwlConditionMask);
+	return (ret);
+#else
 	OSVERSIONINFO osvi;
 
 	osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
@@ -966,16 +1009,46 @@
 		return TRUE;
 	}
 	return FALSE;
+#endif
 }
 
-int get_OPENFILENAME_SIZE()
+// OS\x82\xAA Windows2000 \x88ȍ~ \x82\xA9\x82ǂ\xA4\x82\xA9\x82𔻕ʂ\xB7\x82\xE9\x81B
+//
+// return TRUE:  
+//        FALSE: 
+BOOL IsWindows2000OrLater(void)
 {
+#if (_MSC_VER >= 1800)
+	// VS2013\x88ȏゾ\x82\xC6 GetVersionEx() \x82\xAA\x8Cx\x8D\x90\x82ƂȂ邽\x82߁AVerifyVersionInfo() \x82\xF0\x8Eg\x82\xA4\x81B
+	// \x82\xB5\x82\xA9\x82\xB5\x81AVS2013\x82Ńr\x83\x8B\x83h\x82\xB5\x82\xBD\x83v\x83\x8D\x83O\x83\x89\x83\x80\x82́A\x82\xBB\x82\xE0\x82\xBB\x82\xE0 2000 \x82ł͓\xAE\x8D삵\x82Ȃ\xA2\x82\xBD\x82߁A
+	// \x96\xB3\x8F\xF0\x8C\x8F\x82\xC9 TRUE \x82\xF0\x95Ԃ\xB5\x82Ă\xE0\x82悢\x82\xA9\x82\xE0\x82\xB5\x82\xEA\x82Ȃ\xA2\x81B
+	OSVERSIONINFOEX osvi;
+	DWORDLONG dwlConditionMask = 0;
+	int op = VER_GREATER_EQUAL;
+	BOOL ret;
+
+	ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
+	osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
+	osvi.dwMajorVersion = 5;
+	VER_SET_CONDITION(dwlConditionMask, VER_MAJORVERSION, op);
+	ret = VerifyVersionInfo(&osvi, VER_MAJORVERSION, dwlConditionMask);
+	return (ret);
+#else
 	OSVERSIONINFO osvi;
 
 	osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
 	GetVersionEx(&osvi);
 	if (osvi.dwPlatformId == VER_PLATFORM_WIN32_NT &&
-	    osvi.dwMajorVersion >= 5) {
+		osvi.dwMajorVersion >= 5) {
+		return TRUE;
+	}
+	return FALSE;
+#endif
+}
+
+int get_OPENFILENAME_SIZE()
+{
+	if (IsWindows2000OrLater()) {
 		return sizeof(OPENFILENAME);
 	}
 	//return OPENFILENAME_SIZE_VERSION_400;



Ttssh2-commit メーリングリストの案内
Back to archive index