[HEADERS]
[reactos.git] / reactos / include / psdk / sdkddkver.h
index c197203..80ed6be 100644 (file)
@@ -1,12 +1,32 @@
+/* ReactOS PSDK/DDK
+
+This file is in the public domain.
+
+Header Name:
+
+    sdkddkver.h
+
+Abstract:
+
+    Version definitions for SDK and DDK.
+
+--*/
+
 #ifndef _INC_SDKDDKVER
 #define _INC_SDKDDKVER
 
-/* Version constants */
+/* _WIN32_WINNT */
 #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
+
+/* _WIN32_IE */
 #define _WIN32_IE_IE20                      0x0200
 #define _WIN32_IE_IE30                      0x0300
 #define _WIN32_IE_IE302                     0x0302
@@ -19,6 +39,9 @@
 #define _WIN32_IE_IE60SP1                   0x0601
 #define _WIN32_IE_IE60SP2                   0x0603
 #define _WIN32_IE_IE70                      0x0700
+#define _WIN32_IE_IE80                      0x0800
+
+/* Mappings Between IE Version  and Windows Version */
 #define _WIN32_IE_NT4                       _WIN32_IE_IE20
 #define _WIN32_IE_NT4SP1                    _WIN32_IE_IE20
 #define _WIN32_IE_NT4SP2                    _WIN32_IE_IE20
 #define _WIN32_IE_XPSP2                     _WIN32_IE_IE60SP2
 #define _WIN32_IE_WS03                      0x0602
 #define _WIN32_IE_WS03SP1                   _WIN32_IE_IE60SP2
+#define _WIN32_IE_WIN6                      _WIN32_IE_IE70
 #define _WIN32_IE_LONGHORN                  _WIN32_IE_IE70
+#define _WIN32_IE_WIN7                      _WIN32_IE_IE80
+
+/* NTDDI_VERSION */
 #define NTDDI_WIN2K                         0x05000000
 #define NTDDI_WIN2KSP1                      0x05000100
 #define NTDDI_WIN2KSP2                      0x05000200
 #define NTDDI_WINXP                         0x05010000
 #define NTDDI_WINXPSP1                      0x05010100
 #define NTDDI_WINXPSP2                      0x05010200
+#define NTDDI_WINXPSP3                      0x05010300
+#define NTDDI_WINXPSP4                      0x05010400
 #define NTDDI_WS03                          0x05020000
 #define NTDDI_WS03SP1                       0x05020100
-#define NTDDI_LONGHORN                      0x06000000
+#define NTDDI_WS03SP2                       0x05020200
+#define NTDDI_WS03SP3                       0x05020300
+#define NTDDI_WS03SP4                       0x05020400
+#define NTDDI_WIN6                          0x06000000
+#define NTDDI_WIN6SP1                       0x06000100
+#define NTDDI_WIN6SP2                       0x06000200
+#define NTDDI_WIN6SP3                       0x06000300
+#define NTDDI_WIN6SP4                       0x06000400
+#define NTDDI_LONGHORN                      NTDDI_WIN6
+#define NTDDI_VISTA                         NTDDI_WIN6
+#define NTDDI_VISTASP1                      NTDDI_WIN6SP1
+#define NTDDI_VISTASP2                      NTDDI_WIN6SP2
+#define NTDDI_VISTASP3                      NTDDI_WIN6SP3
+#define NTDDI_VISTASP4                      NTDDI_WIN6SP4
+#define NTDDI_WS08                          NTDDI_WIN6SP1
+#define NTDDI_WS08SP2                       NTDDI_WIN6SP2
+#define NTDDI_WS08SP3                       NTDDI_WIN6SP3
+#define NTDDI_WS08SP4                       NTDDI_WIN6SP4
+#define NTDDI_WIN7                          0x06010000
+
+/* Version Fields in NTDDI_VERSION */
+#define OSVERSION_MASK                      0xFFFF0000
+#define SPVERSION_MASK                      0x0000FF00
+#define SUBVERSION_MASK                     0x000000FF
+
+/* Macros to Extract Version Fields From NTDDI_VERSION */
+#define OSVER(Version)                      ((Version) & OSVERSION_MASK)
+#define SPVER(Version)                      (((Version) & SPVERSION_MASK) >> 8)
+#define SUBVER(Version)                     (((Version) & SUBVERSION_MASK))
 
 /* Macros to get the NTDDI for a given WIN32 */
-#define NTDDI_VERSION_FROM_WIN32_WINNT2(ver)    ver##0000
-#define NTDDI_VERSION_FROM_WIN32_WINNT(ver)     NTDDI_VERSION_FROM_WIN32_WINNT2(ver)
+#define NTDDI_VERSION_FROM_WIN32_WINNT2(Version) Version##0000
+#define NTDDI_VERSION_FROM_WIN32_WINNT(Version)  NTDDI_VERSION_FROM_WIN32_WINNT2(Version)
 
 /* Select Default WIN32_WINNT Value */
 #if !defined(_WIN32_WINNT) && !defined(_CHICAGO_)
-#define  _WIN32_WINNT   0x0600
+#define _WIN32_WINNT    0x0600
 #endif
 
 /* Choose NTDDI Version */
 #endif
 #endif
 
+/* Make Sure NTDDI_VERSION and _WIN32_WINNT Match */
+#if ((OSVER(NTDDI_VERSION) == NTDDI_WIN2K) && (_WIN32_WINNT != _WIN32_WINNT_WIN2K)) || \
+    ((OSVER(NTDDI_VERSION) == NTDDI_WINXP) && (_WIN32_WINNT != _WIN32_WINNT_WINXP)) || \
+    ((OSVER(NTDDI_VERSION) == NTDDI_WS03) && (_WIN32_WINNT != _WIN32_WINNT_WS03))   || \
+    ((OSVER(NTDDI_VERSION) == NTDDI_WINXP) && (_WIN32_WINNT != _WIN32_WINNT_WINXP))
+#error NTDDI_VERSION and _WIN32_WINNT mismatch!
+#endif
+
 #endif