diff --git a/mingw-w64-headers/include/d3dx9tex.h b/mingw-w64-headers/include/d3dx9tex.h
index df8bb2c..dd8a044 100644
--- a/mingw-w64-headers/include/d3dx9tex.h
+++ b/mingw-w64-headers/include/d3dx9tex.h
@@ -182,6 +182,9 @@
         D3DFORMAT srcformat, UINT srcrowpitch, UINT srcslicepitch, const PALETTEENTRY *srcpalette,
         const D3DBOX *srcbox, DWORD filter, D3DCOLOR colorkey);
 
+HRESULT WINAPI D3DXSaveVolumeToFileInMemory(struct ID3DXBuffer **dst_buffer, D3DXIMAGE_FILEFORMAT dst_format,
+        struct IDirect3DVolume9 *src_volume, const PALETTEENTRY *src_palette, const D3DBOX *src_box);
+
 HRESULT WINAPI D3DXSaveVolumeToFileA(const char *destfile, D3DXIMAGE_FILEFORMAT destformat,
         struct IDirect3DVolume9 *srcvolume, const PALETTEENTRY *srcpalette, const D3DBOX *srcbox);
 HRESULT WINAPI D3DXSaveVolumeToFileW(const WCHAR *destfile, D3DXIMAGE_FILEFORMAT destformat,
diff --git a/mingw-w64-headers/include/dxva.h b/mingw-w64-headers/include/dxva.h
index a566c67..6bbf27f 100644
--- a/mingw-w64-headers/include/dxva.h
+++ b/mingw-w64-headers/include/dxva.h
@@ -110,6 +110,14 @@
 #define DXVA_USUAL_BLOCK_HEIGHT  8
 #define DXVA_USUAL_BLOCK_SIZE   (DXVA_USUAL_BLOCK_WIDTH * DXVA_USUAL_BLOCK_HEIGHT)
 
+#define DXVA_PICTURE_DECODING_FUNCTION          1
+#define DXVA_ALPHA_BLEND_DATA_LOAD_FUNCTION     2
+#define DXVA_ALPHA_BLEND_COMBINATION_FUNCTION   3
+#define DXVA_PICTURE_RESAMPLE_FUNCTION          4
+#define DXVA_DEBLOCKING_FILTER_FUNCTION         5
+#define DXVA_FILM_GRAIN_SYNTHESIS_FUNCTION      6
+#define DXVA_STATUS_REPORTING_FUNCTION          7
+
 #include <pshpack1.h>
 
 typedef struct _DXVA_PicEntry_H264
@@ -316,6 +324,17 @@
     USHORT wBadSliceChopping;
 } DXVA_Slice_H264_Short, *LPDXVA_Slice_H264_Short;
 
+typedef struct _DXVA_Status_H264
+{
+    UINT StatusReportFeedbackNumber;
+    DXVA_PicEntry_H264 CurrPic;
+    UCHAR field_pic_flag;
+    UCHAR bDXVA_Func;
+    UCHAR bBufType;
+    UCHAR bStatus;
+    UCHAR bReserved8Bits;
+    USHORT wNumMbsAffected;
+} DXVA_Status_H264, *LPDXVA_Status_H264;
 
 typedef struct _DXVA_PicEntry_HEVC
 {
diff --git a/mingw-w64-headers/include/windows.system.profile.h b/mingw-w64-headers/include/windows.system.profile.h
index b612bc9..3c5b858 100644
--- a/mingw-w64-headers/include/windows.system.profile.h
+++ b/mingw-w64-headers/include/windows.system.profile.h
@@ -52,6 +52,40 @@
 #endif /* __cplusplus */
 #endif
 
+#ifndef ____x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo_FWD_DEFINED__
+#define ____x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo_FWD_DEFINED__
+typedef interface __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo;
+#ifdef __cplusplus
+#define __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo ABI::Windows::System::Profile::ISystemIdentificationInfo
+namespace ABI {
+    namespace Windows {
+        namespace System {
+            namespace Profile {
+                interface ISystemIdentificationInfo;
+            }
+        }
+    }
+}
+#endif /* __cplusplus */
+#endif
+
+#ifndef ____x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics_FWD_DEFINED__
+#define ____x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics_FWD_DEFINED__
+typedef interface __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics;
+#ifdef __cplusplus
+#define __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics ABI::Windows::System::Profile::ISystemIdentificationStatics
+namespace ABI {
+    namespace Windows {
+        namespace System {
+            namespace Profile {
+                interface ISystemIdentificationStatics;
+            }
+        }
+    }
+}
+#endif /* __cplusplus */
+#endif
+
 #ifndef ____x_ABI_CWindows_CSystem_CProfile_CAnalyticsVersionInfo_FWD_DEFINED__
 #define ____x_ABI_CWindows_CSystem_CProfile_CAnalyticsVersionInfo_FWD_DEFINED__
 #ifdef __cplusplus
@@ -86,6 +120,40 @@
 #endif /* defined __cplusplus */
 #endif /* defined ____x_ABI_CWindows_CSystem_CProfile_CAnalyticsInfo_FWD_DEFINED__ */
 
+#ifndef ____x_ABI_CWindows_CSystem_CProfile_CSystemIdentification_FWD_DEFINED__
+#define ____x_ABI_CWindows_CSystem_CProfile_CSystemIdentification_FWD_DEFINED__
+#ifdef __cplusplus
+namespace ABI {
+    namespace Windows {
+        namespace System {
+            namespace Profile {
+                class SystemIdentification;
+            }
+        }
+    }
+}
+#else
+typedef struct __x_ABI_CWindows_CSystem_CProfile_CSystemIdentification __x_ABI_CWindows_CSystem_CProfile_CSystemIdentification;
+#endif /* defined __cplusplus */
+#endif /* defined ____x_ABI_CWindows_CSystem_CProfile_CSystemIdentification_FWD_DEFINED__ */
+
+#ifndef ____x_ABI_CWindows_CSystem_CProfile_CSystemIdentificationInfo_FWD_DEFINED__
+#define ____x_ABI_CWindows_CSystem_CProfile_CSystemIdentificationInfo_FWD_DEFINED__
+#ifdef __cplusplus
+namespace ABI {
+    namespace Windows {
+        namespace System {
+            namespace Profile {
+                class SystemIdentificationInfo;
+            }
+        }
+    }
+}
+#else
+typedef struct __x_ABI_CWindows_CSystem_CProfile_CSystemIdentificationInfo __x_ABI_CWindows_CSystem_CProfile_CSystemIdentificationInfo;
+#endif /* defined __cplusplus */
+#endif /* defined ____x_ABI_CWindows_CSystem_CProfile_CSystemIdentificationInfo_FWD_DEFINED__ */
+
 /* Headers for imported files */
 
 #include <inspectable.h>
@@ -100,6 +168,10 @@
 extern "C" {
 #endif
 
+#ifndef __cplusplus
+typedef enum __x_ABI_CWindows_CSystem_CProfile_CSystemIdentificationSource __x_ABI_CWindows_CSystem_CProfile_CSystemIdentificationSource;
+#endif /* __cplusplus */
+
 #ifndef ____x_ABI_CWindows_CSystem_CProfile_CIAnalyticsInfoStatics_FWD_DEFINED__
 #define ____x_ABI_CWindows_CSystem_CProfile_CIAnalyticsInfoStatics_FWD_DEFINED__
 typedef interface __x_ABI_CWindows_CSystem_CProfile_CIAnalyticsInfoStatics __x_ABI_CWindows_CSystem_CProfile_CIAnalyticsInfoStatics;
@@ -168,6 +240,75 @@
 #endif /* __cplusplus */
 #endif
 
+#ifndef ____x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo_FWD_DEFINED__
+#define ____x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo_FWD_DEFINED__
+typedef interface __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo;
+#ifdef __cplusplus
+#define __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo ABI::Windows::System::Profile::ISystemIdentificationInfo
+namespace ABI {
+    namespace Windows {
+        namespace System {
+            namespace Profile {
+                interface ISystemIdentificationInfo;
+            }
+        }
+    }
+}
+#endif /* __cplusplus */
+#endif
+
+#ifndef ____x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics_FWD_DEFINED__
+#define ____x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics_FWD_DEFINED__
+typedef interface __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics;
+#ifdef __cplusplus
+#define __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics ABI::Windows::System::Profile::ISystemIdentificationStatics
+namespace ABI {
+    namespace Windows {
+        namespace System {
+            namespace Profile {
+                interface ISystemIdentificationStatics;
+            }
+        }
+    }
+}
+#endif /* __cplusplus */
+#endif
+
+#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x30000
+#ifdef __cplusplus
+} /* extern "C" */
+namespace ABI {
+    namespace Windows {
+        namespace System {
+            namespace Profile {
+                enum SystemIdentificationSource {
+                    SystemIdentificationSource_None = 0,
+                    SystemIdentificationSource_Tpm = 1,
+                    SystemIdentificationSource_Uefi = 2,
+#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x50000
+                    SystemIdentificationSource_Registry = 3
+#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x50000 */
+                };
+            }
+        }
+    }
+}
+extern "C" {
+#else
+enum __x_ABI_CWindows_CSystem_CProfile_CSystemIdentificationSource {
+    SystemIdentificationSource_None = 0,
+    SystemIdentificationSource_Tpm = 1,
+    SystemIdentificationSource_Uefi = 2,
+#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x50000
+    SystemIdentificationSource_Registry = 3
+#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x50000 */
+};
+#ifdef WIDL_using_Windows_System_Profile
+#define SystemIdentificationSource __x_ABI_CWindows_CSystem_CProfile_CSystemIdentificationSource
+#endif /* WIDL_using_Windows_System_Profile */
+#endif
+
+#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x30000 */
 /*****************************************************************************
  * IAnalyticsInfoStatics interface
  */
@@ -448,6 +589,288 @@
 #endif  /* ____x_ABI_CWindows_CSystem_CProfile_CIAnalyticsVersionInfo_INTERFACE_DEFINED__ */
 #endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */
 
+/*****************************************************************************
+ * ISystemIdentificationInfo interface
+ */
+#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x30000
+#ifndef ____x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo_INTERFACE_DEFINED__
+#define ____x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID___x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo, 0x0c659e7d, 0xc3c2, 0x4d33, 0xa2,0xdf, 0x21,0xbc,0x41,0x91,0x6e,0xb3);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+} /* extern "C" */
+namespace ABI {
+    namespace Windows {
+        namespace System {
+            namespace Profile {
+                MIDL_INTERFACE("0c659e7d-c3c2-4d33-a2df-21bc41916eb3")
+                ISystemIdentificationInfo : public IInspectable
+                {
+                    virtual HRESULT STDMETHODCALLTYPE get_Id(
+                        ABI::Windows::Storage::Streams::IBuffer **value) = 0;
+
+                    virtual HRESULT STDMETHODCALLTYPE get_Source(
+                        ABI::Windows::System::Profile::SystemIdentificationSource *value) = 0;
+
+                };
+            }
+        }
+    }
+}
+extern "C" {
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(__x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo, 0x0c659e7d, 0xc3c2, 0x4d33, 0xa2,0xdf, 0x21,0xbc,0x41,0x91,0x6e,0xb3)
+#endif
+#else
+typedef struct __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfoVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo *This);
+
+    /*** IInspectable methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetIids)(
+        __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo *This,
+        ULONG *iidCount,
+        IID **iids);
+
+    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
+        __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo *This,
+        HSTRING *className);
+
+    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
+        __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo *This,
+        TrustLevel *trustLevel);
+
+    /*** ISystemIdentificationInfo methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Id)(
+        __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo *This,
+        __x_ABI_CWindows_CStorage_CStreams_CIBuffer **value);
+
+    HRESULT (STDMETHODCALLTYPE *get_Source)(
+        __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo *This,
+        __x_ABI_CWindows_CSystem_CProfile_CSystemIdentificationSource *value);
+
+    END_INTERFACE
+} __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfoVtbl;
+
+interface __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo {
+    CONST_VTBL __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfoVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo_Release(This) (This)->lpVtbl->Release(This)
+/*** IInspectable methods ***/
+#define __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
+#define __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
+#define __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
+/*** ISystemIdentificationInfo methods ***/
+#define __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo_get_Id(This,value) (This)->lpVtbl->get_Id(This,value)
+#define __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo_get_Source(This,value) (This)->lpVtbl->get_Source(This,value)
+#else
+/*** IUnknown methods ***/
+static inline HRESULT __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo_QueryInterface(__x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static inline ULONG __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo_AddRef(__x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static inline ULONG __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo_Release(__x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IInspectable methods ***/
+static inline HRESULT __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo_GetIids(__x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo* This,ULONG *iidCount,IID **iids) {
+    return This->lpVtbl->GetIids(This,iidCount,iids);
+}
+static inline HRESULT __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo_GetRuntimeClassName(__x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo* This,HSTRING *className) {
+    return This->lpVtbl->GetRuntimeClassName(This,className);
+}
+static inline HRESULT __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo_GetTrustLevel(__x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo* This,TrustLevel *trustLevel) {
+    return This->lpVtbl->GetTrustLevel(This,trustLevel);
+}
+/*** ISystemIdentificationInfo methods ***/
+static inline HRESULT __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo_get_Id(__x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo* This,__x_ABI_CWindows_CStorage_CStreams_CIBuffer **value) {
+    return This->lpVtbl->get_Id(This,value);
+}
+static inline HRESULT __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo_get_Source(__x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo* This,__x_ABI_CWindows_CSystem_CProfile_CSystemIdentificationSource *value) {
+    return This->lpVtbl->get_Source(This,value);
+}
+#endif
+#ifdef WIDL_using_Windows_System_Profile
+#define IID_ISystemIdentificationInfo IID___x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo
+#define ISystemIdentificationInfoVtbl __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfoVtbl
+#define ISystemIdentificationInfo __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo
+#define ISystemIdentificationInfo_QueryInterface __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo_QueryInterface
+#define ISystemIdentificationInfo_AddRef __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo_AddRef
+#define ISystemIdentificationInfo_Release __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo_Release
+#define ISystemIdentificationInfo_GetIids __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo_GetIids
+#define ISystemIdentificationInfo_GetRuntimeClassName __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo_GetRuntimeClassName
+#define ISystemIdentificationInfo_GetTrustLevel __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo_GetTrustLevel
+#define ISystemIdentificationInfo_get_Id __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo_get_Id
+#define ISystemIdentificationInfo_get_Source __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo_get_Source
+#endif /* WIDL_using_Windows_System_Profile */
+#endif
+
+#endif
+
+#endif  /* ____x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo_INTERFACE_DEFINED__ */
+#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x30000 */
+
+/*****************************************************************************
+ * ISystemIdentificationStatics interface
+ */
+#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x30000
+#ifndef ____x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics_INTERFACE_DEFINED__
+#define ____x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID___x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics, 0x5581f42a, 0xd3df, 0x4d93, 0xa3,0x7d, 0xc4,0x1a,0x61,0x6c,0x6d,0x01);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+} /* extern "C" */
+namespace ABI {
+    namespace Windows {
+        namespace System {
+            namespace Profile {
+                MIDL_INTERFACE("5581f42a-d3df-4d93-a37d-c41a616c6d01")
+                ISystemIdentificationStatics : public IInspectable
+                {
+                    virtual HRESULT STDMETHODCALLTYPE GetSystemIdForPublisher(
+                        ABI::Windows::System::Profile::ISystemIdentificationInfo **result) = 0;
+
+                    virtual HRESULT STDMETHODCALLTYPE GetSystemIdForUser(
+                        ABI::Windows::System::IUser *user,
+                        ABI::Windows::System::Profile::ISystemIdentificationInfo **result) = 0;
+
+                };
+            }
+        }
+    }
+}
+extern "C" {
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(__x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics, 0x5581f42a, 0xd3df, 0x4d93, 0xa3,0x7d, 0xc4,0x1a,0x61,0x6c,0x6d,0x01)
+#endif
+#else
+typedef struct __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStaticsVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics *This);
+
+    /*** IInspectable methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetIids)(
+        __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics *This,
+        ULONG *iidCount,
+        IID **iids);
+
+    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
+        __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics *This,
+        HSTRING *className);
+
+    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
+        __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics *This,
+        TrustLevel *trustLevel);
+
+    /*** ISystemIdentificationStatics methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetSystemIdForPublisher)(
+        __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics *This,
+        __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo **result);
+
+    HRESULT (STDMETHODCALLTYPE *GetSystemIdForUser)(
+        __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics *This,
+        __x_ABI_CWindows_CSystem_CIUser *user,
+        __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo **result);
+
+    END_INTERFACE
+} __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStaticsVtbl;
+
+interface __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics {
+    CONST_VTBL __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStaticsVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics_Release(This) (This)->lpVtbl->Release(This)
+/*** IInspectable methods ***/
+#define __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
+#define __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
+#define __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
+/*** ISystemIdentificationStatics methods ***/
+#define __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics_GetSystemIdForPublisher(This,result) (This)->lpVtbl->GetSystemIdForPublisher(This,result)
+#define __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics_GetSystemIdForUser(This,user,result) (This)->lpVtbl->GetSystemIdForUser(This,user,result)
+#else
+/*** IUnknown methods ***/
+static inline HRESULT __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics_QueryInterface(__x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static inline ULONG __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics_AddRef(__x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static inline ULONG __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics_Release(__x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IInspectable methods ***/
+static inline HRESULT __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics_GetIids(__x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics* This,ULONG *iidCount,IID **iids) {
+    return This->lpVtbl->GetIids(This,iidCount,iids);
+}
+static inline HRESULT __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics_GetRuntimeClassName(__x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics* This,HSTRING *className) {
+    return This->lpVtbl->GetRuntimeClassName(This,className);
+}
+static inline HRESULT __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics_GetTrustLevel(__x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics* This,TrustLevel *trustLevel) {
+    return This->lpVtbl->GetTrustLevel(This,trustLevel);
+}
+/*** ISystemIdentificationStatics methods ***/
+static inline HRESULT __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics_GetSystemIdForPublisher(__x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics* This,__x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo **result) {
+    return This->lpVtbl->GetSystemIdForPublisher(This,result);
+}
+static inline HRESULT __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics_GetSystemIdForUser(__x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics* This,__x_ABI_CWindows_CSystem_CIUser *user,__x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationInfo **result) {
+    return This->lpVtbl->GetSystemIdForUser(This,user,result);
+}
+#endif
+#ifdef WIDL_using_Windows_System_Profile
+#define IID_ISystemIdentificationStatics IID___x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics
+#define ISystemIdentificationStaticsVtbl __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStaticsVtbl
+#define ISystemIdentificationStatics __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics
+#define ISystemIdentificationStatics_QueryInterface __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics_QueryInterface
+#define ISystemIdentificationStatics_AddRef __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics_AddRef
+#define ISystemIdentificationStatics_Release __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics_Release
+#define ISystemIdentificationStatics_GetIids __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics_GetIids
+#define ISystemIdentificationStatics_GetRuntimeClassName __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics_GetRuntimeClassName
+#define ISystemIdentificationStatics_GetTrustLevel __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics_GetTrustLevel
+#define ISystemIdentificationStatics_GetSystemIdForPublisher __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics_GetSystemIdForPublisher
+#define ISystemIdentificationStatics_GetSystemIdForUser __x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics_GetSystemIdForUser
+#endif /* WIDL_using_Windows_System_Profile */
+#endif
+
+#endif
+
+#endif  /* ____x_ABI_CWindows_CSystem_CProfile_CISystemIdentificationStatics_INTERFACE_DEFINED__ */
+#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x30000 */
+
 /*
  * Class Windows.System.Profile.AnalyticsVersionInfo
  */
@@ -480,6 +903,38 @@
 #endif /* RUNTIMECLASS_Windows_System_Profile_AnalyticsInfo_DEFINED */
 #endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */
 
+/*
+ * Class Windows.System.Profile.SystemIdentification
+ */
+#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x30000
+#ifndef RUNTIMECLASS_Windows_System_Profile_SystemIdentification_DEFINED
+#define RUNTIMECLASS_Windows_System_Profile_SystemIdentification_DEFINED
+#if !defined(_MSC_VER) && !defined(__MINGW32__)
+static const WCHAR RuntimeClass_Windows_System_Profile_SystemIdentification[] = {'W','i','n','d','o','w','s','.','S','y','s','t','e','m','.','P','r','o','f','i','l','e','.','S','y','s','t','e','m','I','d','e','n','t','i','f','i','c','a','t','i','o','n',0};
+#elif defined(__GNUC__) && !defined(__cplusplus)
+const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_System_Profile_SystemIdentification[] = L"Windows.System.Profile.SystemIdentification";
+#else
+extern const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_System_Profile_SystemIdentification[] = {'W','i','n','d','o','w','s','.','S','y','s','t','e','m','.','P','r','o','f','i','l','e','.','S','y','s','t','e','m','I','d','e','n','t','i','f','i','c','a','t','i','o','n',0};
+#endif
+#endif /* RUNTIMECLASS_Windows_System_Profile_SystemIdentification_DEFINED */
+#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x30000 */
+
+/*
+ * Class Windows.System.Profile.SystemIdentificationInfo
+ */
+#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x30000
+#ifndef RUNTIMECLASS_Windows_System_Profile_SystemIdentificationInfo_DEFINED
+#define RUNTIMECLASS_Windows_System_Profile_SystemIdentificationInfo_DEFINED
+#if !defined(_MSC_VER) && !defined(__MINGW32__)
+static const WCHAR RuntimeClass_Windows_System_Profile_SystemIdentificationInfo[] = {'W','i','n','d','o','w','s','.','S','y','s','t','e','m','.','P','r','o','f','i','l','e','.','S','y','s','t','e','m','I','d','e','n','t','i','f','i','c','a','t','i','o','n','I','n','f','o',0};
+#elif defined(__GNUC__) && !defined(__cplusplus)
+const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_System_Profile_SystemIdentificationInfo[] = L"Windows.System.Profile.SystemIdentificationInfo";
+#else
+extern const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_System_Profile_SystemIdentificationInfo[] = {'W','i','n','d','o','w','s','.','S','y','s','t','e','m','.','P','r','o','f','i','l','e','.','S','y','s','t','e','m','I','d','e','n','t','i','f','i','c','a','t','i','o','n','I','n','f','o',0};
+#endif
+#endif /* RUNTIMECLASS_Windows_System_Profile_SystemIdentificationInfo_DEFINED */
+#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x30000 */
+
 /* Begin additional prototypes for all interfaces */
 
 ULONG           __RPC_USER HSTRING_UserSize     (ULONG *, ULONG, HSTRING *);
diff --git a/mingw-w64-headers/include/windows.system.profile.idl b/mingw-w64-headers/include/windows.system.profile.idl
index 90a561c..9e0b0ed 100644
--- a/mingw-w64-headers/include/windows.system.profile.idl
+++ b/mingw-w64-headers/include/windows.system.profile.idl
@@ -31,13 +31,27 @@
 #endif
 
 namespace Windows.System.Profile {
-
+    typedef enum SystemIdentificationSource SystemIdentificationSource;
     interface IAnalyticsInfoStatics;
     interface IAnalyticsInfoStatics2;
     interface IAnalyticsVersionInfo;
     interface IAnalyticsVersionInfo2;
+    interface ISystemIdentificationInfo;
+    interface ISystemIdentificationStatics;
     runtimeclass AnalyticsVersionInfo;
     runtimeclass AnalyticsInfo;
+    runtimeclass SystemIdentification;
+    runtimeclass SystemIdentificationInfo;
+
+    [contract(Windows.Foundation.UniversalApiContract, 3.0)]
+    enum SystemIdentificationSource
+    {
+        None     = 0,
+        Tpm      = 1,
+        Uefi     = 2,
+        [contract(Windows.Foundation.UniversalApiContract, 5.0)]
+        Registry = 3,
+    };
 
     [
         contract(Windows.Foundation.UniversalApiContract, 1.0),
@@ -62,6 +76,29 @@
     }
 
     [
+        contract(Windows.Foundation.UniversalApiContract, 3.0),
+        exclusiveto(Windows.System.Profile.SystemIdentificationInfo),
+        uuid(0c659e7d-c3c2-4d33-a2df-21bc41916eb3)
+    ]
+    interface ISystemIdentificationInfo : IInspectable
+    {
+        [propget] HRESULT Id([out, retval] Windows.Storage.Streams.IBuffer **value);
+        [propget] HRESULT Source([out, retval] Windows.System.Profile.SystemIdentificationSource *value);
+    }
+
+    [
+        contract(Windows.Foundation.UniversalApiContract, 3.0),
+        exclusiveto(Windows.System.Profile.SystemIdentification),
+        uuid(5581f42a-d3df-4d93-a37d-c41a616c6d01)
+    ]
+    interface ISystemIdentificationStatics : IInspectable
+    {
+        HRESULT GetSystemIdForPublisher([out, retval] Windows.System.Profile.SystemIdentificationInfo **result);
+        HRESULT GetSystemIdForUser([in] Windows.System.User *user, [out, retval] Windows.System.Profile.SystemIdentificationInfo **result);
+    }
+
+#ifndef _WINDOWS_SYSTEM_PROFILE_SYSTEM_ID
+    [
         contract(Windows.Foundation.UniversalApiContract, 1.0),
         marshaling_behavior(agile),
         threading(both)
@@ -82,5 +119,27 @@
     runtimeclass AnalyticsInfo
     {
     }
+#endif
 
+#ifndef _TWINAPI_APPCORE
+    [
+        contract(Windows.Foundation.UniversalApiContract, 3.0),
+        marshaling_behavior(agile),
+        static(Windows.System.Profile.ISystemIdentificationStatics, Windows.Foundation.UniversalApiContract, 3.0),
+        threading(both)
+    ]
+    runtimeclass SystemIdentification
+    {
+    }
+
+    [
+        contract(Windows.Foundation.UniversalApiContract, 3.0),
+        marshaling_behavior(agile),
+        threading(both)
+    ]
+    runtimeclass SystemIdentificationInfo
+    {
+        [default] interface Windows.System.Profile.ISystemIdentificationInfo;
+    }
+#endif
 }
diff --git a/mingw-w64-headers/include/wmsdkidl.idl b/mingw-w64-headers/include/wmsdkidl.idl
index ccbbbc6..39df6eb 100644
--- a/mingw-w64-headers/include/wmsdkidl.idl
+++ b/mingw-w64-headers/include/wmsdkidl.idl
@@ -210,7 +210,7 @@
     WMT_Storage_Format_V1   = 1
 } WMT_STORAGE_FORMAT;
 
-#include <pshpack2.h>
+#pragma pack(push,2)
 typedef struct _WMStreamPrioritizationRecord
 {
     WORD wStreamNumber;
@@ -224,7 +224,7 @@
     DWORD dwUserbits;
     DWORD dwAmFlags;
 } WMT_TIMECODE_EXTENSION_DATA;
-#include <poppack.h>
+#pragma pack(pop)
 
 typedef struct _WM_PORT_NUMBER_RANGE
 {
diff --git a/mingw-w64-headers/include/xaudio2.h b/mingw-w64-headers/include/xaudio2.h
index 1d378e6..1223433 100644
--- a/mingw-w64-headers/include/xaudio2.h
+++ b/mingw-w64-headers/include/xaudio2.h
@@ -93,7 +93,7 @@
 extern "C" {
 #endif
 
-#include <pshpack1.h>
+#pragma pack(push,1)
 #ifndef __IXAudio2Voice_FWD_DEFINED__
 #define __IXAudio2Voice_FWD_DEFINED__
 typedef interface IXAudio2Voice IXAudio2Voice;
@@ -1856,7 +1856,7 @@
 inline static float XAudio2CutoffFrequencyToRadians(float cutofffreq, UINT32 samplerate) { if ((UINT32)(cutofffreq * 6.0f) >= samplerate) { return XAUDIO2_MAX_FILTER_FREQUENCY; } return 2.0f * sinf((float)M_PI * cutofffreq / samplerate); }
 inline static float XAudio2RadiansToCutoffFrequency(float radians, float samplerate) { return samplerate * asinf(radians/2.0f) / (float)M_PI; }
 #endif
-#include <poppack.h>
+#pragma pack(pop)
 HRESULT WINAPI XAudio2Create(IXAudio2** pxaudio2, UINT32 flags, XAUDIO2_PROCESSOR processor);
 /* Begin additional prototypes for all interfaces */
 
diff --git a/mingw-w64-headers/include/xaudio2.idl b/mingw-w64-headers/include/xaudio2.idl
index dd75ae7..ac63757 100644
--- a/mingw-w64-headers/include/xaudio2.idl
+++ b/mingw-w64-headers/include/xaudio2.idl
@@ -26,7 +26,7 @@
 import "audiosessiontypes.h";
 import "mmreg.h";
 
-cpp_quote("#include <pshpack1.h>")
+#pragma pack(push,1)
 
 #if XAUDIO2_VER <= 7
 
@@ -599,7 +599,7 @@
 cpp_quote("inline static float XAudio2RadiansToCutoffFrequency(float radians, float samplerate) { return samplerate * asinf(radians/2.0f) / (float)M_PI; }")
 cpp_quote("#endif")
 
-cpp_quote("#include <poppack.h>")
+#pragma pack(pop)
 
 #if XAUDIO2_VER >= 8
 cpp_quote("HRESULT WINAPI XAudio2Create(IXAudio2** pxaudio2, UINT32 flags, XAUDIO2_PROCESSOR processor);")
