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
}