WINVER, _WIN32_WINNT の設定値

  • 2
    いいね
  • 0
    コメント

targetver.h に定義する、WindowsAPIバージョン設定値の一覧表です。

https://msdn.microsoft.com/en-us/library/aa383745(VS.85).aspx
https://msdn.microsoft.com/library/windows/desktop/aa383745
https://msdn.microsoft.com/library/6sehtctf.aspx
http://stackoverflow.com/questions/34235151/get-windows-version
より

バージョン定数一覧

_WIN32_WINNT と WINVER への設定値一覧

Minimum system required Minimum value for _WIN32_WINNT and WINVER
Windows 10 _WIN32_WINNT_WIN10 (0x0A00)
Windows 8.1 _WIN32_WINNT_WINBLUE (0x0603)
Windows 8 _WIN32_WINNT_WIN8 (0x0602)
Windows 7 _WIN32_WINNT_WIN7 (0x0601)
Windows Server 2008 _WIN32_WINNT_WS08 (0x0600)
Windows Vista _WIN32_WINNT_VISTA (0x0600)
Windows Server 2003 with SP1, Windows XP with SP2 _WIN32_WINNT_WS03 (0x0502)
Windows Server 2003, Windows XP _WIN32_WINNT_WINXP (0x0501)
Windows 2000 _WIN32_WINNT_WIN2K (0x0500)
Windows NT 4.0 _WIN32_WINNT_NT4 (0x0400)

_WIN32_IE への設定値一覧

Minimum version required Minimum value of _WIN32_IE
Internet Explorer 10.0 _WIN32_IE_IE100 (0x0A00)
Internet Explorer 9.0 _WIN32_IE_IE90 (0x0900)
Internet Explorer 8.0 _WIN32_IE_IE80 (0x0800)
Internet Explorer 7.0 _WIN32_IE_IE70 (0x0700)
Internet Explorer 6.0 SP2 _WIN32_IE_IE60SP2 (0x0603)
Internet Explorer 6.0 SP1 _WIN32_IE_IE60SP1 (0x0601)
Internet Explorer 6.0 _WIN32_IE_IE60 (0x0600)
Internet Explorer 5.5 _WIN32_IE_IE55 (0x0550)
Internet Explorer 5.01 _WIN32_IE_IE501 (0x0501)
Internet Explorer 5.0, 5.0a, 5.0b _WIN32_IE_IE50 (0x0500)

_WIN32_WINNT を設定すれば、sdkddkver.h にて残りのバージョン定数 WINVER,_WIN32_IE を設定してくれる。 下記に、そのコードを抜粋する。

VS2015 の Windows Kits\8.1\Include\shared\sdkddkver.h から抜粋

sdkddkver.h
#define _WIN32_WINNT_NT4                    0x0400
#define _WIN32_WINNT_WIN2K                  0x0500
#define _WIN32_WINNT_WINXP                  0x0501
#define _WIN32_WINNT_WS03                   0x0502
#define _WIN32_WINNT_WIN6                   0x0600
#define _WIN32_WINNT_VISTA                  0x0600
#define _WIN32_WINNT_WS08                   0x0600
#define _WIN32_WINNT_LONGHORN               0x0600
#define _WIN32_WINNT_WIN7                   0x0601
#define _WIN32_WINNT_WIN8                   0x0602
#define _WIN32_WINNT_WINBLUE                0x0603

#ifndef WINVER
  #ifdef _WIN32_WINNT
    // set WINVER based on _WIN32_WINNT
    #define WINVER          _WIN32_WINNT
  #else
    #define WINVER          0x0603
  #endif
#endif

#ifndef _WIN32_IE
  #ifdef _WIN32_WINNT
    // set _WIN32_IE based on _WIN32_WINNT
    #if (_WIN32_WINNT <= _WIN32_WINNT_NT4)
      #define _WIN32_IE       _WIN32_IE_IE50
    #elif (_WIN32_WINNT <= _WIN32_WINNT_WIN2K)
      #define _WIN32_IE       _WIN32_IE_IE501
    #elif (_WIN32_WINNT <= _WIN32_WINNT_WINXP)
      #define _WIN32_IE       _WIN32_IE_IE60
    #elif (_WIN32_WINNT <= _WIN32_WINNT_WS03)
      #define _WIN32_IE       _WIN32_IE_WS03
    #elif (_WIN32_WINNT <= _WIN32_WINNT_VISTA)
      #define _WIN32_IE       _WIN32_IE_LONGHORN
    #elif (_WIN32_WINNT <= _WIN32_WINNT_WIN7)
      #define _WIN32_IE       _WIN32_IE_WIN7
    #elif (_WIN32_WINNT <= _WIN32_WINNT_WIN8)
      #define _WIN32_IE       _WIN32_IE_WIN8
    #else
      #define _WIN32_IE       0x0A00
    #endif
  #else
    #define _WIN32_IE       0x0A00
  #endif
#endif

ビルド時に定数内容を確認するためのコード片

checkver.h
#if 1 // check WINVER,_WIN32_*.
  #define STRING2(x) #x
  #define STRING(x) STRING2(x)
  #pragma message("WINVER        : " STRING(WINVER))
  #pragma message("_WIN32_WINNT  : " STRING(_WIN32_WINNT))
//  #pragma message("_WIN32_WINDOWS: " STRING(_WIN32_WINDOWS)) // Windows9x only
  #pragma message("_WIN32_IE     : " STRING(_WIN32_IE))
#endif

_MSC_VER

こちらを参照
http://qiita.com/yumetodo/items/8c112fca0a8e6b47072d