diff --git a/mingw-w64-headers/include/winnt.h b/mingw-w64-headers/include/winnt.h
index 1b33b07..df87eb1 100644
--- a/mingw-w64-headers/include/winnt.h
+++ b/mingw-w64-headers/include/winnt.h
@@ -411,6 +411,18 @@
 } GROUP_AFFINITY, *PGROUP_AFFINITY;
 #endif /* !___GROUP_AFFINITY_DEFINED */
 
+typedef struct _GROUP_AFFINITY32 {
+  DWORD Mask;
+  WORD Group;
+  WORD Reserved[3];
+} GROUP_AFFINITY32, *PGROUP_AFFINITY32;
+
+typedef struct _GROUP_AFFINITY64 {
+  unsigned __int64 Mask;
+  WORD Group;
+  WORD Reserved[3];
+} GROUP_AFFINITY64, *PGROUP_AFFINITY64;
+
 #ifdef STRICT
   typedef void *HANDLE;
 #define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name
@@ -916,6 +928,13 @@
 #define PRODUCT_AZURE_SERVER_CLOUDMOS             0xC8
 #define PRODUCT_CLOUDEDITIONN                     0xCA
 #define PRODUCT_CLOUDEDITION                      0xCB
+#define PRODUCT_VALIDATION                        0xCC
+#define PRODUCT_IOTENTERPRISESK                   0xCD
+#define PRODUCT_IOTENTERPRISEK                    0xCE
+#define PRODUCT_IOTENTERPRISESEVAL                0xCF
+#define PRODUCT_AZURE_SERVER_AGENTBRIDGE          0xD0
+#define PRODUCT_AZURE_SERVER_NANOHOST             0xD1
+#define PRODUCT_WNC                               0xD2
 #define PRODUCT_AZURESTACKHCI_SERVER_CORE         0x196
 #define PRODUCT_DATACENTER_SERVER_AZURE_EDITION   0x197
 #define PRODUCT_DATACENTER_SERVER_CORE_AZURE_EDITION 0x198
@@ -1502,6 +1521,13 @@
       DWORD64 Ia32Pl3SspMsr;
     } XSAVE_CET_U_FORMAT, *PXSAVE_CET_U_FORMAT;
 
+    typedef struct _XSAVE_ARM64_SVE_HEADER {
+      DWORD VectorLength;
+      DWORD VectorRegisterOffset;
+      DWORD PredicateRegisterOffset;
+      DWORD Reserved[5];
+    } XSAVE_ARM64_SVE_HEADER, *PXSAVE_ARM64_SVE_HEADER;
+
     typedef struct DECLSPEC_ALIGN (8) _XSAVE_AREA_HEADER {
       DWORD64 Mask;
       DWORD64 Reserved[7];
@@ -1512,10 +1538,13 @@
       XSAVE_AREA_HEADER Header;
     } XSAVE_AREA,*PXSAVE_AREA;
 
+#define XSTATE_CONTEXT_FLAG_LOOKASIDE 0x1
+
     typedef struct _XSTATE_CONTEXT {
       DWORD64 Mask;
       DWORD Length;
-      DWORD Reserved1;
+      BYTE Flags;
+      BYTE Reserved0[3];
       PXSAVE_AREA Area;
 #if defined (__i386__)
       DWORD Reserved2;
@@ -3099,6 +3128,11 @@
       SID_HASH_ENTRY Hash[SID_HASH_SIZE];
     } SID_AND_ATTRIBUTES_HASH, *PSID_AND_ATTRIBUTES_HASH;
 
+    typedef struct _ATTRIBUTES_AND_SID {
+      UINT32 Attributes;
+      DWORD SidStart;
+    } ATTRIBUTES_AND_SID, *PATTRIBUTES_AND_SID;
+
 #define SECURITY_NULL_SID_AUTHORITY {0,0,0,0,0,0}
 #define SECURITY_WORLD_SID_AUTHORITY {0,0,0,0,0,1}
 #define SECURITY_LOCAL_SID_AUTHORITY {0,0,0,0,0,2}
@@ -3202,9 +3236,15 @@
 
 #define SECURITY_CCG_ID_BASE_RID (__MSABI_LONG(0x0000005f))
 #define SECURITY_UMFD_BASE_RID (__MSABI_LONG(0x00000060))
+#define SECURITY_UNIQUIFIED_SERVICE_BASE_RID (__MSABI_LONG(0x00000061))
 
 #define SECURITY_VIRTUALACCOUNT_ID_RID_COUNT (__MSABI_LONG(6))
 
+#define SECURITY_EDGE_CLOUD_INFRASTRUCTURE_SERVICE_ID_BASE_RID (__MSABI_LONG(0x00000062))
+
+#define SECURITY_RESTRICTED_SERVICES_BASE_RID  (__MSABI_LONG(0x00000063))
+#define SECURITY_RESTRICTED_SERVICES_RID_COUNT (__MSABI_LONG(6))
+
 #define SECURITY_MAX_BASE_RID (__MSABI_LONG(0x0000006f))
 
 #define SECURITY_MAX_ALWAYS_FILTERED (__MSABI_LONG(0x000003E7))
@@ -3251,6 +3291,8 @@
 #define DOMAIN_GROUP_RID_PROTECTED_USERS (__MSABI_LONG(0x0000020d))
 #define DOMAIN_GROUP_RID_KEY_ADMINS (__MSABI_LONG(0x0000020e))
 #define DOMAIN_GROUP_RID_ENTERPRISE_KEY_ADMINS (__MSABI_LONG(0x0000020f))
+#define DOMAIN_GROUP_RID_FOREST_TRUSTS (__MSABI_LONG(0x00000210))
+#define DOMAIN_GROUP_RID_EXTERNAL_TRUSTS (__MSABI_LONG(0x00000211))
 
 #define DOMAIN_ALIAS_RID_ADMINS (__MSABI_LONG(0x00000220))
 #define DOMAIN_ALIAS_RID_USERS (__MSABI_LONG(0x00000221))
@@ -3290,6 +3332,8 @@
 #define DOMAIN_ALIAS_RID_DEFAULT_ACCOUNT (__MSABI_LONG(0x00000245))
 #define DOMAIN_ALIAS_RID_STORAGE_REPLICA_ADMINS (__MSABI_LONG(0x00000246))
 #define DOMAIN_ALIAS_RID_DEVICE_OWNERS (__MSABI_LONG(0x00000247))
+#define DOMAIN_ALIAS_RID_USER_MODE_HARDWARE_OPERATORS (__MSABI_LONG(0x00000248))
+#define DOMAIN_ALIAS_RID_OPENSSH_USERS (__MSABI_LONG(0x00000249))
 
 #define SECURITY_APP_PACKAGE_AUTHORITY {0, 0, 0, 0, 0, 15}
 
@@ -3435,7 +3479,9 @@
       WinAuthenticationKeyPropertyMFASid = 116,
       WinAuthenticationKeyPropertyAttestationSid = 117,
       WinAuthenticationFreshKeyAuthSid = 118,
-      WinBuiltinDeviceOwnersSid = 119
+      WinBuiltinDeviceOwnersSid = 119,
+      WinBuiltinUserModeHardwareOperatorsSid = 120,
+      WinBuiltinOpenSSHUsersSid = 121
 } WELL_KNOWN_SID_TYPE;
 
 #define SYSTEM_LUID { 0x3e7, 0x0 }
@@ -6111,8 +6157,72 @@
     } FILE_NOTIFY_FULL_INFORMATION,*PFILE_NOTIFY_FULL_INFORMATION;
 #endif
 
+    typedef struct _FILE_STAT_INFORMATION {
+      LARGE_INTEGER FileId;
+      LARGE_INTEGER CreationTime;
+      LARGE_INTEGER LastAccessTime;
+      LARGE_INTEGER LastWriteTime;
+      LARGE_INTEGER ChangeTime;
+      LARGE_INTEGER AllocationSize;
+      LARGE_INTEGER EndOfFile;
+      DWORD FileAttributes;
+      DWORD ReparseTag;
+      DWORD NumberOfLinks;
+      ACCESS_MASK EffectiveAccess;
+    } FILE_STAT_INFORMATION, *PFILE_STAT_INFORMATION;
+
+#define LX_FILE_METADATA_HAS_UID 0x1
+#define LX_FILE_METADATA_HAS_GID 0x2
+#define LX_FILE_METADATA_HAS_MODE 0x4
+#define LX_FILE_METADATA_HAS_DEVICE_ID 0x8
+#define LX_FILE_CASE_SENSITIVE_DIR 0x10
+
+    typedef struct _FILE_STAT_LX_INFORMATION {
+      LARGE_INTEGER FileId;
+      LARGE_INTEGER CreationTime;
+      LARGE_INTEGER LastAccessTime;
+      LARGE_INTEGER LastWriteTime;
+      LARGE_INTEGER ChangeTime;
+      LARGE_INTEGER AllocationSize;
+      LARGE_INTEGER EndOfFile;
+      DWORD FileAttributes;
+      DWORD ReparseTag;
+      DWORD NumberOfLinks;
+      ACCESS_MASK EffectiveAccess;
+      DWORD LxFlags;
+      DWORD LxUid;
+      DWORD LxGid;
+      DWORD LxMode;
+      DWORD LxDeviceIdMajor;
+      DWORD LxDeviceIdMinor;
+    } FILE_STAT_LX_INFORMATION, *PFILE_STAT_LX_INFORMATION;
+
+#if NTDDI_VERSION >= NTDDI_WIN11_ZN
+    typedef struct _FILE_STAT_BASIC_INFORMATION {
+      LARGE_INTEGER FileId;
+      LARGE_INTEGER CreationTime;
+      LARGE_INTEGER LastAccessTime;
+      LARGE_INTEGER LastWriteTime;
+      LARGE_INTEGER ChangeTime;
+      LARGE_INTEGER AllocationSize;
+      LARGE_INTEGER EndOfFile;
+      DWORD FileAttributes;
+      DWORD ReparseTag;
+      DWORD NumberOfLinks;
+      DWORD DeviceType;
+      DWORD DeviceCharacteristics;
+      DWORD Reserved;
+      LARGE_INTEGER VolumeSerialNumber;
+      FILE_ID_128 FileId128;
+    } FILE_STAT_BASIC_INFORMATION, *PFILE_STAT_BASIC_INFORMATION;
+#endif
+
 #define FILE_CS_FLAG_CASE_SENSITIVE_DIR 0x00000001
 
+    typedef struct _FILE_CASE_SENSITIVE_INFORMATION {
+      DWORD Flags;
+    } FILE_CASE_SENSITIVE_INFORMATION, *PFILE_CASE_SENSITIVE_INFORMATION;
+
     typedef union _FILE_SEGMENT_ELEMENT {
       PVOID64 Buffer;
       ULONGLONG Alignment;
@@ -9240,10 +9350,22 @@
     typedef LONG (NTAPI *PVECTORED_EXCEPTION_HANDLER) (struct _EXCEPTION_POINTERS *ExceptionInfo);
 
     typedef enum _HEAP_INFORMATION_CLASS {
-      HeapCompatibilityInformation,
-      HeapEnableTerminationOnCorruption
+      HeapCompatibilityInformation = 0,
+      HeapEnableTerminationOnCorruption = 1
+#if ((NTDDI_VERSION > NTDDI_WINBLUE) || (NTDDI_VERSION == NTDDI_WINBLUE && defined(WINBLUE_KBSPRING14)))
+      ,HeapOptimizeResources = 3
+#endif
+      ,HeapTag = 7
     } HEAP_INFORMATION_CLASS;
 
+#if ((NTDDI_VERSION > NTDDI_WINBLUE) || (NTDDI_VERSION == NTDDI_WINBLUE && defined(WINBLUE_KBSPRING14)))
+#define HEAP_OPTIMIZE_RESOURCES_CURRENT_VERSION 1
+    typedef struct _HEAP_OPTIMIZE_RESOURCES_INFORMATION {
+      DWORD Version;
+      DWORD Flags;
+    } HEAP_OPTIMIZE_RESOURCES_INFORMATION, *PHEAP_OPTIMIZE_RESOURCES_INFORMATION;
+#endif
+
     typedef VOID (NTAPI *WORKERCALLBACKFUNC) (PVOID);
     typedef VOID (NTAPI *APC_CALLBACK_FUNCTION) (DWORD, PVOID, PVOID);
     typedef VOID (NTAPI *WAITORTIMERCALLBACKFUNC) (PVOID, BOOLEAN);
