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;