2018年8月22日水曜日

atlapp.h warning C4996: 'GetVersionExW': が古い形式として宣言されました。

WTL(Windows Template Library) を使用していて、ワーニングで怒られた。 以下のように修正を施す。
#if 1600 <= _MSC_VER
#include 
#endif

// Windows version helper
inline bool AtlIsOldWindows()
{
#if 1600 <= _MSC_VER
  return !IsWindowsVistaOrGreater();
#else
  OSVERSIONINFO ovi = { 0 };
  ovi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
  BOOL bRet = ::GetVersionEx(&ovi);
  return (!bRet || !((ovi.dwMajorVersion >= 5) || (ovi.dwMajorVersion == 4 && ovi.dwMinorVersion >= 90)));
#endif
}

inline bool IsVista()
{
#if 1600 <= _MSC_VER
  return IsWindowsVistaOrGreater() && !IsWindows7OrGreater();
#else
  OSVERSIONINFO ovi = { sizeof(OSVERSIONINFO) };
  BOOL bRet = ::GetVersionEx(&ovi);
  return ((bRet != FALSE) && (ovi.dwMajorVersion >= 6));
#endif
}
ただし、WindowsSDK が古いと、VersionHelpers.h が含まれていないので、注意が必要。