diff --git a/mingw-w64-headers/include/dxgi.h b/mingw-w64-headers/include/dxgi.h
index 5d63f2c..fb47742 100644
--- a/mingw-w64-headers/include/dxgi.h
+++ b/mingw-w64-headers/include/dxgi.h
@@ -247,7 +247,7 @@
     DXGI_SWAP_CHAIN_FLAG_NONPREROTATED = 0x1,
     DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH = 0x2,
     DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE = 0x4,
-    DXGI_SWAP_CHAIN_FLAG_RESTRICTED_CONTEXT = 0x8,
+    DXGI_SWAP_CHAIN_FLAG_RESTRICTED_CONTENT = 0x8,
     DXGI_SWAP_CHAIN_FLAG_RESTRICT_SHARED_RESOURCE_DRIVER = 0x10,
     DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY = 0x20,
     DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT = 0x40,
@@ -2164,6 +2164,10 @@
     LUID AdapterLuid;
     UINT Flags;
 } DXGI_ADAPTER_DESC1;
+typedef struct DXGI_DISPLAY_COLOR_SPACE {
+    FLOAT PrimaryCoordinates[8][2];
+    FLOAT WhitePoints[16][2];
+} DXGI_DISPLAY_COLOR_SPACE;
 /*****************************************************************************
  * IDXGIAdapter1 interface
  */
diff --git a/mingw-w64-headers/include/dxgi.idl b/mingw-w64-headers/include/dxgi.idl
index c2960fd..65c5a4b 100644
--- a/mingw-w64-headers/include/dxgi.idl
+++ b/mingw-w64-headers/include/dxgi.idl
@@ -119,7 +119,7 @@
     DXGI_SWAP_CHAIN_FLAG_NONPREROTATED                          = 0x0001,
     DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH                      = 0x0002,
     DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE                         = 0x0004,
-    DXGI_SWAP_CHAIN_FLAG_RESTRICTED_CONTEXT                     = 0x0008,
+    DXGI_SWAP_CHAIN_FLAG_RESTRICTED_CONTENT                     = 0x0008,
     DXGI_SWAP_CHAIN_FLAG_RESTRICT_SHARED_RESOURCE_DRIVER        = 0x0010,
     DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY                           = 0x0020,
     DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT          = 0x0040,
@@ -462,6 +462,11 @@
     UINT   Flags;
 } DXGI_ADAPTER_DESC1;
 
+typedef struct DXGI_DISPLAY_COLOR_SPACE {
+    FLOAT PrimaryCoordinates[8][2];
+    FLOAT WhitePoints[16][2];
+} DXGI_DISPLAY_COLOR_SPACE;
+
 [
     object,
     uuid(29038f61-3839-4626-91fd-086879011a05),
diff --git a/mingw-w64-headers/include/dxgi1_2.h b/mingw-w64-headers/include/dxgi1_2.h
index d02abaf..b2b0d76 100644
--- a/mingw-w64-headers/include/dxgi1_2.h
+++ b/mingw-w64-headers/include/dxgi1_2.h
@@ -1043,7 +1043,8 @@
 
 typedef enum DXGI_SCALING {
     DXGI_SCALING_STRETCH = 0,
-    DXGI_SCALING_NONE = 1
+    DXGI_SCALING_NONE = 1,
+    DXGI_SCALING_ASPECT_RATIO_STRETCH = 2
 } DXGI_SCALING;
 typedef struct DXGI_SWAP_CHAIN_DESC1 {
     UINT Width;
@@ -1440,7 +1441,7 @@
         HANDLE hResource,
         LUID *pLuid) = 0;
 
-    virtual HRESULT STDMETHODCALLTYPE RegisterOcclusionStatusWindow(
+    virtual HRESULT STDMETHODCALLTYPE RegisterStereoStatusWindow(
         HWND WindowHandle,
         UINT wMsg,
         DWORD *pdwCookie) = 0;
@@ -1452,7 +1453,7 @@
     virtual void STDMETHODCALLTYPE UnregisterStereoStatus(
         DWORD dwCookie) = 0;
 
-    virtual HRESULT STDMETHODCALLTYPE RegisterStereoStatusWindow(
+    virtual HRESULT STDMETHODCALLTYPE RegisterOcclusionStatusWindow(
         HWND WindowHandle,
         UINT wMsg,
         DWORD *pdwCookie) = 0;
@@ -1574,7 +1575,7 @@
         HANDLE hResource,
         LUID *pLuid);
 
-    HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusWindow)(
+    HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusWindow)(
         IDXGIFactory2 *This,
         HWND WindowHandle,
         UINT wMsg,
@@ -1589,7 +1590,7 @@
         IDXGIFactory2 *This,
         DWORD dwCookie);
 
-    HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusWindow)(
+    HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusWindow)(
         IDXGIFactory2 *This,
         HWND WindowHandle,
         UINT wMsg,
@@ -1643,10 +1644,10 @@
 #define IDXGIFactory2_CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain)
 #define IDXGIFactory2_CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain)
 #define IDXGIFactory2_GetSharedResourceAdapterLuid(This,hResource,pLuid) (This)->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid)
-#define IDXGIFactory2_RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie)
+#define IDXGIFactory2_RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie)
 #define IDXGIFactory2_RegisterStereoStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie)
 #define IDXGIFactory2_UnregisterStereoStatus(This,dwCookie) (This)->lpVtbl->UnregisterStereoStatus(This,dwCookie)
-#define IDXGIFactory2_RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie)
+#define IDXGIFactory2_RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie)
 #define IDXGIFactory2_RegisterOcclusionStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie)
 #define IDXGIFactory2_UnregisterOcclusionStatus(This,dwCookie) (This)->lpVtbl->UnregisterOcclusionStatus(This,dwCookie)
 #define IDXGIFactory2_CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain)
@@ -1710,8 +1711,8 @@
 static FORCEINLINE HRESULT IDXGIFactory2_GetSharedResourceAdapterLuid(IDXGIFactory2* This,HANDLE hResource,LUID *pLuid) {
     return This->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid);
 }
-static FORCEINLINE HRESULT IDXGIFactory2_RegisterOcclusionStatusWindow(IDXGIFactory2* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
-    return This->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie);
+static FORCEINLINE HRESULT IDXGIFactory2_RegisterStereoStatusWindow(IDXGIFactory2* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
+    return This->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie);
 }
 static FORCEINLINE HRESULT IDXGIFactory2_RegisterStereoStatusEvent(IDXGIFactory2* This,HANDLE hEvent,DWORD *pdwCookie) {
     return This->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie);
@@ -1719,8 +1720,8 @@
 static FORCEINLINE void IDXGIFactory2_UnregisterStereoStatus(IDXGIFactory2* This,DWORD dwCookie) {
     This->lpVtbl->UnregisterStereoStatus(This,dwCookie);
 }
-static FORCEINLINE HRESULT IDXGIFactory2_RegisterStereoStatusWindow(IDXGIFactory2* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
-    return This->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie);
+static FORCEINLINE HRESULT IDXGIFactory2_RegisterOcclusionStatusWindow(IDXGIFactory2* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
+    return This->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie);
 }
 static FORCEINLINE HRESULT IDXGIFactory2_RegisterOcclusionStatusEvent(IDXGIFactory2* This,HANDLE hEvent,DWORD *pdwCookie) {
     return This->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie);
diff --git a/mingw-w64-headers/include/dxgi1_2.idl b/mingw-w64-headers/include/dxgi1_2.idl
index eeabd03..921a66e 100644
--- a/mingw-w64-headers/include/dxgi1_2.idl
+++ b/mingw-w64-headers/include/dxgi1_2.idl
@@ -213,7 +213,8 @@
 
 typedef enum DXGI_SCALING {
     DXGI_SCALING_STRETCH = 0,
-    DXGI_SCALING_NONE = 1
+    DXGI_SCALING_NONE = 1,
+    DXGI_SCALING_ASPECT_RATIO_STRETCH = 2,
 } DXGI_SCALING;
 
 typedef struct DXGI_SWAP_CHAIN_DESC1 {
@@ -317,7 +318,7 @@
             [in]  HANDLE hResource,
             [out] LUID *pLuid);
 
-    HRESULT RegisterOcclusionStatusWindow(
+    HRESULT RegisterStereoStatusWindow(
             [in]  HWND WindowHandle,
             [in]  UINT wMsg,
             [out] DWORD *pdwCookie);
@@ -329,7 +330,7 @@
     void UnregisterStereoStatus(
             [in]  DWORD dwCookie);
 
-    HRESULT RegisterStereoStatusWindow(
+    HRESULT RegisterOcclusionStatusWindow(
             [in]  HWND WindowHandle,
             [in]  UINT wMsg,
             [out] DWORD *pdwCookie);
diff --git a/mingw-w64-headers/include/dxgi1_3.h b/mingw-w64-headers/include/dxgi1_3.h
index fba5385..3e8d7d2 100644
--- a/mingw-w64-headers/include/dxgi1_3.h
+++ b/mingw-w64-headers/include/dxgi1_3.h
@@ -1104,7 +1104,7 @@
         HANDLE hResource,
         LUID *pLuid);
 
-    HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusWindow)(
+    HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusWindow)(
         IDXGIFactory3 *This,
         HWND WindowHandle,
         UINT wMsg,
@@ -1119,7 +1119,7 @@
         IDXGIFactory3 *This,
         DWORD dwCookie);
 
-    HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusWindow)(
+    HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusWindow)(
         IDXGIFactory3 *This,
         HWND WindowHandle,
         UINT wMsg,
@@ -1177,10 +1177,10 @@
 #define IDXGIFactory3_CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain)
 #define IDXGIFactory3_CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain)
 #define IDXGIFactory3_GetSharedResourceAdapterLuid(This,hResource,pLuid) (This)->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid)
-#define IDXGIFactory3_RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie)
+#define IDXGIFactory3_RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie)
 #define IDXGIFactory3_RegisterStereoStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie)
 #define IDXGIFactory3_UnregisterStereoStatus(This,dwCookie) (This)->lpVtbl->UnregisterStereoStatus(This,dwCookie)
-#define IDXGIFactory3_RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie)
+#define IDXGIFactory3_RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie)
 #define IDXGIFactory3_RegisterOcclusionStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie)
 #define IDXGIFactory3_UnregisterOcclusionStatus(This,dwCookie) (This)->lpVtbl->UnregisterOcclusionStatus(This,dwCookie)
 #define IDXGIFactory3_CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain)
@@ -1246,8 +1246,8 @@
 static FORCEINLINE HRESULT IDXGIFactory3_GetSharedResourceAdapterLuid(IDXGIFactory3* This,HANDLE hResource,LUID *pLuid) {
     return This->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid);
 }
-static FORCEINLINE HRESULT IDXGIFactory3_RegisterOcclusionStatusWindow(IDXGIFactory3* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
-    return This->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie);
+static FORCEINLINE HRESULT IDXGIFactory3_RegisterStereoStatusWindow(IDXGIFactory3* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
+    return This->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie);
 }
 static FORCEINLINE HRESULT IDXGIFactory3_RegisterStereoStatusEvent(IDXGIFactory3* This,HANDLE hEvent,DWORD *pdwCookie) {
     return This->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie);
@@ -1255,8 +1255,8 @@
 static FORCEINLINE void IDXGIFactory3_UnregisterStereoStatus(IDXGIFactory3* This,DWORD dwCookie) {
     This->lpVtbl->UnregisterStereoStatus(This,dwCookie);
 }
-static FORCEINLINE HRESULT IDXGIFactory3_RegisterStereoStatusWindow(IDXGIFactory3* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
-    return This->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie);
+static FORCEINLINE HRESULT IDXGIFactory3_RegisterOcclusionStatusWindow(IDXGIFactory3* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
+    return This->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie);
 }
 static FORCEINLINE HRESULT IDXGIFactory3_RegisterOcclusionStatusEvent(IDXGIFactory3* This,HANDLE hEvent,DWORD *pdwCookie) {
     return This->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie);
diff --git a/mingw-w64-headers/include/dxgi1_4.h b/mingw-w64-headers/include/dxgi1_4.h
index af262b4..d9e24a3 100644
--- a/mingw-w64-headers/include/dxgi1_4.h
+++ b/mingw-w64-headers/include/dxgi1_4.h
@@ -911,7 +911,7 @@
         HANDLE hResource,
         LUID *pLuid);
 
-    HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusWindow)(
+    HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusWindow)(
         IDXGIFactory4 *This,
         HWND WindowHandle,
         UINT wMsg,
@@ -926,7 +926,7 @@
         IDXGIFactory4 *This,
         DWORD dwCookie);
 
-    HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusWindow)(
+    HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusWindow)(
         IDXGIFactory4 *This,
         HWND WindowHandle,
         UINT wMsg,
@@ -996,10 +996,10 @@
 #define IDXGIFactory4_CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain)
 #define IDXGIFactory4_CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain)
 #define IDXGIFactory4_GetSharedResourceAdapterLuid(This,hResource,pLuid) (This)->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid)
-#define IDXGIFactory4_RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie)
+#define IDXGIFactory4_RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie)
 #define IDXGIFactory4_RegisterStereoStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie)
 #define IDXGIFactory4_UnregisterStereoStatus(This,dwCookie) (This)->lpVtbl->UnregisterStereoStatus(This,dwCookie)
-#define IDXGIFactory4_RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie)
+#define IDXGIFactory4_RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie)
 #define IDXGIFactory4_RegisterOcclusionStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie)
 #define IDXGIFactory4_UnregisterOcclusionStatus(This,dwCookie) (This)->lpVtbl->UnregisterOcclusionStatus(This,dwCookie)
 #define IDXGIFactory4_CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain)
@@ -1068,8 +1068,8 @@
 static FORCEINLINE HRESULT IDXGIFactory4_GetSharedResourceAdapterLuid(IDXGIFactory4* This,HANDLE hResource,LUID *pLuid) {
     return This->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid);
 }
-static FORCEINLINE HRESULT IDXGIFactory4_RegisterOcclusionStatusWindow(IDXGIFactory4* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
-    return This->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie);
+static FORCEINLINE HRESULT IDXGIFactory4_RegisterStereoStatusWindow(IDXGIFactory4* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
+    return This->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie);
 }
 static FORCEINLINE HRESULT IDXGIFactory4_RegisterStereoStatusEvent(IDXGIFactory4* This,HANDLE hEvent,DWORD *pdwCookie) {
     return This->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie);
@@ -1077,8 +1077,8 @@
 static FORCEINLINE void IDXGIFactory4_UnregisterStereoStatus(IDXGIFactory4* This,DWORD dwCookie) {
     This->lpVtbl->UnregisterStereoStatus(This,dwCookie);
 }
-static FORCEINLINE HRESULT IDXGIFactory4_RegisterStereoStatusWindow(IDXGIFactory4* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
-    return This->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie);
+static FORCEINLINE HRESULT IDXGIFactory4_RegisterOcclusionStatusWindow(IDXGIFactory4* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
+    return This->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie);
 }
 static FORCEINLINE HRESULT IDXGIFactory4_RegisterOcclusionStatusEvent(IDXGIFactory4* This,HANDLE hEvent,DWORD *pdwCookie) {
     return This->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie);
diff --git a/mingw-w64-headers/include/dxgi1_5.h b/mingw-w64-headers/include/dxgi1_5.h
index b1b8528..6026ff6 100644
--- a/mingw-w64-headers/include/dxgi1_5.h
+++ b/mingw-w64-headers/include/dxgi1_5.h
@@ -63,7 +63,8 @@
 } DXGI_OUTDUPL_FLAG;
 typedef enum DXGI_HDR_METADATA_TYPE {
     DXGI_HDR_METADATA_TYPE_NONE = 0x0,
-    DXGI_HDR_METADATA_TYPE_HDR10 = 0x1
+    DXGI_HDR_METADATA_TYPE_HDR10 = 0x1,
+    DXGI_HDR_METADATA_TYPE_HDR10PLUS = 0x2
 } DXGI_HDR_METADATA_TYPE;
 typedef enum _DXGI_OFFER_RESOURCE_FLAGS {
     DXGI_OFFER_RESOURCE_FLAG_ALLOW_DECOMMIT = 0x1
@@ -86,6 +87,9 @@
     UINT16 MaxContentLightLevel;
     UINT16 MaxFrameAverageLightLevel;
 } DXGI_HDR_METADATA_HDR10;
+typedef struct DXGI_HDR_METADATA_HDR10PLUS {
+    BYTE Data[72];
+} DXGI_HDR_METADATA_HDR10PLUS;
 /*****************************************************************************
  * IDXGIOutput5 interface
  */
@@ -1181,7 +1185,7 @@
         HANDLE hResource,
         LUID *pLuid);
 
-    HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusWindow)(
+    HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusWindow)(
         IDXGIFactory5 *This,
         HWND WindowHandle,
         UINT wMsg,
@@ -1196,7 +1200,7 @@
         IDXGIFactory5 *This,
         DWORD dwCookie);
 
-    HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusWindow)(
+    HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusWindow)(
         IDXGIFactory5 *This,
         HWND WindowHandle,
         UINT wMsg,
@@ -1273,10 +1277,10 @@
 #define IDXGIFactory5_CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain)
 #define IDXGIFactory5_CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain)
 #define IDXGIFactory5_GetSharedResourceAdapterLuid(This,hResource,pLuid) (This)->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid)
-#define IDXGIFactory5_RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie)
+#define IDXGIFactory5_RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie)
 #define IDXGIFactory5_RegisterStereoStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie)
 #define IDXGIFactory5_UnregisterStereoStatus(This,dwCookie) (This)->lpVtbl->UnregisterStereoStatus(This,dwCookie)
-#define IDXGIFactory5_RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie)
+#define IDXGIFactory5_RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie)
 #define IDXGIFactory5_RegisterOcclusionStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie)
 #define IDXGIFactory5_UnregisterOcclusionStatus(This,dwCookie) (This)->lpVtbl->UnregisterOcclusionStatus(This,dwCookie)
 #define IDXGIFactory5_CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain)
@@ -1347,8 +1351,8 @@
 static FORCEINLINE HRESULT IDXGIFactory5_GetSharedResourceAdapterLuid(IDXGIFactory5* This,HANDLE hResource,LUID *pLuid) {
     return This->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid);
 }
-static FORCEINLINE HRESULT IDXGIFactory5_RegisterOcclusionStatusWindow(IDXGIFactory5* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
-    return This->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie);
+static FORCEINLINE HRESULT IDXGIFactory5_RegisterStereoStatusWindow(IDXGIFactory5* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
+    return This->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie);
 }
 static FORCEINLINE HRESULT IDXGIFactory5_RegisterStereoStatusEvent(IDXGIFactory5* This,HANDLE hEvent,DWORD *pdwCookie) {
     return This->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie);
@@ -1356,8 +1360,8 @@
 static FORCEINLINE void IDXGIFactory5_UnregisterStereoStatus(IDXGIFactory5* This,DWORD dwCookie) {
     This->lpVtbl->UnregisterStereoStatus(This,dwCookie);
 }
-static FORCEINLINE HRESULT IDXGIFactory5_RegisterStereoStatusWindow(IDXGIFactory5* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
-    return This->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie);
+static FORCEINLINE HRESULT IDXGIFactory5_RegisterOcclusionStatusWindow(IDXGIFactory5* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
+    return This->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie);
 }
 static FORCEINLINE HRESULT IDXGIFactory5_RegisterOcclusionStatusEvent(IDXGIFactory5* This,HANDLE hEvent,DWORD *pdwCookie) {
     return This->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie);
diff --git a/mingw-w64-headers/include/dxgi1_5.idl b/mingw-w64-headers/include/dxgi1_5.idl
index d88d141..7919f01 100644
--- a/mingw-w64-headers/include/dxgi1_5.idl
+++ b/mingw-w64-headers/include/dxgi1_5.idl
@@ -27,6 +27,7 @@
 {
     DXGI_HDR_METADATA_TYPE_NONE = 0x0,
     DXGI_HDR_METADATA_TYPE_HDR10 = 0x1,
+    DXGI_HDR_METADATA_TYPE_HDR10PLUS = 0x2,
 } DXGI_HDR_METADATA_TYPE;
 
 typedef enum _DXGI_OFFER_RESOURCE_FLAGS
@@ -58,6 +59,11 @@
     UINT16 MaxFrameAverageLightLevel;
 } DXGI_HDR_METADATA_HDR10;
 
+typedef struct DXGI_HDR_METADATA_HDR10PLUS
+{
+    BYTE Data[72];
+} DXGI_HDR_METADATA_HDR10PLUS;
+
 [
     object,
     uuid(80a07424-ab52-42eb-833c-0c42fd282d98),
diff --git a/mingw-w64-headers/include/dxgi1_6.h b/mingw-w64-headers/include/dxgi1_6.h
index b8dc911..2778f2a 100644
--- a/mingw-w64-headers/include/dxgi1_6.h
+++ b/mingw-w64-headers/include/dxgi1_6.h
@@ -63,6 +63,9 @@
     DXGI_ADAPTER_FLAG3_REMOTE = 0x1,
     DXGI_ADAPTER_FLAG3_SOFTWARE = 0x2,
     DXGI_ADAPTER_FLAG3_ACG_COMPATIBLE = 0x4,
+    DXGI_ADAPTER_FLAG3_SUPPORT_MONITORED_FENCES = 0x8,
+    DXGI_ADAPTER_FLAG3_SUPPORT_NON_MONITORED_FENCES = 0x10,
+    DXGI_ADAPTER_FLAG3_KEYED_MUTEX_CONFORMANCE = 0x20,
     DXGI_ADAPTER_FLAG3_FORCE_DWORD = 0xffffffff
 } DXGI_ADAPTER_FLAG3;
 typedef enum DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAGS {
@@ -777,7 +780,7 @@
         HANDLE hResource,
         LUID *pLuid);
 
-    HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusWindow)(
+    HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusWindow)(
         IDXGIFactory6 *This,
         HWND WindowHandle,
         UINT wMsg,
@@ -792,7 +795,7 @@
         IDXGIFactory6 *This,
         DWORD dwCookie);
 
-    HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusWindow)(
+    HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusWindow)(
         IDXGIFactory6 *This,
         HWND WindowHandle,
         UINT wMsg,
@@ -877,10 +880,10 @@
 #define IDXGIFactory6_CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain)
 #define IDXGIFactory6_CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain)
 #define IDXGIFactory6_GetSharedResourceAdapterLuid(This,hResource,pLuid) (This)->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid)
-#define IDXGIFactory6_RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie)
+#define IDXGIFactory6_RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie)
 #define IDXGIFactory6_RegisterStereoStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie)
 #define IDXGIFactory6_UnregisterStereoStatus(This,dwCookie) (This)->lpVtbl->UnregisterStereoStatus(This,dwCookie)
-#define IDXGIFactory6_RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie)
+#define IDXGIFactory6_RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie)
 #define IDXGIFactory6_RegisterOcclusionStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie)
 #define IDXGIFactory6_UnregisterOcclusionStatus(This,dwCookie) (This)->lpVtbl->UnregisterOcclusionStatus(This,dwCookie)
 #define IDXGIFactory6_CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain)
@@ -953,8 +956,8 @@
 static FORCEINLINE HRESULT IDXGIFactory6_GetSharedResourceAdapterLuid(IDXGIFactory6* This,HANDLE hResource,LUID *pLuid) {
     return This->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid);
 }
-static FORCEINLINE HRESULT IDXGIFactory6_RegisterOcclusionStatusWindow(IDXGIFactory6* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
-    return This->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie);
+static FORCEINLINE HRESULT IDXGIFactory6_RegisterStereoStatusWindow(IDXGIFactory6* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
+    return This->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie);
 }
 static FORCEINLINE HRESULT IDXGIFactory6_RegisterStereoStatusEvent(IDXGIFactory6* This,HANDLE hEvent,DWORD *pdwCookie) {
     return This->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie);
@@ -962,8 +965,8 @@
 static FORCEINLINE void IDXGIFactory6_UnregisterStereoStatus(IDXGIFactory6* This,DWORD dwCookie) {
     This->lpVtbl->UnregisterStereoStatus(This,dwCookie);
 }
-static FORCEINLINE HRESULT IDXGIFactory6_RegisterStereoStatusWindow(IDXGIFactory6* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
-    return This->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie);
+static FORCEINLINE HRESULT IDXGIFactory6_RegisterOcclusionStatusWindow(IDXGIFactory6* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
+    return This->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie);
 }
 static FORCEINLINE HRESULT IDXGIFactory6_RegisterOcclusionStatusEvent(IDXGIFactory6* This,HANDLE hEvent,DWORD *pdwCookie) {
     return This->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie);
@@ -1123,7 +1126,7 @@
         HANDLE hResource,
         LUID *pLuid);
 
-    HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusWindow)(
+    HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusWindow)(
         IDXGIFactory7 *This,
         HWND WindowHandle,
         UINT wMsg,
@@ -1138,7 +1141,7 @@
         IDXGIFactory7 *This,
         DWORD dwCookie);
 
-    HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusWindow)(
+    HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusWindow)(
         IDXGIFactory7 *This,
         HWND WindowHandle,
         UINT wMsg,
@@ -1233,10 +1236,10 @@
 #define IDXGIFactory7_CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain)
 #define IDXGIFactory7_CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain)
 #define IDXGIFactory7_GetSharedResourceAdapterLuid(This,hResource,pLuid) (This)->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid)
-#define IDXGIFactory7_RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie)
+#define IDXGIFactory7_RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie)
 #define IDXGIFactory7_RegisterStereoStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie)
 #define IDXGIFactory7_UnregisterStereoStatus(This,dwCookie) (This)->lpVtbl->UnregisterStereoStatus(This,dwCookie)
-#define IDXGIFactory7_RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie)
+#define IDXGIFactory7_RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie)
 #define IDXGIFactory7_RegisterOcclusionStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie)
 #define IDXGIFactory7_UnregisterOcclusionStatus(This,dwCookie) (This)->lpVtbl->UnregisterOcclusionStatus(This,dwCookie)
 #define IDXGIFactory7_CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain)
@@ -1312,8 +1315,8 @@
 static FORCEINLINE HRESULT IDXGIFactory7_GetSharedResourceAdapterLuid(IDXGIFactory7* This,HANDLE hResource,LUID *pLuid) {
     return This->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid);
 }
-static FORCEINLINE HRESULT IDXGIFactory7_RegisterOcclusionStatusWindow(IDXGIFactory7* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
-    return This->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie);
+static FORCEINLINE HRESULT IDXGIFactory7_RegisterStereoStatusWindow(IDXGIFactory7* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
+    return This->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie);
 }
 static FORCEINLINE HRESULT IDXGIFactory7_RegisterStereoStatusEvent(IDXGIFactory7* This,HANDLE hEvent,DWORD *pdwCookie) {
     return This->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie);
@@ -1321,8 +1324,8 @@
 static FORCEINLINE void IDXGIFactory7_UnregisterStereoStatus(IDXGIFactory7* This,DWORD dwCookie) {
     This->lpVtbl->UnregisterStereoStatus(This,dwCookie);
 }
-static FORCEINLINE HRESULT IDXGIFactory7_RegisterStereoStatusWindow(IDXGIFactory7* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
-    return This->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie);
+static FORCEINLINE HRESULT IDXGIFactory7_RegisterOcclusionStatusWindow(IDXGIFactory7* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
+    return This->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie);
 }
 static FORCEINLINE HRESULT IDXGIFactory7_RegisterOcclusionStatusEvent(IDXGIFactory7* This,HANDLE hEvent,DWORD *pdwCookie) {
     return This->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie);
diff --git a/mingw-w64-headers/include/dxgi1_6.idl b/mingw-w64-headers/include/dxgi1_6.idl
index e24dd4b..5657f73 100644
--- a/mingw-w64-headers/include/dxgi1_6.idl
+++ b/mingw-w64-headers/include/dxgi1_6.idl
@@ -24,6 +24,9 @@
     DXGI_ADAPTER_FLAG3_REMOTE = 0x1,
     DXGI_ADAPTER_FLAG3_SOFTWARE = 0x2,
     DXGI_ADAPTER_FLAG3_ACG_COMPATIBLE = 0x4,
+    DXGI_ADAPTER_FLAG3_SUPPORT_MONITORED_FENCES = 0x8,
+    DXGI_ADAPTER_FLAG3_SUPPORT_NON_MONITORED_FENCES = 0x10,
+    DXGI_ADAPTER_FLAG3_KEYED_MUTEX_CONFORMANCE = 0x20,
     DXGI_ADAPTER_FLAG3_FORCE_DWORD = 0xffffffff,
 } DXGI_ADAPTER_FLAG3;
 
diff --git a/mingw-w64-headers/include/xaudio2.h b/mingw-w64-headers/include/xaudio2.h
index 132003c..1caa673 100644
--- a/mingw-w64-headers/include/xaudio2.h
+++ b/mingw-w64-headers/include/xaudio2.h
@@ -6183,20 +6183,13 @@
 
 #define XAUDIO2_QUANTUM_MS ((1000.00000000000 * XAUDIO2_QUANTUM_NUMERATOR) / XAUDIO2_QUANTUM_DENOMINATOR)
 
-#define XAUDIO2_E_INVALID_CALL (0x88960001)
-
-#define XAUDIO2_E_XMA_DECODER_ERROR (0x88960002)
-
-#define XAUDIO2_E_XAPO_CREATION_FAILED (0x88960003)
-
-#define XAUDIO2_E_DEVICE_INVALIDATED (0x88960004)
-
-#define XAUDIO20_E_XMA_DECODER_ERROR (0x88960001)
-
-#define XAUDIO20_E_XAPO_CREATION_FAILED (0x88960002)
-
-#define XAUDIO20_E_DEVICE_INVALIDATED (0x88960003)
-
+#define XAUDIO2_E_INVALID_CALL ((HRESULT)0x88960001)
+#define XAUDIO2_E_XMA_DECODER_ERROR ((HRESULT)0x88960002)
+#define XAUDIO2_E_XAPO_CREATION_FAILED ((HRESULT)0x88960003)
+#define XAUDIO2_E_DEVICE_INVALIDATED ((HRESULT)0x88960004)
+#define XAUDIO20_E_XMA_DECODER_ERROR ((HRESULT)0x88960001)
+#define XAUDIO20_E_XAPO_CREATION_FAILED ((HRESULT)0x88960002)
+#define XAUDIO20_E_DEVICE_INVALIDATED ((HRESULT)0x88960003)
 #ifdef XAUDIO2_HELPER_FUNCTIONS
 #define _USE_MATH_DEFINES
 #include <math.h>
diff --git a/mingw-w64-headers/include/xaudio2.idl b/mingw-w64-headers/include/xaudio2.idl
index 074454d..3201e86 100644
--- a/mingw-w64-headers/include/xaudio2.idl
+++ b/mingw-w64-headers/include/xaudio2.idl
@@ -1243,15 +1243,16 @@
 const UINT32 XAUDIO2_QUANTUM_DENOMINATOR = 100;
 const float XAUDIO2_QUANTUM_MS = (1000.0 * XAUDIO2_QUANTUM_NUMERATOR / XAUDIO2_QUANTUM_DENOMINATOR);
 
-const HRESULT XAUDIO2_E_INVALID_CALL = 0x88960001;
-const HRESULT XAUDIO2_E_XMA_DECODER_ERROR = 0x88960002;
-const HRESULT XAUDIO2_E_XAPO_CREATION_FAILED = 0x88960003;
-const HRESULT XAUDIO2_E_DEVICE_INVALIDATED = 0x88960004;
+/* use cpp_quote to retain the HRESULT type in header file */
+cpp_quote("#define XAUDIO2_E_INVALID_CALL ((HRESULT)0x88960001)")
+cpp_quote("#define XAUDIO2_E_XMA_DECODER_ERROR ((HRESULT)0x88960002)")
+cpp_quote("#define XAUDIO2_E_XAPO_CREATION_FAILED ((HRESULT)0x88960003)")
+cpp_quote("#define XAUDIO2_E_DEVICE_INVALIDATED ((HRESULT)0x88960004)")
 
 /* xaudio 2.0 error codes */
-const HRESULT XAUDIO20_E_XMA_DECODER_ERROR = 0x88960001;
-const HRESULT XAUDIO20_E_XAPO_CREATION_FAILED = 0x88960002;
-const HRESULT XAUDIO20_E_DEVICE_INVALIDATED = 0x88960003;
+cpp_quote("#define XAUDIO20_E_XMA_DECODER_ERROR ((HRESULT)0x88960001)")
+cpp_quote("#define XAUDIO20_E_XAPO_CREATION_FAILED ((HRESULT)0x88960002)")
+cpp_quote("#define XAUDIO20_E_DEVICE_INVALIDATED ((HRESULT)0x88960003)")
 
 cpp_quote("#ifdef XAUDIO2_HELPER_FUNCTIONS")
 cpp_quote("#define _USE_MATH_DEFINES")
