xref: /reactos/sdk/include/psdk/sdkddkver.h (revision e241c87e)
1 /* ReactOS PSDK/DDK
2 
3 This file is in the public domain.
4 
5 Header Name:
6 
7     sdkddkver.h
8 
9 Abstract:
10 
11     Version definitions for SDK and DDK.
12 
13 --*/
14 
15 #pragma once
16 #ifndef _INC_SDKDDKVER
17 #define _INC_SDKDDKVER
18 
19 /* _WIN32_WINNT */
20 #define _WIN32_WINNT_NT4                    0x0400
21 #define _WIN32_WINNT_WIN2K                  0x0500
22 #define _WIN32_WINNT_WINXP                  0x0501
23 #define _WIN32_WINNT_WS03                   0x0502
24 #define _WIN32_WINNT_WIN6                   0x0600
25 #define _WIN32_WINNT_VISTA                  0x0600
26 #define _WIN32_WINNT_WS08                   0x0600
27 #define _WIN32_WINNT_LONGHORN               0x0600
28 #define _WIN32_WINNT_WIN7                   0x0601
29 #define _WIN32_WINNT_WIN8                   0x0602
30 #define _WIN32_WINNT_WINBLUE                0x0603
31 #define _WIN32_WINNT_WINTHRESHOLD           0x0A00
32 #define _WIN32_WINNT_WIN10                  0x0A00
33 
34 /* _WIN32_IE */
35 #define _WIN32_IE_IE20                      0x0200
36 #define _WIN32_IE_IE30                      0x0300
37 #define _WIN32_IE_IE302                     0x0302
38 #define _WIN32_IE_IE40                      0x0400
39 #define _WIN32_IE_IE401                     0x0401
40 #define _WIN32_IE_IE50                      0x0500
41 #define _WIN32_IE_IE501                     0x0501
42 #define _WIN32_IE_IE55                      0x0550
43 #define _WIN32_IE_IE60                      0x0600
44 #define _WIN32_IE_IE60SP1                   0x0601
45 #define _WIN32_IE_IE60SP2                   0x0603
46 #define _WIN32_IE_IE70                      0x0700
47 #define _WIN32_IE_IE80                      0x0800
48 #define _WIN32_IE_IE90                      0x0900
49 #define _WIN32_IE_IE100                     0x0A00
50 #define _WIN32_IE_IE110                     0x0A00
51 
52 /* Mappings Between IE Version  and Windows Version */
53 #define _WIN32_IE_NT4                       _WIN32_IE_IE20
54 #define _WIN32_IE_NT4SP1                    _WIN32_IE_IE20
55 #define _WIN32_IE_NT4SP2                    _WIN32_IE_IE20
56 #define _WIN32_IE_NT4SP3                    _WIN32_IE_IE302
57 #define _WIN32_IE_NT4SP4                    _WIN32_IE_IE401
58 #define _WIN32_IE_NT4SP5                    _WIN32_IE_IE401
59 #define _WIN32_IE_NT4SP6                    _WIN32_IE_IE50
60 #define _WIN32_IE_WIN98                     _WIN32_IE_IE401
61 #define _WIN32_IE_WIN98SE                   _WIN32_IE_IE50
62 #define _WIN32_IE_WINME                     _WIN32_IE_IE55
63 #define _WIN32_IE_WIN2K                     _WIN32_IE_IE501
64 #define _WIN32_IE_WIN2KSP1                  _WIN32_IE_IE501
65 #define _WIN32_IE_WIN2KSP2                  _WIN32_IE_IE501
66 #define _WIN32_IE_WIN2KSP3                  _WIN32_IE_IE501
67 #define _WIN32_IE_WIN2KSP4                  _WIN32_IE_IE501
68 #define _WIN32_IE_XP                        _WIN32_IE_IE60
69 #define _WIN32_IE_XPSP1                     _WIN32_IE_IE60SP1
70 #define _WIN32_IE_XPSP2                     _WIN32_IE_IE60SP2
71 #define _WIN32_IE_WS03                      0x0602
72 #define _WIN32_IE_WS03SP1                   _WIN32_IE_IE60SP2
73 #define _WIN32_IE_WIN6                      _WIN32_IE_IE70
74 #define _WIN32_IE_LONGHORN                  _WIN32_IE_IE70
75 #define _WIN32_IE_WIN7                      _WIN32_IE_IE80
76 #define _WIN32_IE_WIN8                      _WIN32_IE_IE100
77 #define _WIN32_IE_WINBLUE                   _WIN32_IE_IE100
78 #define _WIN32_IE_WINTHRESHOLD              _WIN32_IE_IE110
79 #define _WIN32_IE_WIN10                     _WIN32_IE_IE110
80 
81 /* NTDDI_VERSION */
82 #define NTDDI_WIN2K                         0x05000000      // Windows 2000
83 #define NTDDI_WIN2KSP1                      0x05000100
84 #define NTDDI_WIN2KSP2                      0x05000200
85 #define NTDDI_WIN2KSP3                      0x05000300
86 #define NTDDI_WIN2KSP4                      0x05000400
87 #define NTDDI_WINXP                         0x05010000      // Windows XP
88 #define NTDDI_WINXPSP1                      0x05010100
89 #define NTDDI_WINXPSP2                      0x05010200
90 #define NTDDI_WINXPSP3                      0x05010300
91 #define NTDDI_WINXPSP4                      0x05010400
92 #define NTDDI_WS03                          0x05020000      // Windows Server 2003
93 #define NTDDI_WS03SP1                       0x05020100
94 #define NTDDI_WS03SP2                       0x05020200
95 #define NTDDI_WS03SP3                       0x05020300
96 #define NTDDI_WS03SP4                       0x05020400
97 #define NTDDI_WIN6                          0x06000000      // Windows Vista
98 #define NTDDI_WIN6SP1                       0x06000100
99 #define NTDDI_WIN6SP2                       0x06000200
100 #define NTDDI_WIN6SP3                       0x06000300
101 #define NTDDI_WIN6SP4                       0x06000400
102 #define NTDDI_LONGHORN                      NTDDI_WIN6
103 #define NTDDI_VISTA                         NTDDI_WIN6
104 #define NTDDI_VISTASP1                      NTDDI_WIN6SP1
105 #define NTDDI_VISTASP2                      NTDDI_WIN6SP2
106 #define NTDDI_VISTASP3                      NTDDI_WIN6SP3
107 #define NTDDI_VISTASP4                      NTDDI_WIN6SP4
108 #define NTDDI_WS08                          NTDDI_WIN6SP1   // Windows Server 2008
109 #define NTDDI_WS08SP2                       NTDDI_WIN6SP2
110 #define NTDDI_WS08SP3                       NTDDI_WIN6SP3
111 #define NTDDI_WS08SP4                       NTDDI_WIN6SP4
112 #define NTDDI_WIN7                          0x06010000      // Windows 7
113 #define NTDDI_WIN8                          0x06020000      // Windows 8
114 #define NTDDI_WINBLUE                       0x06030000      // Windows 8.1
115 #define NTDDI_WINTHRESHOLD                  0x0A000000      // Windows 10.0.10240 / 1507 / Threshold 1
116 #define NTDDI_WIN10                         0x0A000000
117 #define NTDDI_WIN10_TH2                     0x0A000001      // Windows 10.0.10586 / 1511 / Threshold 2
118 #define NTDDI_WIN10_RS1                     0x0A000002      // Windows 10.0.14393 / 1607 / Redstone 1
119 #define NTDDI_WIN10_RS2                     0x0A000003      // Windows 10.0.15063 / 1703 / Redstone 2
120 #define NTDDI_WIN10_RS3                     0x0A000004      // Windows 10.0.16299 / 1709 / Redstone 3
121 #define NTDDI_WIN10_RS4                     0x0A000005      // Windows 10.0.17134 / 1803 / Redstone 4
122 #define NTDDI_WIN10_RS5                     0x0A000006      // Windows 10.0.17763 / 1809 / Redstone 5
123 #define NTDDI_WIN10_19H1                    0x0A000007      // Windows 10.0.18362 / 1903 / 19H1 "Titanium"
124                                                             //         10.0.18363 / Vanadium
125 #define NTDDI_WIN10_VB                      0x0A000008      // Windows 10.0.19041 / 2004 / Vibranium
126 #define NTDDI_WIN10_MN                      0x0A000009      // Windows 10.0.19042 / 20H2 / Manganese
127 #define NTDDI_WIN10_FE                      0x0A00000A      // Windows 10.0.19043 / 21H1 / Ferrum
128 #define NTDDI_WIN10_CO                      0x0A00000B      // Windows 10.0.19044 / 21H2 / Cobalt
129 #define NTDDI_WIN11_CO                      NTDDI_WIN10_CO  // Windows 10.0.22000 / 21H2 / Cobalt
130 #define NTDDI_WIN11                         NTDDI_WIN11_CO
131 #define NTDDI_WIN10_NI                      0x0A00000C      // Windows 10.0.22621 / 22H2 / Nickel
132 #define NTDDI_WIN11_NI                      NTDDI_WIN10_NI
133 #define NTDDI_WIN10_CU                      0x0A00000D      // Windows 10.0.22621 / 22H2 / Copper
134 // NTDDI_WIN11_CU
135 
136 /* Version Fields in NTDDI_VERSION */
137 #define OSVERSION_MASK                      0xFFFF0000UL
138 #define SPVERSION_MASK                      0x0000FF00UL
139 #define SUBVERSION_MASK                     0x000000FFUL
140 
141 /* Macros to Extract Version Fields From NTDDI_VERSION */
142 #define OSVER(Version)                      ((Version) & OSVERSION_MASK)
143 #define SPVER(Version)                      (((Version) & SPVERSION_MASK) >> 8)
144 #define SUBVER(Version)                     (((Version) & SUBVERSION_MASK))
145 
146 /* Macros to get the NTDDI for a given WIN32 */
147 #if (_WIN32_WINNT == _WIN32_WINNT_WS03)
148 #define NTDDI_VERSION_FROM_WIN32_WINNT(Version) NTDDI_WS03SP1
149 #else
150 #define NTDDI_VERSION_FROM_WIN32_WINNT2(Version) Version##0000
151 #define NTDDI_VERSION_FROM_WIN32_WINNT(Version)  NTDDI_VERSION_FROM_WIN32_WINNT2(Version)
152 #endif
153 
154 /* Select Default _WIN32_WINNT Value */
155 #if !defined(_WIN32_WINNT) && !defined(_CHICAGO_)
156 #define _WIN32_WINNT    0x0600 /* 0x0502 */
157 #endif
158 
159 /* Choose NTDDI Version */
160 #ifndef NTDDI_VERSION
161 #ifdef _WIN32_WINNT
162 #define NTDDI_VERSION   NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT)
163 #else
164 #define NTDDI_VERSION   0x06000000 /* NTDDI_WS03SP4 */
165 #endif
166 #endif
167 
168 /* Choose WINVER Value */
169 #ifndef WINVER
170 #ifdef _WIN32_WINNT
171 #define WINVER          _WIN32_WINNT
172 #else
173 #define WINVER          0x0600
174 #endif
175 #endif
176 
177 /* Choose IE Version */
178 #ifndef _WIN32_IE
179 #ifdef _WIN32_WINNT
180 #if (_WIN32_WINNT <= _WIN32_WINNT_NT4)
181 #define _WIN32_IE       _WIN32_IE_IE50
182 #elif (_WIN32_WINNT <= _WIN32_WINNT_WIN2K)
183 #define _WIN32_IE       _WIN32_IE_IE501
184 #elif (_WIN32_WINNT <= _WIN32_WINNT_WINXP)
185 #define _WIN32_IE       _WIN32_IE_IE60
186 #elif (_WIN32_WINNT <= _WIN32_WINNT_WS03)
187 #define _WIN32_IE       _WIN32_IE_WS03
188 #elif (_WIN32_WINNT <= _WIN32_WINNT_VISTA)
189 #define _WIN32_IE       _WIN32_IE_IE70
190 #elif (_WIN32_WINNT <= _WIN32_WINNT_WIN7)
191 #define _WIN32_IE       _WIN32_IE_IE80
192 #elif (_WIN32_WINNT <= _WIN32_WINNT_WIN8)
193 #define _WIN32_IE       _WIN32_IE_IE100
194 #else
195 #define _WIN32_IE       _WIN32_IE_IE110
196 #endif
197 #else
198 #define _WIN32_IE       _WIN32_IE_IE110
199 #endif
200 #endif
201 
202 /* Make Sure NTDDI_VERSION and _WIN32_WINNT Match */
203 #if ((NTDDI_VERSION >> 16) != _WIN32_WINNT)
204 #error NTDDI_VERSION and _WIN32_WINNT mismatch!
205 #endif
206 
207 #endif
208