|
| 1 | +/* |
| 2 | + * KNSoft.NDK NT version control |
| 3 | + * |
| 4 | + * NT_VERSION: Make NT version number (ULONG) |
| 5 | + * NT_VERSION_*: NT version numbers |
| 6 | + * NT_VERSION_MIN: Minimum support NT version, can be set by user and will not lower than NT_VERSION_MIN_CONSTRAINED |
| 7 | + * |
| 8 | + * Defined in "NT.h": |
| 9 | + * GET_NT_VERSION: Get NT version number from `SharedUserData` |
| 10 | + * IS_NT_VERSION_GE: Return whether NT_VERSION_MIN or GET_NT_VERSION is greater than or equal to the given NT version number |
| 11 | + */ |
| 12 | + |
| 13 | +#pragma once |
| 14 | + |
| 15 | +#include <SdkDdkVer.h> |
| 16 | + |
| 17 | +/* Patch undocumented NTDDI versions */ |
| 18 | +#define NTDDI_WIN10_GE NTDDI_WIN11_ZN /* Introduced in Windows SDK 10.0.26100.1 (Win11), later than all NTDDI_WIN10_* */ |
| 19 | +#define NTDDI_WIN11_DT NTDDI_WIN11_GE /* Introduced in Windows SDK 10.0.26100.3916, later than NTDDI_WIN11_GE */ |
| 20 | + |
| 21 | +#define NT_VERSION(Major, Minor, Build) (((((Major) & 0xFF) << 24) | (((Minor) & 0xFF) << 16)) | ((Build) & 0xFFFF)) |
| 22 | + |
| 23 | +#define NT_VERSION_WIN2K NT_VERSION(5, 0, 0) |
| 24 | +#define NT_VERSION_WINXP NT_VERSION(5, 1, 0) |
| 25 | +#define NT_VERSION_WS2K3 NT_VERSION(5, 2, 0) |
| 26 | +#define NT_VERSION_VISTA NT_VERSION(6, 0, 0) |
| 27 | +#define NT_VERSION_WIN7 NT_VERSION(6, 1, 0) |
| 28 | +#define NT_VERSION_WIN8 NT_VERSION(6, 2, 0) |
| 29 | +#define NT_VERSION_WINBLUE NT_VERSION(6, 3, 0) |
| 30 | + |
| 31 | +#define NT_VERSION_WIN10 NT_VERSION(10, 0, 0) |
| 32 | + |
| 33 | +#define NT_VERSION_WIN10_TH NT_VERSION(10, 0, 10240) |
| 34 | +#define NT_VERSION_WIN10_1507 NT_VERSION_WIN10_TH |
| 35 | + |
| 36 | +#define NT_VERSION_WIN10_TH2 NT_VERSION(10, 0, 10586) |
| 37 | +#define NT_VERSION_WIN10_1511 NT_VERSION_WIN10_TH2 |
| 38 | + |
| 39 | +#define NT_VERSION_WIN10_RS1 NT_VERSION(10, 0, 14393) |
| 40 | +#define NT_VERSION_WIN10_1607 NT_VERSION_WIN10_RS1 |
| 41 | + |
| 42 | +#define NT_VERSION_WIN10_RS2 NT_VERSION(10, 0, 15063) |
| 43 | +#define NT_VERSION_WIN10_1703 NT_VERSION_WIN10_RS2 |
| 44 | + |
| 45 | +#define NT_VERSION_WIN10_RS3 NT_VERSION(10, 0, 16299) |
| 46 | +#define NT_VERSION_WIN10_1709 NT_VERSION_WIN10_RS3 |
| 47 | + |
| 48 | +#define NT_VERSION_WIN10_RS4 NT_VERSION(10, 0, 17134) |
| 49 | +#define NT_VERSION_WIN10_1803 NT_VERSION_WIN10_RS4 |
| 50 | + |
| 51 | +#define NT_VERSION_WIN10_RS5 NT_VERSION(10, 0, 17763) |
| 52 | +#define NT_VERSION_WIN10_1809 NT_VERSION_WIN10_RS5 |
| 53 | + |
| 54 | +#define NT_VERSION_WIN10_19H1 NT_VERSION(10, 0, 18362) |
| 55 | +#define NT_VERSION_WIN10_1903 NT_VERSION_WIN10_19H1 |
| 56 | + |
| 57 | +#define NT_VERSION_WIN10_19H2 NT_VERSION(10, 0, 18363) |
| 58 | +#define NT_VERSION_WIN10_1909 NT_VERSION_WIN10_19H2 |
| 59 | + |
| 60 | +#define NT_VERSION_WIN10_20H1 NT_VERSION(10, 0, 19041) |
| 61 | +#define NT_VERSION_WIN10_2004 NT_VERSION_WIN10_20H1 |
| 62 | + |
| 63 | +#define NT_VERSION_WIN10_20H2 NT_VERSION(10, 0, 19042) |
| 64 | +#define NT_VERSION_WIN10_21H1 NT_VERSION(10, 0, 19043) |
| 65 | +#define NT_VERSION_WIN10_21H2 NT_VERSION(10, 0, 19044) |
| 66 | +#define NT_VERSION_WIN10_22H2 NT_VERSION(10, 0, 19045) |
| 67 | + |
| 68 | +#define NT_VERSION_WIN11 NT_VERSION(10, 0, 22000) |
| 69 | +#define NT_VERSION_WIN11_21H2 NT_VERSION_WIN11 |
| 70 | +#define NT_VERSION_WIN11_22H2 NT_VERSION(10, 0, 22621) |
| 71 | +#define NT_VERSION_WIN11_23H2 NT_VERSION(10, 0, 22631) |
| 72 | +#define NT_VERSION_WIN11_24H2 NT_VERSION(10, 0, 26100) |
| 73 | +#define NT_VERSION_WIN11_25H2 NT_VERSION(10, 0, 26200) |
| 74 | + |
| 75 | +/* ARM support since NT10 */ |
| 76 | +#if defined(_M_ARM64) || defined(_M_ARM64EC) || defined(_M_ARM) |
| 77 | +#define NT_VERSION_MIN_CONSTRAINED NT_VERSION_WIN10 |
| 78 | +#endif |
| 79 | + |
| 80 | +/* Minimum support NT6.0 by default */ |
| 81 | +#ifndef NT_VERSION_MIN |
| 82 | +#define NT_VERSION_MIN NT_VERSION_VISTA |
| 83 | +#endif |
| 84 | + |
| 85 | +/* Adjust NT_VERSION_MIN if it is lower than NT_VERSION_MIN_CONSTRAINED */ |
| 86 | +#if defined(NT_VERSION_MIN_CONSTRAINED) && (NT_VERSION_MIN < NT_VERSION_MIN_CONSTRAINED) |
| 87 | +#undef NT_VERSION_MIN |
| 88 | +#define NT_VERSION_MIN NT_VERSION_MIN_CONSTRAINED |
| 89 | +#endif |
0 commit comments