headers: Add new symbols in winnt.h

Signed-off-by: Biswapriyo Nath <nathbappai@gmail.com>
Signed-off-by: LIU Hao <lh_mouse@126.com>
diff --git a/mingw-w64-headers/include/winnt.h b/mingw-w64-headers/include/winnt.h
index b9e1238..44676ba 100644
--- a/mingw-w64-headers/include/winnt.h
+++ b/mingw-w64-headers/include/winnt.h
@@ -4288,6 +4288,38 @@
 #define UNPROTECTED_DACL_SECURITY_INFORMATION (__MSABI_LONG(0x20000000))
 #define UNPROTECTED_SACL_SECURITY_INFORMATION (__MSABI_LONG(0x10000000))
 
+typedef BYTE SE_SIGNING_LEVEL, *PSE_SIGNING_LEVEL;
+
+#define SE_SIGNING_LEVEL_UNCHECKED 0x00000000
+#define SE_SIGNING_LEVEL_UNSIGNED 0x00000001
+#define SE_SIGNING_LEVEL_ENTERPRISE 0x00000002
+#define SE_SIGNING_LEVEL_CUSTOM_1 0x00000003
+#define SE_SIGNING_LEVEL_DEVELOPER SE_SIGNING_LEVEL_CUSTOM_1
+#define SE_SIGNING_LEVEL_AUTHENTICODE 0x00000004
+#define SE_SIGNING_LEVEL_CUSTOM_2 0x00000005
+#define SE_SIGNING_LEVEL_STORE 0x00000006
+#define SE_SIGNING_LEVEL_CUSTOM_3 0x00000007
+#define SE_SIGNING_LEVEL_ANTIMALWARE SE_SIGNING_LEVEL_CUSTOM_3
+#define SE_SIGNING_LEVEL_MICROSOFT 0x00000008
+#define SE_SIGNING_LEVEL_CUSTOM_4 0x00000009
+#define SE_SIGNING_LEVEL_CUSTOM_5 0x0000000A
+#define SE_SIGNING_LEVEL_DYNAMIC_CODEGEN 0x0000000B
+#define SE_SIGNING_LEVEL_WINDOWS 0x0000000C
+#define SE_SIGNING_LEVEL_CUSTOM_7 0x0000000D
+#define SE_SIGNING_LEVEL_WINDOWS_TCB 0x0000000E
+#define SE_SIGNING_LEVEL_CUSTOM_6 0x0000000F
+
+    typedef enum _SE_IMAGE_SIGNATURE_TYPE {
+      SeImageSignatureNone = 0,
+      SeImageSignatureEmbedded,
+      SeImageSignatureCache,
+      SeImageSignatureCatalogCached,
+      SeImageSignatureCatalogNotCached,
+      SeImageSignatureCatalogHint,
+      SeImageSignaturePackageCatalog,
+      SeImageSignaturePplMitigated
+    } SE_IMAGE_SIGNATURE_TYPE, *PSE_IMAGE_SIGNATURE_TYPE;
+
     typedef enum _SE_LEARNING_MODE_DATA_TYPE {
       SeLearningModeInvalidType = 0,
       SeLearningModeSettings,
@@ -4875,6 +4907,30 @@
       DWORD LimitFlags;
     } JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION,*PJOBOBJECT_NOTIFICATION_LIMIT_INFORMATION;
 
+    typedef struct JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2 {
+      DWORD64 IoReadBytesLimit;
+      DWORD64 IoWriteBytesLimit;
+      LARGE_INTEGER PerJobUserTimeLimit;
+      __C89_NAMELESS union {
+        DWORD64 JobHighMemoryLimit;
+        DWORD64 JobMemoryLimit;
+      };
+      __C89_NAMELESS union {
+        JOBOBJECT_RATE_CONTROL_TOLERANCE RateControlTolerance;
+        JOBOBJECT_RATE_CONTROL_TOLERANCE CpuRateControlTolerance;
+      };
+      __C89_NAMELESS union {
+        JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL RateControlToleranceInterval;
+        JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL CpuRateControlToleranceInterval;
+      };
+      DWORD LimitFlags;
+      JOBOBJECT_RATE_CONTROL_TOLERANCE IoRateControlTolerance;
+      DWORD64 JobLowMemoryLimit;
+      JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL IoRateControlToleranceInterval;
+      JOBOBJECT_RATE_CONTROL_TOLERANCE NetRateControlTolerance;
+      JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL NetRateControlToleranceInterval;
+    } JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2;
+
     typedef struct _JOBOBJECT_LIMIT_VIOLATION_INFORMATION {
       DWORD LimitFlags;
       DWORD ViolationLimitFlags;
@@ -4890,6 +4946,35 @@
       JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL RateControlToleranceLimit;
     } JOBOBJECT_LIMIT_VIOLATION_INFORMATION,*PJOBOBJECT_LIMIT_VIOLATION_INFORMATION;
 
+    typedef struct JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2 {
+      DWORD LimitFlags;
+      DWORD ViolationLimitFlags;
+      DWORD64 IoReadBytes;
+      DWORD64 IoReadBytesLimit;
+      DWORD64 IoWriteBytes;
+      DWORD64 IoWriteBytesLimit;
+      LARGE_INTEGER PerJobUserTime;
+      LARGE_INTEGER PerJobUserTimeLimit;
+      DWORD64 JobMemory;
+      __C89_NAMELESS union {
+        DWORD64 JobHighMemoryLimit;
+        DWORD64 JobMemoryLimit;
+      };
+      __C89_NAMELESS union {
+        JOBOBJECT_RATE_CONTROL_TOLERANCE RateControlTolerance;
+        JOBOBJECT_RATE_CONTROL_TOLERANCE CpuRateControlTolerance;
+      };
+      __C89_NAMELESS union {
+        JOBOBJECT_RATE_CONTROL_TOLERANCE RateControlToleranceLimit;
+        JOBOBJECT_RATE_CONTROL_TOLERANCE CpuRateControlToleranceLimit;
+      };
+      DWORD64 JobLowMemoryLimit;
+      JOBOBJECT_RATE_CONTROL_TOLERANCE IoRateControlTolerance;
+      JOBOBJECT_RATE_CONTROL_TOLERANCE IoRateControlToleranceLimit;
+      JOBOBJECT_RATE_CONTROL_TOLERANCE NetRateControlTolerance;
+      JOBOBJECT_RATE_CONTROL_TOLERANCE NetRateControlToleranceLimit;
+    } JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2;
+
     typedef struct _JOBOBJECT_CPU_RATE_CONTROL_INFORMATION {
       DWORD ControlFlags;
       __C89_NAMELESS union {
@@ -4898,6 +4983,107 @@
       };
     } JOBOBJECT_CPU_RATE_CONTROL_INFORMATION,*PJOBOBJECT_CPU_RATE_CONTROL_INFORMATION;
 
+    typedef enum JOB_OBJECT_NET_RATE_CONTROL_FLAGS {
+      JOB_OBJECT_NET_RATE_CONTROL_ENABLE = 0x1,
+      JOB_OBJECT_NET_RATE_CONTROL_MAX_BANDWIDTH = 0x2,
+      JOB_OBJECT_NET_RATE_CONTROL_DSCP_TAG = 0x4,
+      JOB_OBJECT_NET_RATE_CONTROL_VALID_FLAGS = 0x7
+    } JOB_OBJECT_NET_RATE_CONTROL_FLAGS;
+
+#if !defined(SORTPP_PASS) && !defined(__WIDL__) && !defined(RC_INVOKED)
+DEFINE_ENUM_FLAG_OPERATORS(JOB_OBJECT_NET_RATE_CONTROL_FLAGS)
+C_ASSERT(JOB_OBJECT_NET_RATE_CONTROL_VALID_FLAGS == (JOB_OBJECT_NET_RATE_CONTROL_ENABLE + JOB_OBJECT_NET_RATE_CONTROL_MAX_BANDWIDTH + JOB_OBJECT_NET_RATE_CONTROL_DSCP_TAG));
+#endif
+
+#define JOB_OBJECT_NET_RATE_CONTROL_MAX_DSCP_TAG 64
+
+    typedef struct JOBOBJECT_NET_RATE_CONTROL_INFORMATION {
+      DWORD64 MaxBandwidth;
+      JOB_OBJECT_NET_RATE_CONTROL_FLAGS ControlFlags;
+      BYTE DscpTag;
+    } JOBOBJECT_NET_RATE_CONTROL_INFORMATION;
+
+    typedef enum JOB_OBJECT_IO_RATE_CONTROL_FLAGS {
+      JOB_OBJECT_IO_RATE_CONTROL_ENABLE = 0x1,
+      JOB_OBJECT_IO_RATE_CONTROL_STANDALONE_VOLUME = 0x2,
+      JOB_OBJECT_IO_RATE_CONTROL_FORCE_UNIT_ACCESS_ALL = 0x4,
+      JOB_OBJECT_IO_RATE_CONTROL_FORCE_UNIT_ACCESS_ON_SOFT_CAP = 0x8,
+      JOB_OBJECT_IO_RATE_CONTROL_VALID_FLAGS = JOB_OBJECT_IO_RATE_CONTROL_ENABLE | JOB_OBJECT_IO_RATE_CONTROL_STANDALONE_VOLUME | JOB_OBJECT_IO_RATE_CONTROL_FORCE_UNIT_ACCESS_ALL | JOB_OBJECT_IO_RATE_CONTROL_FORCE_UNIT_ACCESS_ON_SOFT_CAP
+    } JOB_OBJECT_IO_RATE_CONTROL_FLAGS;
+
+#if !defined(SORTPP_PASS) && !defined(__WIDL__) && !defined(RC_INVOKED)
+DEFINE_ENUM_FLAG_OPERATORS(JOB_OBJECT_IO_RATE_CONTROL_FLAGS)
+#endif
+
+    typedef struct JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE {
+      LONG64 MaxIops;
+      LONG64 MaxBandwidth;
+      LONG64 ReservationIops;
+      PWSTR VolumeName;
+      DWORD BaseIoSize;
+      JOB_OBJECT_IO_RATE_CONTROL_FLAGS ControlFlags;
+      WORD VolumeNameLength;
+    } JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE;
+
+    typedef JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V1;
+
+    typedef struct JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V2 {
+      LONG64 MaxIops;
+      LONG64 MaxBandwidth;
+      LONG64 ReservationIops;
+      PWSTR VolumeName;
+      DWORD BaseIoSize;
+      JOB_OBJECT_IO_RATE_CONTROL_FLAGS ControlFlags;
+      WORD VolumeNameLength;
+      LONG64 CriticalReservationIops;
+      LONG64 ReservationBandwidth;
+      LONG64 CriticalReservationBandwidth;
+      LONG64 MaxTimePercent;
+      LONG64 ReservationTimePercent;
+      LONG64 CriticalReservationTimePercent;
+    } JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V2;
+
+    typedef struct JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V3 {
+      LONG64 MaxIops;
+      LONG64 MaxBandwidth;
+      LONG64 ReservationIops;
+      PWSTR VolumeName;
+      DWORD BaseIoSize;
+      JOB_OBJECT_IO_RATE_CONTROL_FLAGS ControlFlags;
+      WORD VolumeNameLength;
+      LONG64 CriticalReservationIops;
+      LONG64 ReservationBandwidth;
+      LONG64 CriticalReservationBandwidth;
+      LONG64 MaxTimePercent;
+      LONG64 ReservationTimePercent;
+      LONG64 CriticalReservationTimePercent;
+      LONG64 SoftMaxIops;
+      LONG64 SoftMaxBandwidth;
+      LONG64 SoftMaxTimePercent;
+      LONG64 LimitExcessNotifyIops;
+      LONG64 LimitExcessNotifyBandwidth;
+      LONG64 LimitExcessNotifyTimePercent;
+    } JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V3;
+
+    typedef enum JOBOBJECT_IO_ATTRIBUTION_CONTROL_FLAGS {
+      JOBOBJECT_IO_ATTRIBUTION_CONTROL_ENABLE = 0x1,
+      JOBOBJECT_IO_ATTRIBUTION_CONTROL_DISABLE = 0x2,
+      JOBOBJECT_IO_ATTRIBUTION_CONTROL_VALID_FLAGS = 0x3
+    } JOBOBJECT_IO_ATTRIBUTION_CONTROL_FLAGS;
+
+    typedef struct _JOBOBJECT_IO_ATTRIBUTION_STATS {
+      ULONG_PTR IoCount;
+      ULONGLONG TotalNonOverlappedQueueTime;
+      ULONGLONG TotalNonOverlappedServiceTime;
+      ULONGLONG TotalSize;
+    } JOBOBJECT_IO_ATTRIBUTION_STATS, *PJOBOBJECT_IO_ATTRIBUTION_STATS;
+
+    typedef struct _JOBOBJECT_IO_ATTRIBUTION_INFORMATION {
+      DWORD ControlFlags;
+      JOBOBJECT_IO_ATTRIBUTION_STATS ReadStats;
+      JOBOBJECT_IO_ATTRIBUTION_STATS WriteStats;
+    } JOBOBJECT_IO_ATTRIBUTION_INFORMATION, *PJOBOBJECT_IO_ATTRIBUTION_INFORMATION;
+
 #define JOB_OBJECT_TERMINATE_AT_END_OF_JOB 0
 #define JOB_OBJECT_POST_AT_END_OF_JOB 1
 
@@ -5036,6 +5222,31 @@
       MaxJobObjectInfoClass
     } JOBOBJECTINFOCLASS;
 
+    typedef struct _SILOOBJECT_BASIC_INFORMATION {
+      DWORD SiloId;
+      DWORD SiloParentId;
+      DWORD NumberOfProcesses;
+      BOOLEAN IsInServerSilo;
+      BYTE Reserved[3];
+    } SILOOBJECT_BASIC_INFORMATION, *PSILOOBJECT_BASIC_INFORMATION;
+
+    typedef enum _SERVERSILO_STATE {
+      SERVERSILO_INITING = 0,
+      SERVERSILO_STARTED,
+      SERVERSILO_SHUTTING_DOWN,
+      SERVERSILO_TERMINATING,
+      SERVERSILO_TERMINATED,
+    } SERVERSILO_STATE, *PSERVERSILO_STATE;
+
+    typedef struct _SERVERSILO_BASIC_INFORMATION {
+      DWORD ServiceSessionId;
+      SERVERSILO_STATE State;
+      DWORD ExitStatus;
+      BOOLEAN IsDownlevelContainer;
+      PVOID ApiSetSchema;
+      PVOID HostApiSetSchema;
+    } SERVERSILO_BASIC_INFORMATION, *PSERVERSILO_BASIC_INFORMATION;
+
 #define MEMORY_PARTITION_QUERY_ACCESS 0x0001
 #define MEMORY_PARTITION_MODIFY_ACCESS 0x0002
 #define MEMORY_PARTITION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | MEMORY_PARTITION_QUERY_ACCESS | MEMORY_PARTITION_MODIFY_ACCESS)
@@ -5480,10 +5691,12 @@
 
 #define MEM_COMMIT 0x1000
 #define MEM_RESERVE 0x2000
+#define MEM_REPLACE_PLACEHOLDER 0x4000
 #define MEM_DECOMMIT 0x4000
 #define MEM_RELEASE 0x8000
 #define MEM_FREE 0x10000
 #define MEM_PRIVATE 0x20000
+#define MEM_RESERVE_PLACEHOLDER 0x40000
 #define MEM_MAPPED 0x40000
 #define MEM_RESET 0x80000
 #define MEM_TOP_DOWN 0x100000
@@ -5580,6 +5793,87 @@
 #define MEM_IMAGE SEC_IMAGE
 #define WRITE_WATCH_FLAG_RESET 0x01
 
+#define ENCLAVE_TYPE_SGX 0x00000001
+#define ENCLAVE_TYPE_SGX2 0x00000002
+
+    typedef struct _ENCLAVE_CREATE_INFO_SGX {
+      BYTE Secs[4096];
+    } ENCLAVE_CREATE_INFO_SGX, *PENCLAVE_CREATE_INFO_SGX;
+
+    typedef struct _ENCLAVE_INIT_INFO_SGX {
+      BYTE SigStruct[1808];
+      BYTE Reserved1[240];
+      BYTE EInitToken[304];
+      BYTE Reserved2[1744];
+    } ENCLAVE_INIT_INFO_SGX, *PENCLAVE_INIT_INFO_SGX;
+
+#define ENCLAVE_TYPE_VBS 0x00000010
+
+    typedef struct _ENCLAVE_CREATE_INFO_VBS {
+      DWORD Flags;
+      BYTE OwnerID[32];
+    } ENCLAVE_CREATE_INFO_VBS, *PENCLAVE_CREATE_INFO_VBS;
+
+#define ENCLAVE_VBS_FLAG_DEBUG 0x00000001
+
+#define ENCLAVE_TYPE_VBS_BASIC 0x00000011
+
+    typedef struct _ENCLAVE_CREATE_INFO_VBS_BASIC {
+      DWORD Flags;
+      BYTE OwnerID[32];
+    } ENCLAVE_CREATE_INFO_VBS_BASIC, *PENCLAVE_CREATE_INFO_VBS_BASIC;
+
+    typedef struct _ENCLAVE_LOAD_DATA_VBS_BASIC {
+      DWORD PageType;
+    } ENCLAVE_LOAD_DATA_VBS_BASIC, *PENCLAVE_LOAD_DATA_VBS_BASIC;
+
+#define VBS_BASIC_PAGE_MEASURED_DATA 0x00000001
+#define VBS_BASIC_PAGE_UNMEASURED_DATA 0x00000002
+#define VBS_BASIC_PAGE_ZERO_FILL 0x00000003
+#define VBS_BASIC_PAGE_THREAD_DESCRIPTOR 0x00000004
+#define VBS_BASIC_PAGE_SYSTEM_CALL 0x00000005
+
+    typedef struct _ENCLAVE_INIT_INFO_VBS_BASIC {
+      BYTE FamilyId[ENCLAVE_SHORT_ID_LENGTH];
+      BYTE ImageId[ENCLAVE_SHORT_ID_LENGTH];
+      ULONGLONG EnclaveSize;
+      DWORD EnclaveSvn;
+      DWORD Reserved;
+      __C89_NAMELESS union {
+        HANDLE SignatureInfoHandle;
+        ULONGLONG Unused;
+      };
+    } ENCLAVE_INIT_INFO_VBS_BASIC, *PENCLAVE_INIT_INFO_VBS_BASIC;
+
+    typedef struct _ENCLAVE_INIT_INFO_VBS {
+      DWORD Length;
+      DWORD ThreadCount;
+    } ENCLAVE_INIT_INFO_VBS, *PENCLAVE_INIT_INFO_VBS;
+
+#if !defined(SORTPP_PASS) && !defined(__WIDL__) && !defined(RC_INVOKED)
+    typedef PVOID (ENCLAVE_TARGET_FUNCTION)(PVOID);
+    typedef ENCLAVE_TARGET_FUNCTION (*PENCLAVE_TARGET_FUNCTION);
+    typedef PENCLAVE_TARGET_FUNCTION LPENCLAVE_TARGET_FUNCTION;
+#endif
+
+#define DEDICATED_MEMORY_CACHE_ELIGIBLE 0x1
+
+    typedef struct DECLSPEC_ALIGN(8) _MEMORY_PARTITION_DEDICATED_MEMORY_ATTRIBUTE {
+      MEM_DEDICATED_ATTRIBUTE_TYPE Type;
+      DWORD Reserved;
+      DWORD64 Value;
+    } MEMORY_PARTITION_DEDICATED_MEMORY_ATTRIBUTE, *PMEMORY_PARTITION_DEDICATED_MEMORY_ATTRIBUTE;
+
+    typedef struct DECLSPEC_ALIGN(8) _MEMORY_PARTITION_DEDICATED_MEMORY_INFORMATION {
+      DWORD NextEntryOffset;
+      DWORD SizeOfInformation;
+      DWORD Flags;
+      DWORD AttributesOffset;
+      DWORD AttributeCount;
+      DWORD Reserved;
+      DWORD64 TypeId;
+    } MEMORY_PARTITION_DEDICATED_MEMORY_INFORMATION, *PMEMORY_PARTITION_DEDICATED_MEMORY_INFORMATION;
+
 #define FILE_READ_DATA (0x0001)
 #define FILE_LIST_DIRECTORY (0x0001)
 
@@ -5785,13 +6079,21 @@
       ULONGLONG Alignment;
     } FILE_SEGMENT_ELEMENT,*PFILE_SEGMENT_ELEMENT;
 
+#if NTDDI_VERSION >= NTDDI_WIN8
+#define FLUSH_FLAGS_FILE_DATA_ONLY 0x00000001
+#define FLUSH_FLAGS_NO_SYNC 0x00000002
+#endif
+#if NTDDI_VERSION >= NTDDI_WIN10_RS1
+#define FLUSH_FLAGS_FILE_DATA_SYNC_ONLY 0x00000004
+#endif
+
     typedef struct _REPARSE_GUID_DATA_BUFFER {
       DWORD ReparseTag;
       WORD ReparseDataLength;
       WORD Reserved;
       GUID ReparseGuid;
       struct {
-	BYTE DataBuffer[1];
+        BYTE DataBuffer[1];
       } GenericReparseBuffer;
     } REPARSE_GUID_DATA_BUFFER,*PREPARSE_GUID_DATA_BUFFER;
 
@@ -5803,11 +6105,13 @@
 
 #define IO_REPARSE_TAG_RESERVED_ZERO (0)
 #define IO_REPARSE_TAG_RESERVED_ONE (1)
+#define IO_REPARSE_TAG_RESERVED_TWO (2)
 
-#define IO_REPARSE_TAG_RESERVED_RANGE IO_REPARSE_TAG_RESERVED_ONE
+#define IO_REPARSE_TAG_RESERVED_RANGE IO_REPARSE_TAG_RESERVED_TWO
 
 #define IsReparseTagMicrosoft(_tag) (((_tag) & 0x80000000))
 #define IsReparseTagNameSurrogate(_tag) (((_tag) & 0x20000000))
+#define IsReparseTagDirectory(_tag) (((_tag) & 0x10000000))
 
 #define IO_REPARSE_TAG_MOUNT_POINT (__MSABI_LONG(0xA0000003))
 #define IO_REPARSE_TAG_HSM (__MSABI_LONG(0xC0000004))
@@ -5853,23 +6157,53 @@
 #define IO_REPARSE_TAG_ONEDRIVE (__MSABI_LONG(0x80000021))
 #define IO_REPARSE_TAG_PROJFS_TOMBSTONE (__MSABI_LONG(0xA0000022))
 #define IO_REPARSE_TAG_AF_UNIX (__MSABI_LONG(0x80000023))
+#define IO_REPARSE_TAG_WCI_LINK (__MSABI_LONG(0xA0000027))
+#define IO_REPARSE_TAG_WCI_LINK_1 (__MSABI_LONG(0xA0001027))
+#define IO_REPARSE_TAG_DATALESS_CIM (__MSABI_LONG(0xA0000028))
 
-#if _WIN32_WINNT >= 0x0602
+#if _WIN32_WINNT >= _WIN32_WINNT_WIN8
 #define SCRUB_DATA_INPUT_FLAG_RESUME 0x00000001
 #define SCRUB_DATA_INPUT_FLAG_SKIP_IN_SYNC 0x00000002
 #define SCRUB_DATA_INPUT_FLAG_SKIP_NON_INTEGRITY_DATA 0x00000004
-
+#define SCRUB_DATA_INPUT_FLAG_IGNORE_REDUNDANCY 0x00000008
+#define SCRUB_DATA_INPUT_FLAG_SKIP_DATA 0x00000010
+#define SCRUB_DATA_INPUT_FLAG_SCRUB_BY_OBJECT_ID 0x00000020
+#if _WIN32_WINNT >= _WIN32_WINNT_WIN10_19H2
+#define SCRUB_DATA_INPUT_FLAG_OPLOCK_NOT_ACQUIRED 0x00000040
+#endif
 #define SCRUB_DATA_OUTPUT_FLAG_INCOMPLETE 0x00000001
 #define SCRUB_DATA_OUTPUT_FLAG_NON_USER_DATA_RANGE 0x00010000
+#if _WIN32_WINNT >= _WIN32_WINNT_WINBLUE
+#define SCRUB_DATA_OUTPUT_FLAG_PARITY_EXTENT_DATA_RETURNED 0x00020000
+#define SCRUB_DATA_OUTPUT_FLAG_RESUME_CONTEXT_LENGTH_SPECIFIED 0x00040000
+#endif
 
     typedef struct _SCRUB_DATA_INPUT {
       DWORD Size;
       DWORD Flags;
       DWORD MaximumIos;
-      DWORD Reserved[17];
-      BYTE ResumeContext[816];
+      DWORD ObjectId[4];
+      DWORD Reserved[41];
+      BYTE ResumeContext[1040];
     } SCRUB_DATA_INPUT,*PSCRUB_DATA_INPUT;
 
+#if _WIN32_WINNT >= _WIN32_WINNT_WINBLUE
+
+    typedef struct _SCRUB_PARITY_EXTENT {
+      LONGLONG Offset;
+      ULONGLONG Length;
+    } SCRUB_PARITY_EXTENT, *PSCRUB_PARITY_EXTENT;
+
+    typedef struct _SCRUB_PARITY_EXTENT_DATA {
+      WORD Size;
+      WORD Flags;
+      WORD NumberOfParityExtents;
+      WORD MaximumNumberOfParityExtents;
+      SCRUB_PARITY_EXTENT ParityExtents[ANYSIZE_ARRAY];
+    } SCRUB_PARITY_EXTENT_DATA, *PSCRUB_PARITY_EXTENT_DATA;
+
+#endif /* _WIN32_WINNT >= _WIN32_WINNT_WINBLUE */
+
     typedef struct _SCRUB_DATA_OUTPUT {
       DWORD Size;
       DWORD Flags;
@@ -5879,9 +6213,35 @@
       ULONGLONG NumberOfBytesRepaired;
       ULONGLONG NumberOfBytesFailed;
       ULONGLONG InternalFileReference;
-      DWORD Reserved[6];
-      BYTE ResumeContext[816];
-    } SCRUB_DATA_OUTPUT,*PSCRUB_DATA_OUTPUT;
+#if _WIN32_WINNT >= _WIN32_WINNT_WINBLUE
+      WORD ResumeContextLength;
+      WORD ParityExtentDataOffset;
+      DWORD Reserved[9];
+#else
+      DWORD Reserved[10];
+#endif
+#if _WIN32_WINNT >= _WIN32_WINNT_WIN10_RS5
+      ULONGLONG NumberOfMetadataBytesProcessed;
+      ULONGLONG NumberOfDataBytesProcessed;
+      ULONGLONG TotalNumberOfMetadataBytesInUse;
+      ULONGLONG TotalNumberOfDataBytesInUse;
+#else
+      ULONGLONG Reserved2[4];
+#endif
+#if _WIN32_WINNT >= _WIN32_WINNT_WIN10_FE
+      ULONGLONG DataBytesSkippedDueToNoAllocation;
+      ULONGLONG DataBytesSkippedDueToInvalidRun;
+      ULONGLONG DataBytesSkippedDueToIntegrityStream;
+      ULONGLONG DataBytesSkippedDueToRegionBeingClean;
+      ULONGLONG DataBytesSkippedDueToLockConflict;
+      ULONGLONG DataBytesSkippedDueToNoScrubDataFlag;
+      ULONGLONG DataBytesSkippedDueToNoScrubNonIntegrityStreamFlag;
+      ULONGLONG DataBytesScrubbed;
+#else
+      ULONGLONG Reserved3[8];
+#endif
+      BYTE ResumeContext[1040];
+    } SCRUB_DATA_OUTPUT, *PSCRUB_DATA_OUTPUT;
 #endif
 
 #define IO_COMPLETION_MODIFY_STATE 0x0002
@@ -9972,6 +10332,7 @@
 #define ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES (9)
 #define ACTIVATION_CONTEXT_SECTION_APPLICATION_SETTINGS (10)
 #define ACTIVATION_CONTEXT_SECTION_COMPATIBILITY_INFO (11)
+#define ACTIVATION_CONTEXT_SECTION_WINRT_ACTIVATABLE_CLASSES (12)
 
 #ifdef __cplusplus
 }