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
 }
