Updated imported headers to current Wine version.
diff --git a/mingw-w64-headers/direct-x/include/d3d11.h b/mingw-w64-headers/direct-x/include/d3d11.h
index 52c7248..24bb680 100644
--- a/mingw-w64-headers/direct-x/include/d3d11.h
+++ b/mingw-w64-headers/direct-x/include/d3d11.h
@@ -806,6 +806,10 @@
     D3D11_DEPTH_WRITE_MASK_ZERO = 0,
     D3D11_DEPTH_WRITE_MASK_ALL = 1
 } D3D11_DEPTH_WRITE_MASK;
+typedef enum D3D11_STANDARD_MULTISAMPLE_QUALITY_LEVELS {
+    D3D11_STANDARD_MULTISAMPLE_PATTERN = 0xffffffff,
+    D3D11_CENTER_MULTISAMPLE_PATTERN = 0xfffffffe
+} D3D11_STANDARD_MULTISAMPLE_QUALITY_LEVELS;
 typedef enum D3D11_DEVICE_CONTEXT_TYPE {
     D3D11_DEVICE_CONTEXT_IMMEDIATE = 0,
     D3D11_DEVICE_CONTEXT_DEFERRED = 1
@@ -829,7 +833,16 @@
     D3D11_FEATURE_ARCHITECTURE_INFO = 6,
     D3D11_FEATURE_D3D9_OPTIONS = 7,
     D3D11_FEATURE_SHADER_MIN_PRECISION_SUPPORT = 8,
-    D3D11_FEATURE_D3D9_SHADOW_SUPPORT = 9
+    D3D11_FEATURE_D3D9_SHADOW_SUPPORT = 9,
+    D3D11_FEATURE_D3D11_OPTIONS1 = 10,
+    D3D11_FEATURE_D3D9_SIMPLE_INSTANCING_SUPPORT = 11,
+    D3D11_FEATURE_MARKER_SUPPORT = 12,
+    D3D11_FEATURE_D3D9_OPTIONS1 = 13,
+    D3D11_FEATURE_D3D11_OPTIONS2 = 14,
+    D3D11_FEATURE_D3D11_OPTIONS3 = 15,
+    D3D11_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT = 16,
+    D3D11_FEATURE_D3D11_OPTIONS4 = 17,
+    D3D11_FEATURE_SHADER_CACHE = 18
 } D3D11_FEATURE;
 typedef struct D3D11_FEATURE_DATA_THREADING {
     WINBOOL DriverConcurrentCreates;
@@ -838,6 +851,14 @@
 typedef struct D3D11_FEATURE_DATA_DOUBLES {
     WINBOOL DoublePrecisionFloatShaderOps;
 } D3D11_FEATURE_DATA_DOUBLES;
+typedef struct D3D11_FEATURE_DATA_FORMAT_SUPPORT {
+    DXGI_FORMAT InFormat;
+    UINT OutFormatSupport;
+} D3D11_FEATURE_DATA_FORMAT_SUPPORT;
+typedef struct D3D11_FEATURE_DATA_FORMAT_SUPPORT2 {
+    DXGI_FORMAT InFormat;
+    UINT OutFormatSupport2;
+} D3D11_FEATURE_DATA_FORMAT_SUPPORT2;
 typedef struct D3D11_FEATURE_DATA_D3D10_X_HARDWARE_OPTIONS {
     WINBOOL ComputeShaders_Plus_RawAndStructuredBuffers_Via_Shader_4_x;
 } D3D11_FEATURE_DATA_D3D10_X_HARDWARE_OPTIONS;
@@ -857,6 +878,78 @@
     WINBOOL ExtendedDoublesShaderInstructions;
     WINBOOL ExtendedResourceSharing;
 } D3D11_FEATURE_DATA_D3D11_OPTIONS;
+typedef struct D3D11_FEATURE_DATA_ARCHITECTURE_INFO {
+    WINBOOL TileBasedDeferredRenderer;
+} D3D11_FEATURE_DATA_ARCHITECTURE_INFO;
+typedef struct D3D11_FEATURE_DATA_D3D9_OPTIONS {
+    WINBOOL FullNonPow2TextureSupport;
+} D3D11_FEATURE_DATA_D3D9_OPTIONS;
+typedef struct D3D11_FEATURE_DATA_D3D9_SHADOW_SUPPORT {
+    WINBOOL SupportsDepthAsTextureWithLessEqualComparisonFilter;
+} D3D11_FEATURE_DATA_D3D9_SHADOW_SUPPORT;
+typedef enum D3D11_SHADER_MIN_PRECISION_SUPPORT {
+    D3D11_SHADER_MIN_PRECISION_10_BIT = 0x1,
+    D3D11_SHADER_MIN_PRECISION_16_BIT = 0x2
+} D3D11_SHADER_MIN_PRECISION_SUPPORT;
+typedef struct D3D11_FEATURE_DATA_SHADER_MIN_PRECISION_SUPPORT {
+    UINT PixelShaderMinPrecision;
+    UINT AllOtherShaderStagesMinPrecision;
+} D3D11_FEATURE_DATA_SHADER_MIN_PRECISION_SUPPORT;
+typedef enum D3D11_TILED_RESOURCES_TIER {
+    D3D11_TILED_RESOURCES_NOT_SUPPORTED = 0x0,
+    D3D11_TILED_RESOURCES_TIER_1 = 0x1,
+    D3D11_TILED_RESOURCES_TIER_2 = 0x2,
+    D3D11_TILED_RESOURCES_TIER_3 = 0x3
+} D3D11_TILED_RESOURCES_TIER;
+typedef struct D3D11_FEATURE_DATA_D3D11_OPTIONS1 {
+    D3D11_TILED_RESOURCES_TIER TiledResourcesTier;
+    WINBOOL MinMaxFiltering;
+    WINBOOL ClearViewAlsoSupportsDepthOnlyFormats;
+    WINBOOL MapOnDefaultBuffers;
+} D3D11_FEATURE_DATA_D3D11_OPTIONS1;
+typedef struct D3D11_FEATURE_DATA_D3D9_SIMPLE_INSTANCING_SUPPORT {
+    WINBOOL SimpleInstancingSupported;
+} D3D11_FEATURE_DATA_D3D9_SIMPLE_INSTANCING_SUPPORT;
+typedef struct D3D11_FEATURE_DATA_MARKER_SUPPORT {
+    WINBOOL Profile;
+} D3D11_FEATURE_DATA_MARKER_SUPPORT;
+typedef struct D3D11_FEATURE_DATA_D3D9_OPTIONS1 {
+    WINBOOL FullNonPow2TextureSupported;
+    WINBOOL DepthAsTextureWithLessEqualComparisonFilterSupported;
+    WINBOOL SimpleInstancingSupported;
+    WINBOOL TextureCubeFaceRenderTargetWithNonCubeDepthStencilSupported;
+} D3D11_FEATURE_DATA_D3D9_OPTIONS1;
+typedef enum D3D11_CONSERVATIVE_RASTERIZATION_TIER {
+    D3D11_CONSERVATIVE_RASTERIZATION_NOT_SUPPORTED = 0x0,
+    D3D11_CONSERVATIVE_RASTERIZATION_TIER_1 = 0x1,
+    D3D11_CONSERVATIVE_RASTERIZATION_TIER_2 = 0x2,
+    D3D11_CONSERVATIVE_RASTERIZATION_TIER_3 = 0x3
+} D3D11_CONSERVATIVE_RASTERIZATION_TIER;
+typedef struct D3D11_FEATURE_DATA_D3D11_OPTIONS2 {
+    WINBOOL PSSpecifiedStencilRefSupported;
+    WINBOOL TypedUAVLoadAdditionalFormats;
+    WINBOOL ROVsSupported;
+    D3D11_CONSERVATIVE_RASTERIZATION_TIER ConservativeRasterizationTier;
+    D3D11_TILED_RESOURCES_TIER TiledResourcesTier;
+    WINBOOL MapOnDefaultTextures;
+    WINBOOL StandardSwizzle;
+    WINBOOL UnifiedMemoryArchitecture;
+} D3D11_FEATURE_DATA_D3D11_OPTIONS2;
+typedef struct D3D11_FEATURE_DATA_D3D11_OPTIONS3 {
+    WINBOOL VPAndRTArrayIndexFromAnyShaderFeedingRasterizer;
+} D3D11_FEATURE_DATA_D3D11_OPTIONS3;
+typedef struct D3D11_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT {
+    UINT MaxGPUVirtualAddressBitsPerResource;
+    UINT MaxGPUVirtualAddressBitsPerProcess;
+} D3D11_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT;
+typedef enum D3D11_SHADER_CACHE_SUPPORT_FLAGS {
+    D3D11_SHADER_CACHE_SUPPORT_NONE = 0x0,
+    D3D11_SHADER_CACHE_SUPPORT_AUTOMATIC_INPROC_CACHE = 0x1,
+    D3D11_SHADER_CACHE_SUPPORT_AUTOMATIC_DISK_CACHE = 0x2
+} D3D11_SHADER_CACHE_SUPPORT_FLAGS;
+typedef struct D3D11_FEATURE_DATA_SHADER_CACHE {
+    UINT SupportFlags;
+} D3D11_FEATURE_DATA_SHADER_CACHE;
 typedef enum D3D11_FILL_MODE {
     D3D11_FILL_WIREFRAME = 2,
     D3D11_FILL_SOLID = 3
diff --git a/mingw-w64-headers/direct-x/include/d3d11.idl b/mingw-w64-headers/direct-x/include/d3d11.idl
index 244020a..1355ff7 100644
--- a/mingw-w64-headers/direct-x/include/d3d11.idl
+++ b/mingw-w64-headers/direct-x/include/d3d11.idl
@@ -460,6 +460,12 @@
     D3D11_DEPTH_WRITE_MASK_ALL,
 } D3D11_DEPTH_WRITE_MASK;
 
+typedef enum D3D11_STANDARD_MULTISAMPLE_QUALITY_LEVELS
+{
+    D3D11_STANDARD_MULTISAMPLE_PATTERN = 0xffffffff,
+    D3D11_CENTER_MULTISAMPLE_PATTERN = 0xfffffffe,
+} D3D11_STANDARD_MULTISAMPLE_QUALITY_LEVELS;
+
 typedef enum D3D11_DEVICE_CONTEXT_TYPE
 {
     D3D11_DEVICE_CONTEXT_IMMEDIATE,
@@ -488,7 +494,16 @@
     D3D11_FEATURE_ARCHITECTURE_INFO,
     D3D11_FEATURE_D3D9_OPTIONS,
     D3D11_FEATURE_SHADER_MIN_PRECISION_SUPPORT,
-    D3D11_FEATURE_D3D9_SHADOW_SUPPORT
+    D3D11_FEATURE_D3D9_SHADOW_SUPPORT,
+    D3D11_FEATURE_D3D11_OPTIONS1,
+    D3D11_FEATURE_D3D9_SIMPLE_INSTANCING_SUPPORT,
+    D3D11_FEATURE_MARKER_SUPPORT,
+    D3D11_FEATURE_D3D9_OPTIONS1,
+    D3D11_FEATURE_D3D11_OPTIONS2,
+    D3D11_FEATURE_D3D11_OPTIONS3,
+    D3D11_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT,
+    D3D11_FEATURE_D3D11_OPTIONS4,
+    D3D11_FEATURE_SHADER_CACHE,
 } D3D11_FEATURE;
 
 typedef struct D3D11_FEATURE_DATA_THREADING
@@ -502,6 +517,18 @@
     BOOL DoublePrecisionFloatShaderOps;
 } D3D11_FEATURE_DATA_DOUBLES;
 
+typedef struct D3D11_FEATURE_DATA_FORMAT_SUPPORT
+{
+    DXGI_FORMAT InFormat;
+    UINT OutFormatSupport;
+} D3D11_FEATURE_DATA_FORMAT_SUPPORT;
+
+typedef struct D3D11_FEATURE_DATA_FORMAT_SUPPORT2
+{
+    DXGI_FORMAT InFormat;
+    UINT OutFormatSupport2;
+} D3D11_FEATURE_DATA_FORMAT_SUPPORT2;
+
 typedef struct D3D11_FEATURE_DATA_D3D10_X_HARDWARE_OPTIONS
 {
     BOOL ComputeShaders_Plus_RawAndStructuredBuffers_Via_Shader_4_x;
@@ -525,6 +552,110 @@
     BOOL ExtendedResourceSharing;
 } D3D11_FEATURE_DATA_D3D11_OPTIONS;
 
+typedef struct D3D11_FEATURE_DATA_ARCHITECTURE_INFO
+{
+    BOOL TileBasedDeferredRenderer;
+} D3D11_FEATURE_DATA_ARCHITECTURE_INFO;
+
+typedef struct D3D11_FEATURE_DATA_D3D9_OPTIONS
+{
+    BOOL FullNonPow2TextureSupport;
+} D3D11_FEATURE_DATA_D3D9_OPTIONS;
+
+typedef struct D3D11_FEATURE_DATA_D3D9_SHADOW_SUPPORT
+{
+    BOOL SupportsDepthAsTextureWithLessEqualComparisonFilter;
+} D3D11_FEATURE_DATA_D3D9_SHADOW_SUPPORT;
+
+typedef enum D3D11_SHADER_MIN_PRECISION_SUPPORT
+{
+    D3D11_SHADER_MIN_PRECISION_10_BIT = 0x1,
+    D3D11_SHADER_MIN_PRECISION_16_BIT = 0x2,
+} D3D11_SHADER_MIN_PRECISION_SUPPORT;
+
+typedef struct D3D11_FEATURE_DATA_SHADER_MIN_PRECISION_SUPPORT
+{
+    UINT PixelShaderMinPrecision;
+    UINT AllOtherShaderStagesMinPrecision;
+} D3D11_FEATURE_DATA_SHADER_MIN_PRECISION_SUPPORT;
+
+typedef enum D3D11_TILED_RESOURCES_TIER
+{
+    D3D11_TILED_RESOURCES_NOT_SUPPORTED = 0x0,
+    D3D11_TILED_RESOURCES_TIER_1 = 0x1,
+    D3D11_TILED_RESOURCES_TIER_2 = 0x2,
+    D3D11_TILED_RESOURCES_TIER_3 = 0x3,
+} D3D11_TILED_RESOURCES_TIER;
+
+typedef struct D3D11_FEATURE_DATA_D3D11_OPTIONS1
+{
+    D3D11_TILED_RESOURCES_TIER TiledResourcesTier;
+    BOOL MinMaxFiltering;
+    BOOL ClearViewAlsoSupportsDepthOnlyFormats;
+    BOOL MapOnDefaultBuffers;
+} D3D11_FEATURE_DATA_D3D11_OPTIONS1;
+
+typedef struct D3D11_FEATURE_DATA_D3D9_SIMPLE_INSTANCING_SUPPORT
+{
+    BOOL SimpleInstancingSupported;
+} D3D11_FEATURE_DATA_D3D9_SIMPLE_INSTANCING_SUPPORT;
+
+typedef struct D3D11_FEATURE_DATA_MARKER_SUPPORT
+{
+    BOOL Profile;
+} D3D11_FEATURE_DATA_MARKER_SUPPORT;
+
+typedef struct D3D11_FEATURE_DATA_D3D9_OPTIONS1
+{
+    BOOL FullNonPow2TextureSupported;
+    BOOL DepthAsTextureWithLessEqualComparisonFilterSupported;
+    BOOL SimpleInstancingSupported;
+    BOOL TextureCubeFaceRenderTargetWithNonCubeDepthStencilSupported;
+} D3D11_FEATURE_DATA_D3D9_OPTIONS1;
+
+typedef enum D3D11_CONSERVATIVE_RASTERIZATION_TIER
+{
+    D3D11_CONSERVATIVE_RASTERIZATION_NOT_SUPPORTED = 0x0,
+    D3D11_CONSERVATIVE_RASTERIZATION_TIER_1 = 0x1,
+    D3D11_CONSERVATIVE_RASTERIZATION_TIER_2 = 0x2,
+    D3D11_CONSERVATIVE_RASTERIZATION_TIER_3 = 0x3,
+} D3D11_CONSERVATIVE_RASTERIZATION_TIER;
+
+typedef struct D3D11_FEATURE_DATA_D3D11_OPTIONS2
+{
+    BOOL PSSpecifiedStencilRefSupported;
+    BOOL TypedUAVLoadAdditionalFormats;
+    BOOL ROVsSupported;
+    D3D11_CONSERVATIVE_RASTERIZATION_TIER ConservativeRasterizationTier;
+    D3D11_TILED_RESOURCES_TIER TiledResourcesTier;
+    BOOL MapOnDefaultTextures;
+    BOOL StandardSwizzle;
+    BOOL UnifiedMemoryArchitecture;
+} D3D11_FEATURE_DATA_D3D11_OPTIONS2;
+
+typedef struct D3D11_FEATURE_DATA_D3D11_OPTIONS3
+{
+    BOOL VPAndRTArrayIndexFromAnyShaderFeedingRasterizer;
+} D3D11_FEATURE_DATA_D3D11_OPTIONS3;
+
+typedef struct D3D11_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT
+{
+    UINT MaxGPUVirtualAddressBitsPerResource;
+    UINT MaxGPUVirtualAddressBitsPerProcess;
+} D3D11_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT;
+
+typedef enum D3D11_SHADER_CACHE_SUPPORT_FLAGS
+{
+    D3D11_SHADER_CACHE_SUPPORT_NONE = 0x0,
+    D3D11_SHADER_CACHE_SUPPORT_AUTOMATIC_INPROC_CACHE = 0x1,
+    D3D11_SHADER_CACHE_SUPPORT_AUTOMATIC_DISK_CACHE = 0x2,
+} D3D11_SHADER_CACHE_SUPPORT_FLAGS;
+
+typedef struct D3D11_FEATURE_DATA_SHADER_CACHE
+{
+    UINT SupportFlags;
+} D3D11_FEATURE_DATA_SHADER_CACHE;
+
 typedef enum D3D11_FILL_MODE
 {
     D3D11_FILL_WIREFRAME = 2,
diff --git a/mingw-w64-headers/direct-x/include/dmusici.h b/mingw-w64-headers/direct-x/include/dmusici.h
index 34e352e..50399f0 100644
--- a/mingw-w64-headers/direct-x/include/dmusici.h
+++ b/mingw-w64-headers/direct-x/include/dmusici.h
@@ -856,7 +856,7 @@
     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
     STDMETHOD_(ULONG,Release)(THIS) PURE;
     /*** IDirectMusicLoader methods ***/
-    STDMETHOD(_GetObject)(THIS_ LPDMUS_OBJECTDESC pDesc, REFIID riid, LPVOID *ppv) PURE;
+    STDMETHOD(GetObject)(THIS_ LPDMUS_OBJECTDESC pDesc, REFIID riid, LPVOID *ppv) PURE;
     STDMETHOD(SetObject)(THIS_ LPDMUS_OBJECTDESC pDesc) PURE;
     STDMETHOD(SetSearchDirectory)(THIS_ REFGUID rguidClass, WCHAR *pwzPath, WINBOOL fClear) PURE;
     STDMETHOD(ScanDirectory)(THIS_ REFGUID rguidClass, WCHAR *pwzFileExtension, WCHAR *pwzScanFileName) PURE;
@@ -874,7 +874,7 @@
 #define IDirectMusicLoader_AddRef(p)                   (p)->lpVtbl->AddRef(p)
 #define IDirectMusicLoader_Release(p)                  (p)->lpVtbl->Release(p)
 /*** IDirectMusicLoader methods ***/
-#define IDirectMusicLoader_GetObject(p,a,b,c)          (p)->lpVtbl->_GetObject(p,a,b,c)
+#define IDirectMusicLoader_GetObject(p,a,b,c)          (p)->lpVtbl->GetObject(p,a,b,c)
 #define IDirectMusicLoader_SetObject(p,a)              (p)->lpVtbl->SetObject(p,a)
 #define IDirectMusicLoader_SetSearchDirectory(p,a,b,c) (p)->lpVtbl->SetSearchDirectory(p,a,b,c)
 #define IDirectMusicLoader_ScanDirectory(p,a,b,c)      (p)->lpVtbl->ScanDirectory(p,a,b,c)
@@ -897,7 +897,7 @@
     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
     STDMETHOD_(ULONG,Release)(THIS) PURE;
     /*** IDirectMusicLoader methods ***/
-    STDMETHOD(_GetObject)(THIS_ LPDMUS_OBJECTDESC pDesc, REFIID riid, LPVOID *ppv) PURE;
+    STDMETHOD(GetObject)(THIS_ LPDMUS_OBJECTDESC pDesc, REFIID riid, LPVOID *ppv) PURE;
     STDMETHOD(SetObject)(THIS_ LPDMUS_OBJECTDESC pDesc) PURE;
     STDMETHOD(SetSearchDirectory)(THIS_ REFGUID rguidClass, WCHAR *pwzPath, WINBOOL fClear) PURE;
     STDMETHOD(ScanDirectory)(THIS_ REFGUID rguidClass, WCHAR *pwzFileExtension, WCHAR *pwzScanFileName) PURE;
@@ -919,7 +919,7 @@
 #define IDirectMusicLoader8_AddRef(p)                     (p)->lpVtbl->AddRef(p)
 #define IDirectMusicLoader8_Release(p)                    (p)->lpVtbl->Release(p)
 /*** IDirectMusicLoader methods ***/
-#define IDirectMusicLoader8_GetObject(p,a,b,c)            (p)->lpVtbl->_GetObject(p,a,b,c)
+#define IDirectMusicLoader8_GetObject(p,a,b,c)            (p)->lpVtbl->GetObject(p,a,b,c)
 #define IDirectMusicLoader8_SetObject(p,a)                (p)->lpVtbl->SetObject(p,a)
 #define IDirectMusicLoader8_SetSearchDirectory(p,a,b,c)   (p)->lpVtbl->SetSearchDirectory(p,a,b,c)
 #define IDirectMusicLoader8_ScanDirectory(p,a,b,c)        (p)->lpVtbl->ScanDirectory(p,a,b,c)
diff --git a/mingw-w64-headers/direct-x/include/dxgi1_2.h b/mingw-w64-headers/direct-x/include/dxgi1_2.h
index de3f359..226f022 100644
--- a/mingw-w64-headers/direct-x/include/dxgi1_2.h
+++ b/mingw-w64-headers/direct-x/include/dxgi1_2.h
@@ -17,6 +17,16 @@
 
 /* Forward declarations */
 
+#ifndef __IDXGIOutputDuplication_FWD_DEFINED__
+#define __IDXGIOutputDuplication_FWD_DEFINED__
+typedef interface IDXGIOutputDuplication IDXGIOutputDuplication;
+#endif
+
+#ifndef __IDXGIDisplayControl_FWD_DEFINED__
+#define __IDXGIDisplayControl_FWD_DEFINED__
+typedef interface IDXGIDisplayControl IDXGIDisplayControl;
+#endif
+
 #ifndef __IDXGIDevice2_FWD_DEFINED__
 #define __IDXGIDevice2_FWD_DEFINED__
 typedef interface IDXGIDevice2 IDXGIDevice2;
@@ -37,6 +47,11 @@
 typedef interface IDXGIAdapter2 IDXGIAdapter2;
 #endif
 
+#ifndef __IDXGIOutput1_FWD_DEFINED__
+#define __IDXGIOutput1_FWD_DEFINED__
+typedef interface IDXGIOutput1 IDXGIOutput1;
+#endif
+
 /* Headers for imported files */
 
 #include <dxgi.h>
@@ -57,6 +72,432 @@
     DXGI_ALPHA_MODE_IGNORE = 3,
     DXGI_ALPHA_MODE_FORCE_DWORD = 0xffffffff
 } DXGI_ALPHA_MODE;
+typedef struct DXGI_OUTDUPL_MOVE_RECT {
+    POINT SourcePoint;
+    RECT DestinationRect;
+} DXGI_OUTDUPL_MOVE_RECT;
+typedef struct DXGI_OUTDUPL_DESC {
+    DXGI_MODE_DESC ModeDesc;
+    DXGI_MODE_ROTATION Rotation;
+    WINBOOL DesktopImageInSystemMemory;
+} DXGI_OUTDUPL_DESC;
+typedef struct DXGI_OUTDUPL_POINTER_POSITION {
+    POINT Position;
+    WINBOOL Visible;
+} DXGI_OUTDUPL_POINTER_POSITION;
+typedef enum DXGI_OUTDUPL_POINTER_SHAPE_TYPE {
+    DXGI_OUTDUPL_POINTER_SHAPE_TYPE_MONOCHROME = 0x1,
+    DXGI_OUTDUPL_POINTER_SHAPE_TYPE_COLOR = 0x2,
+    DXGI_OUTDUPL_POINTER_SHAPE_TYPE_MASKED_COLOR = 0x4
+} DXGI_OUTDUPL_POINTER_SHAPE_TYPE;
+typedef struct DXGI_OUTDUPL_POINTER_SHAPE_INFO {
+    UINT Type;
+    UINT Width;
+    UINT Height;
+    UINT Pitch;
+    POINT HotSpot;
+} DXGI_OUTDUPL_POINTER_SHAPE_INFO;
+typedef struct DXGI_OUTDUPL_FRAME_INFO {
+    LARGE_INTEGER LastPresentTime;
+    LARGE_INTEGER LastMouseUpdateTime;
+    UINT AccumulatedFrames;
+    WINBOOL RectsCoalesced;
+    WINBOOL ProtectedContentMaskedOut;
+    DXGI_OUTDUPL_POINTER_POSITION PointerPosition;
+    UINT TotalMetadataBufferSize;
+    UINT PointerShapeBufferSize;
+} DXGI_OUTDUPL_FRAME_INFO;
+typedef struct DXGI_MODE_DESC1 {
+    UINT Width;
+    UINT Height;
+    DXGI_RATIONAL RefreshRate;
+    DXGI_FORMAT Format;
+    DXGI_MODE_SCANLINE_ORDER ScanlineOrdering;
+    DXGI_MODE_SCALING Scaling;
+    WINBOOL Stereo;
+} DXGI_MODE_DESC1;
+/*****************************************************************************
+ * IDXGIOutputDuplication interface
+ */
+#ifndef __IDXGIOutputDuplication_INTERFACE_DEFINED__
+#define __IDXGIOutputDuplication_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IDXGIOutputDuplication, 0x191cfac3, 0xa341, 0x470d, 0xb2,0x6e, 0xa8,0x64,0xf4,0x28,0x31,0x9c);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("191cfac3-a341-470d-b26e-a864f428319c")
+IDXGIOutputDuplication : public IDXGIObject
+{
+    virtual void STDMETHODCALLTYPE GetDesc(
+        DXGI_OUTDUPL_DESC *desc) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AcquireNextFrame(
+        UINT timeout_in_milliseconds,
+        DXGI_OUTDUPL_FRAME_INFO *frame_info,
+        IDXGIResource **desktop_resource) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFrameDirtyRects(
+        UINT dirty_rects_buffer_size,
+        RECT *dirty_rects_buffer,
+        UINT *dirty_rects_buffer_size_required) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFrameMoveRects(
+        UINT move_rects_buffer_size,
+        DXGI_OUTDUPL_MOVE_RECT *move_rect_buffer,
+        UINT *move_rects_buffer_size_required) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFramePointerShape(
+        UINT pointer_shape_buffer_size,
+        void *pointer_shape_buffer,
+        UINT *pointer_shape_buffer_size_required,
+        DXGI_OUTDUPL_POINTER_SHAPE_INFO *pointer_shape_info) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE MapDesktopSurface(
+        DXGI_MAPPED_RECT *locked_rect) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UnMapDesktopSurface(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ReleaseFrame(
+        ) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDXGIOutputDuplication, 0x191cfac3, 0xa341, 0x470d, 0xb2,0x6e, 0xa8,0x64,0xf4,0x28,0x31,0x9c)
+#endif
+#else
+typedef struct IDXGIOutputDuplicationVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IDXGIOutputDuplication* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IDXGIOutputDuplication* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IDXGIOutputDuplication* This);
+
+    /*** IDXGIObject methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
+        IDXGIOutputDuplication* This,
+        REFGUID guid,
+        UINT data_size,
+        const void *data);
+
+    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
+        IDXGIOutputDuplication* This,
+        REFGUID guid,
+        const IUnknown *object);
+
+    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
+        IDXGIOutputDuplication* This,
+        REFGUID guid,
+        UINT *data_size,
+        void *data);
+
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IDXGIOutputDuplication* This,
+        REFIID riid,
+        void **parent);
+
+    /*** IDXGIOutputDuplication methods ***/
+    void (STDMETHODCALLTYPE *GetDesc)(
+        IDXGIOutputDuplication* This,
+        DXGI_OUTDUPL_DESC *desc);
+
+    HRESULT (STDMETHODCALLTYPE *AcquireNextFrame)(
+        IDXGIOutputDuplication* This,
+        UINT timeout_in_milliseconds,
+        DXGI_OUTDUPL_FRAME_INFO *frame_info,
+        IDXGIResource **desktop_resource);
+
+    HRESULT (STDMETHODCALLTYPE *GetFrameDirtyRects)(
+        IDXGIOutputDuplication* This,
+        UINT dirty_rects_buffer_size,
+        RECT *dirty_rects_buffer,
+        UINT *dirty_rects_buffer_size_required);
+
+    HRESULT (STDMETHODCALLTYPE *GetFrameMoveRects)(
+        IDXGIOutputDuplication* This,
+        UINT move_rects_buffer_size,
+        DXGI_OUTDUPL_MOVE_RECT *move_rect_buffer,
+        UINT *move_rects_buffer_size_required);
+
+    HRESULT (STDMETHODCALLTYPE *GetFramePointerShape)(
+        IDXGIOutputDuplication* This,
+        UINT pointer_shape_buffer_size,
+        void *pointer_shape_buffer,
+        UINT *pointer_shape_buffer_size_required,
+        DXGI_OUTDUPL_POINTER_SHAPE_INFO *pointer_shape_info);
+
+    HRESULT (STDMETHODCALLTYPE *MapDesktopSurface)(
+        IDXGIOutputDuplication* This,
+        DXGI_MAPPED_RECT *locked_rect);
+
+    HRESULT (STDMETHODCALLTYPE *UnMapDesktopSurface)(
+        IDXGIOutputDuplication* This);
+
+    HRESULT (STDMETHODCALLTYPE *ReleaseFrame)(
+        IDXGIOutputDuplication* This);
+
+    END_INTERFACE
+} IDXGIOutputDuplicationVtbl;
+interface IDXGIOutputDuplication {
+    CONST_VTBL IDXGIOutputDuplicationVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IDXGIOutputDuplication_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDXGIOutputDuplication_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDXGIOutputDuplication_Release(This) (This)->lpVtbl->Release(This)
+/*** IDXGIObject methods ***/
+#define IDXGIOutputDuplication_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
+#define IDXGIOutputDuplication_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
+#define IDXGIOutputDuplication_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
+#define IDXGIOutputDuplication_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
+/*** IDXGIOutputDuplication methods ***/
+#define IDXGIOutputDuplication_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
+#define IDXGIOutputDuplication_AcquireNextFrame(This,timeout_in_milliseconds,frame_info,desktop_resource) (This)->lpVtbl->AcquireNextFrame(This,timeout_in_milliseconds,frame_info,desktop_resource)
+#define IDXGIOutputDuplication_GetFrameDirtyRects(This,dirty_rects_buffer_size,dirty_rects_buffer,dirty_rects_buffer_size_required) (This)->lpVtbl->GetFrameDirtyRects(This,dirty_rects_buffer_size,dirty_rects_buffer,dirty_rects_buffer_size_required)
+#define IDXGIOutputDuplication_GetFrameMoveRects(This,move_rects_buffer_size,move_rect_buffer,move_rects_buffer_size_required) (This)->lpVtbl->GetFrameMoveRects(This,move_rects_buffer_size,move_rect_buffer,move_rects_buffer_size_required)
+#define IDXGIOutputDuplication_GetFramePointerShape(This,pointer_shape_buffer_size,pointer_shape_buffer,pointer_shape_buffer_size_required,pointer_shape_info) (This)->lpVtbl->GetFramePointerShape(This,pointer_shape_buffer_size,pointer_shape_buffer,pointer_shape_buffer_size_required,pointer_shape_info)
+#define IDXGIOutputDuplication_MapDesktopSurface(This,locked_rect) (This)->lpVtbl->MapDesktopSurface(This,locked_rect)
+#define IDXGIOutputDuplication_UnMapDesktopSurface(This) (This)->lpVtbl->UnMapDesktopSurface(This)
+#define IDXGIOutputDuplication_ReleaseFrame(This) (This)->lpVtbl->ReleaseFrame(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IDXGIOutputDuplication_QueryInterface(IDXGIOutputDuplication* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IDXGIOutputDuplication_AddRef(IDXGIOutputDuplication* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IDXGIOutputDuplication_Release(IDXGIOutputDuplication* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDXGIObject methods ***/
+static FORCEINLINE HRESULT IDXGIOutputDuplication_SetPrivateData(IDXGIOutputDuplication* This,REFGUID guid,UINT data_size,const void *data) {
+    return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
+}
+static FORCEINLINE HRESULT IDXGIOutputDuplication_SetPrivateDataInterface(IDXGIOutputDuplication* This,REFGUID guid,const IUnknown *object) {
+    return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
+}
+static FORCEINLINE HRESULT IDXGIOutputDuplication_GetPrivateData(IDXGIOutputDuplication* This,REFGUID guid,UINT *data_size,void *data) {
+    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
+}
+static FORCEINLINE HRESULT IDXGIOutputDuplication_GetParent(IDXGIOutputDuplication* This,REFIID riid,void **parent) {
+    return This->lpVtbl->GetParent(This,riid,parent);
+}
+/*** IDXGIOutputDuplication methods ***/
+static FORCEINLINE void IDXGIOutputDuplication_GetDesc(IDXGIOutputDuplication* This,DXGI_OUTDUPL_DESC *desc) {
+    This->lpVtbl->GetDesc(This,desc);
+}
+static FORCEINLINE HRESULT IDXGIOutputDuplication_AcquireNextFrame(IDXGIOutputDuplication* This,UINT timeout_in_milliseconds,DXGI_OUTDUPL_FRAME_INFO *frame_info,IDXGIResource **desktop_resource) {
+    return This->lpVtbl->AcquireNextFrame(This,timeout_in_milliseconds,frame_info,desktop_resource);
+}
+static FORCEINLINE HRESULT IDXGIOutputDuplication_GetFrameDirtyRects(IDXGIOutputDuplication* This,UINT dirty_rects_buffer_size,RECT *dirty_rects_buffer,UINT *dirty_rects_buffer_size_required) {
+    return This->lpVtbl->GetFrameDirtyRects(This,dirty_rects_buffer_size,dirty_rects_buffer,dirty_rects_buffer_size_required);
+}
+static FORCEINLINE HRESULT IDXGIOutputDuplication_GetFrameMoveRects(IDXGIOutputDuplication* This,UINT move_rects_buffer_size,DXGI_OUTDUPL_MOVE_RECT *move_rect_buffer,UINT *move_rects_buffer_size_required) {
+    return This->lpVtbl->GetFrameMoveRects(This,move_rects_buffer_size,move_rect_buffer,move_rects_buffer_size_required);
+}
+static FORCEINLINE HRESULT IDXGIOutputDuplication_GetFramePointerShape(IDXGIOutputDuplication* This,UINT pointer_shape_buffer_size,void *pointer_shape_buffer,UINT *pointer_shape_buffer_size_required,DXGI_OUTDUPL_POINTER_SHAPE_INFO *pointer_shape_info) {
+    return This->lpVtbl->GetFramePointerShape(This,pointer_shape_buffer_size,pointer_shape_buffer,pointer_shape_buffer_size_required,pointer_shape_info);
+}
+static FORCEINLINE HRESULT IDXGIOutputDuplication_MapDesktopSurface(IDXGIOutputDuplication* This,DXGI_MAPPED_RECT *locked_rect) {
+    return This->lpVtbl->MapDesktopSurface(This,locked_rect);
+}
+static FORCEINLINE HRESULT IDXGIOutputDuplication_UnMapDesktopSurface(IDXGIOutputDuplication* This) {
+    return This->lpVtbl->UnMapDesktopSurface(This);
+}
+static FORCEINLINE HRESULT IDXGIOutputDuplication_ReleaseFrame(IDXGIOutputDuplication* This) {
+    return This->lpVtbl->ReleaseFrame(This);
+}
+#endif
+#endif
+
+#endif
+
+void STDMETHODCALLTYPE IDXGIOutputDuplication_GetDesc_Proxy(
+    IDXGIOutputDuplication* This,
+    DXGI_OUTDUPL_DESC *desc);
+void __RPC_STUB IDXGIOutputDuplication_GetDesc_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDXGIOutputDuplication_AcquireNextFrame_Proxy(
+    IDXGIOutputDuplication* This,
+    UINT timeout_in_milliseconds,
+    DXGI_OUTDUPL_FRAME_INFO *frame_info,
+    IDXGIResource **desktop_resource);
+void __RPC_STUB IDXGIOutputDuplication_AcquireNextFrame_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDXGIOutputDuplication_GetFrameDirtyRects_Proxy(
+    IDXGIOutputDuplication* This,
+    UINT dirty_rects_buffer_size,
+    RECT *dirty_rects_buffer,
+    UINT *dirty_rects_buffer_size_required);
+void __RPC_STUB IDXGIOutputDuplication_GetFrameDirtyRects_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDXGIOutputDuplication_GetFrameMoveRects_Proxy(
+    IDXGIOutputDuplication* This,
+    UINT move_rects_buffer_size,
+    DXGI_OUTDUPL_MOVE_RECT *move_rect_buffer,
+    UINT *move_rects_buffer_size_required);
+void __RPC_STUB IDXGIOutputDuplication_GetFrameMoveRects_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDXGIOutputDuplication_GetFramePointerShape_Proxy(
+    IDXGIOutputDuplication* This,
+    UINT pointer_shape_buffer_size,
+    void *pointer_shape_buffer,
+    UINT *pointer_shape_buffer_size_required,
+    DXGI_OUTDUPL_POINTER_SHAPE_INFO *pointer_shape_info);
+void __RPC_STUB IDXGIOutputDuplication_GetFramePointerShape_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDXGIOutputDuplication_MapDesktopSurface_Proxy(
+    IDXGIOutputDuplication* This,
+    DXGI_MAPPED_RECT *locked_rect);
+void __RPC_STUB IDXGIOutputDuplication_MapDesktopSurface_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDXGIOutputDuplication_UnMapDesktopSurface_Proxy(
+    IDXGIOutputDuplication* This);
+void __RPC_STUB IDXGIOutputDuplication_UnMapDesktopSurface_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDXGIOutputDuplication_ReleaseFrame_Proxy(
+    IDXGIOutputDuplication* This);
+void __RPC_STUB IDXGIOutputDuplication_ReleaseFrame_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IDXGIOutputDuplication_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IDXGIDisplayControl interface
+ */
+#ifndef __IDXGIDisplayControl_INTERFACE_DEFINED__
+#define __IDXGIDisplayControl_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IDXGIDisplayControl, 0xea9dbf1a, 0xc88e, 0x4486, 0x85,0x4a, 0x98,0xaa,0x01,0x38,0xf3,0x0c);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("ea9dbf1a-c88e-4486-854a-98aa0138f30c")
+IDXGIDisplayControl : public IUnknown
+{
+    virtual WINBOOL STDMETHODCALLTYPE IsStereoEnabled(
+        ) = 0;
+
+    virtual void STDMETHODCALLTYPE SetStereoEnabled(
+        WINBOOL enabled) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDXGIDisplayControl, 0xea9dbf1a, 0xc88e, 0x4486, 0x85,0x4a, 0x98,0xaa,0x01,0x38,0xf3,0x0c)
+#endif
+#else
+typedef struct IDXGIDisplayControlVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IDXGIDisplayControl* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IDXGIDisplayControl* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IDXGIDisplayControl* This);
+
+    /*** IDXGIDisplayControl methods ***/
+    WINBOOL (STDMETHODCALLTYPE *IsStereoEnabled)(
+        IDXGIDisplayControl* This);
+
+    void (STDMETHODCALLTYPE *SetStereoEnabled)(
+        IDXGIDisplayControl* This,
+        WINBOOL enabled);
+
+    END_INTERFACE
+} IDXGIDisplayControlVtbl;
+interface IDXGIDisplayControl {
+    CONST_VTBL IDXGIDisplayControlVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IDXGIDisplayControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDXGIDisplayControl_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDXGIDisplayControl_Release(This) (This)->lpVtbl->Release(This)
+/*** IDXGIDisplayControl methods ***/
+#define IDXGIDisplayControl_IsStereoEnabled(This) (This)->lpVtbl->IsStereoEnabled(This)
+#define IDXGIDisplayControl_SetStereoEnabled(This,enabled) (This)->lpVtbl->SetStereoEnabled(This,enabled)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IDXGIDisplayControl_QueryInterface(IDXGIDisplayControl* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IDXGIDisplayControl_AddRef(IDXGIDisplayControl* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IDXGIDisplayControl_Release(IDXGIDisplayControl* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDXGIDisplayControl methods ***/
+static FORCEINLINE WINBOOL IDXGIDisplayControl_IsStereoEnabled(IDXGIDisplayControl* This) {
+    return This->lpVtbl->IsStereoEnabled(This);
+}
+static FORCEINLINE void IDXGIDisplayControl_SetStereoEnabled(IDXGIDisplayControl* This,WINBOOL enabled) {
+    This->lpVtbl->SetStereoEnabled(This,enabled);
+}
+#endif
+#endif
+
+#endif
+
+WINBOOL STDMETHODCALLTYPE IDXGIDisplayControl_IsStereoEnabled_Proxy(
+    IDXGIDisplayControl* This);
+void __RPC_STUB IDXGIDisplayControl_IsStereoEnabled_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IDXGIDisplayControl_SetStereoEnabled_Proxy(
+    IDXGIDisplayControl* This,
+    WINBOOL enabled);
+void __RPC_STUB IDXGIDisplayControl_SetStereoEnabled_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IDXGIDisplayControl_INTERFACE_DEFINED__ */
+
 /*****************************************************************************
  * IDXGIDevice2 interface
  */
@@ -1385,6 +1826,309 @@
 
 #endif  /* __IDXGIAdapter2_INTERFACE_DEFINED__ */
 
+/*****************************************************************************
+ * IDXGIOutput1 interface
+ */
+#ifndef __IDXGIOutput1_INTERFACE_DEFINED__
+#define __IDXGIOutput1_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IDXGIOutput1, 0x00cddea8, 0x939b, 0x4b83, 0xa3,0x40, 0xa6,0x85,0x22,0x66,0x66,0xcc);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("00cddea8-939b-4b83-a340-a685226666cc")
+IDXGIOutput1 : public IDXGIOutput
+{
+    virtual HRESULT STDMETHODCALLTYPE GetDisplayModeList1(
+        DXGI_FORMAT enum_format,
+        UINT flags,
+        UINT *num_modes,
+        DXGI_MODE_DESC1 *desc) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE FindClosestMatchingMode1(
+        const DXGI_MODE_DESC1 *mode_to_match,
+        DXGI_MODE_DESC1 *closest_match,
+        IUnknown *concerned_device) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDisplaySurfaceData1(
+        IDXGIResource *destination) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DuplicateOutput(
+        IUnknown *device,
+        IDXGIOutputDuplication **output_duplication) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDXGIOutput1, 0x00cddea8, 0x939b, 0x4b83, 0xa3,0x40, 0xa6,0x85,0x22,0x66,0x66,0xcc)
+#endif
+#else
+typedef struct IDXGIOutput1Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IDXGIOutput1* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IDXGIOutput1* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IDXGIOutput1* This);
+
+    /*** IDXGIObject methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
+        IDXGIOutput1* This,
+        REFGUID guid,
+        UINT data_size,
+        const void *data);
+
+    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
+        IDXGIOutput1* This,
+        REFGUID guid,
+        const IUnknown *object);
+
+    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
+        IDXGIOutput1* This,
+        REFGUID guid,
+        UINT *data_size,
+        void *data);
+
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IDXGIOutput1* This,
+        REFIID riid,
+        void **parent);
+
+    /*** IDXGIOutput methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetDesc)(
+        IDXGIOutput1* This,
+        DXGI_OUTPUT_DESC *desc);
+
+    HRESULT (STDMETHODCALLTYPE *GetDisplayModeList)(
+        IDXGIOutput1* This,
+        DXGI_FORMAT format,
+        UINT flags,
+        UINT *mode_count,
+        DXGI_MODE_DESC *desc);
+
+    HRESULT (STDMETHODCALLTYPE *FindClosestMatchingMode)(
+        IDXGIOutput1* This,
+        const DXGI_MODE_DESC *mode,
+        DXGI_MODE_DESC *closest_match,
+        IUnknown *device);
+
+    HRESULT (STDMETHODCALLTYPE *WaitForVBlank)(
+        IDXGIOutput1* This);
+
+    HRESULT (STDMETHODCALLTYPE *TakeOwnership)(
+        IDXGIOutput1* This,
+        IUnknown *device,
+        WINBOOL exclusive);
+
+    void (STDMETHODCALLTYPE *ReleaseOwnership)(
+        IDXGIOutput1* This);
+
+    HRESULT (STDMETHODCALLTYPE *GetGammaControlCapabilities)(
+        IDXGIOutput1* This,
+        DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps);
+
+    HRESULT (STDMETHODCALLTYPE *SetGammaControl)(
+        IDXGIOutput1* This,
+        const DXGI_GAMMA_CONTROL *gamma_control);
+
+    HRESULT (STDMETHODCALLTYPE *GetGammaControl)(
+        IDXGIOutput1* This,
+        DXGI_GAMMA_CONTROL *gamma_control);
+
+    HRESULT (STDMETHODCALLTYPE *SetDisplaySurface)(
+        IDXGIOutput1* This,
+        IDXGISurface *surface);
+
+    HRESULT (STDMETHODCALLTYPE *GetDisplaySurfaceData)(
+        IDXGIOutput1* This,
+        IDXGISurface *surface);
+
+    HRESULT (STDMETHODCALLTYPE *GetFrameStatistics)(
+        IDXGIOutput1* This,
+        DXGI_FRAME_STATISTICS *stats);
+
+    /*** IDXGIOutput1 methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetDisplayModeList1)(
+        IDXGIOutput1* This,
+        DXGI_FORMAT enum_format,
+        UINT flags,
+        UINT *num_modes,
+        DXGI_MODE_DESC1 *desc);
+
+    HRESULT (STDMETHODCALLTYPE *FindClosestMatchingMode1)(
+        IDXGIOutput1* This,
+        const DXGI_MODE_DESC1 *mode_to_match,
+        DXGI_MODE_DESC1 *closest_match,
+        IUnknown *concerned_device);
+
+    HRESULT (STDMETHODCALLTYPE *GetDisplaySurfaceData1)(
+        IDXGIOutput1* This,
+        IDXGIResource *destination);
+
+    HRESULT (STDMETHODCALLTYPE *DuplicateOutput)(
+        IDXGIOutput1* This,
+        IUnknown *device,
+        IDXGIOutputDuplication **output_duplication);
+
+    END_INTERFACE
+} IDXGIOutput1Vtbl;
+interface IDXGIOutput1 {
+    CONST_VTBL IDXGIOutput1Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IDXGIOutput1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDXGIOutput1_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDXGIOutput1_Release(This) (This)->lpVtbl->Release(This)
+/*** IDXGIObject methods ***/
+#define IDXGIOutput1_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
+#define IDXGIOutput1_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
+#define IDXGIOutput1_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
+#define IDXGIOutput1_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
+/*** IDXGIOutput methods ***/
+#define IDXGIOutput1_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
+#define IDXGIOutput1_GetDisplayModeList(This,format,flags,mode_count,desc) (This)->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc)
+#define IDXGIOutput1_FindClosestMatchingMode(This,mode,closest_match,device) (This)->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device)
+#define IDXGIOutput1_WaitForVBlank(This) (This)->lpVtbl->WaitForVBlank(This)
+#define IDXGIOutput1_TakeOwnership(This,device,exclusive) (This)->lpVtbl->TakeOwnership(This,device,exclusive)
+#define IDXGIOutput1_ReleaseOwnership(This) (This)->lpVtbl->ReleaseOwnership(This)
+#define IDXGIOutput1_GetGammaControlCapabilities(This,gamma_caps) (This)->lpVtbl->GetGammaControlCapabilities(This,gamma_caps)
+#define IDXGIOutput1_SetGammaControl(This,gamma_control) (This)->lpVtbl->SetGammaControl(This,gamma_control)
+#define IDXGIOutput1_GetGammaControl(This,gamma_control) (This)->lpVtbl->GetGammaControl(This,gamma_control)
+#define IDXGIOutput1_SetDisplaySurface(This,surface) (This)->lpVtbl->SetDisplaySurface(This,surface)
+#define IDXGIOutput1_GetDisplaySurfaceData(This,surface) (This)->lpVtbl->GetDisplaySurfaceData(This,surface)
+#define IDXGIOutput1_GetFrameStatistics(This,stats) (This)->lpVtbl->GetFrameStatistics(This,stats)
+/*** IDXGIOutput1 methods ***/
+#define IDXGIOutput1_GetDisplayModeList1(This,enum_format,flags,num_modes,desc) (This)->lpVtbl->GetDisplayModeList1(This,enum_format,flags,num_modes,desc)
+#define IDXGIOutput1_FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device) (This)->lpVtbl->FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device)
+#define IDXGIOutput1_GetDisplaySurfaceData1(This,destination) (This)->lpVtbl->GetDisplaySurfaceData1(This,destination)
+#define IDXGIOutput1_DuplicateOutput(This,device,output_duplication) (This)->lpVtbl->DuplicateOutput(This,device,output_duplication)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IDXGIOutput1_QueryInterface(IDXGIOutput1* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IDXGIOutput1_AddRef(IDXGIOutput1* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IDXGIOutput1_Release(IDXGIOutput1* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDXGIObject methods ***/
+static FORCEINLINE HRESULT IDXGIOutput1_SetPrivateData(IDXGIOutput1* This,REFGUID guid,UINT data_size,const void *data) {
+    return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
+}
+static FORCEINLINE HRESULT IDXGIOutput1_SetPrivateDataInterface(IDXGIOutput1* This,REFGUID guid,const IUnknown *object) {
+    return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
+}
+static FORCEINLINE HRESULT IDXGIOutput1_GetPrivateData(IDXGIOutput1* This,REFGUID guid,UINT *data_size,void *data) {
+    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
+}
+static FORCEINLINE HRESULT IDXGIOutput1_GetParent(IDXGIOutput1* This,REFIID riid,void **parent) {
+    return This->lpVtbl->GetParent(This,riid,parent);
+}
+/*** IDXGIOutput methods ***/
+static FORCEINLINE HRESULT IDXGIOutput1_GetDesc(IDXGIOutput1* This,DXGI_OUTPUT_DESC *desc) {
+    return This->lpVtbl->GetDesc(This,desc);
+}
+static FORCEINLINE HRESULT IDXGIOutput1_GetDisplayModeList(IDXGIOutput1* This,DXGI_FORMAT format,UINT flags,UINT *mode_count,DXGI_MODE_DESC *desc) {
+    return This->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc);
+}
+static FORCEINLINE HRESULT IDXGIOutput1_FindClosestMatchingMode(IDXGIOutput1* This,const DXGI_MODE_DESC *mode,DXGI_MODE_DESC *closest_match,IUnknown *device) {
+    return This->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device);
+}
+static FORCEINLINE HRESULT IDXGIOutput1_WaitForVBlank(IDXGIOutput1* This) {
+    return This->lpVtbl->WaitForVBlank(This);
+}
+static FORCEINLINE HRESULT IDXGIOutput1_TakeOwnership(IDXGIOutput1* This,IUnknown *device,WINBOOL exclusive) {
+    return This->lpVtbl->TakeOwnership(This,device,exclusive);
+}
+static FORCEINLINE void IDXGIOutput1_ReleaseOwnership(IDXGIOutput1* This) {
+    This->lpVtbl->ReleaseOwnership(This);
+}
+static FORCEINLINE HRESULT IDXGIOutput1_GetGammaControlCapabilities(IDXGIOutput1* This,DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps) {
+    return This->lpVtbl->GetGammaControlCapabilities(This,gamma_caps);
+}
+static FORCEINLINE HRESULT IDXGIOutput1_SetGammaControl(IDXGIOutput1* This,const DXGI_GAMMA_CONTROL *gamma_control) {
+    return This->lpVtbl->SetGammaControl(This,gamma_control);
+}
+static FORCEINLINE HRESULT IDXGIOutput1_GetGammaControl(IDXGIOutput1* This,DXGI_GAMMA_CONTROL *gamma_control) {
+    return This->lpVtbl->GetGammaControl(This,gamma_control);
+}
+static FORCEINLINE HRESULT IDXGIOutput1_SetDisplaySurface(IDXGIOutput1* This,IDXGISurface *surface) {
+    return This->lpVtbl->SetDisplaySurface(This,surface);
+}
+static FORCEINLINE HRESULT IDXGIOutput1_GetDisplaySurfaceData(IDXGIOutput1* This,IDXGISurface *surface) {
+    return This->lpVtbl->GetDisplaySurfaceData(This,surface);
+}
+static FORCEINLINE HRESULT IDXGIOutput1_GetFrameStatistics(IDXGIOutput1* This,DXGI_FRAME_STATISTICS *stats) {
+    return This->lpVtbl->GetFrameStatistics(This,stats);
+}
+/*** IDXGIOutput1 methods ***/
+static FORCEINLINE HRESULT IDXGIOutput1_GetDisplayModeList1(IDXGIOutput1* This,DXGI_FORMAT enum_format,UINT flags,UINT *num_modes,DXGI_MODE_DESC1 *desc) {
+    return This->lpVtbl->GetDisplayModeList1(This,enum_format,flags,num_modes,desc);
+}
+static FORCEINLINE HRESULT IDXGIOutput1_FindClosestMatchingMode1(IDXGIOutput1* This,const DXGI_MODE_DESC1 *mode_to_match,DXGI_MODE_DESC1 *closest_match,IUnknown *concerned_device) {
+    return This->lpVtbl->FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device);
+}
+static FORCEINLINE HRESULT IDXGIOutput1_GetDisplaySurfaceData1(IDXGIOutput1* This,IDXGIResource *destination) {
+    return This->lpVtbl->GetDisplaySurfaceData1(This,destination);
+}
+static FORCEINLINE HRESULT IDXGIOutput1_DuplicateOutput(IDXGIOutput1* This,IUnknown *device,IDXGIOutputDuplication **output_duplication) {
+    return This->lpVtbl->DuplicateOutput(This,device,output_duplication);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IDXGIOutput1_GetDisplayModeList1_Proxy(
+    IDXGIOutput1* This,
+    DXGI_FORMAT enum_format,
+    UINT flags,
+    UINT *num_modes,
+    DXGI_MODE_DESC1 *desc);
+void __RPC_STUB IDXGIOutput1_GetDisplayModeList1_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDXGIOutput1_FindClosestMatchingMode1_Proxy(
+    IDXGIOutput1* This,
+    const DXGI_MODE_DESC1 *mode_to_match,
+    DXGI_MODE_DESC1 *closest_match,
+    IUnknown *concerned_device);
+void __RPC_STUB IDXGIOutput1_FindClosestMatchingMode1_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDXGIOutput1_GetDisplaySurfaceData1_Proxy(
+    IDXGIOutput1* This,
+    IDXGIResource *destination);
+void __RPC_STUB IDXGIOutput1_GetDisplaySurfaceData1_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDXGIOutput1_DuplicateOutput_Proxy(
+    IDXGIOutput1* This,
+    IUnknown *device,
+    IDXGIOutputDuplication **output_duplication);
+void __RPC_STUB IDXGIOutput1_DuplicateOutput_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IDXGIOutput1_INTERFACE_DEFINED__ */
+
 /* Begin additional prototypes for all interfaces */
 
 
diff --git a/mingw-w64-headers/direct-x/include/dxgi1_2.idl b/mingw-w64-headers/direct-x/include/dxgi1_2.idl
index 92f9c0e..64163dd 100644
--- a/mingw-w64-headers/direct-x/include/dxgi1_2.idl
+++ b/mingw-w64-headers/direct-x/include/dxgi1_2.idl
@@ -32,6 +32,122 @@
     DXGI_ALPHA_MODE_FORCE_DWORD = 0xffffffff
 } DXGI_ALPHA_MODE;
 
+typedef struct DXGI_OUTDUPL_MOVE_RECT
+{
+    POINT SourcePoint;
+    RECT DestinationRect;
+} DXGI_OUTDUPL_MOVE_RECT;
+
+typedef struct DXGI_OUTDUPL_DESC
+{
+    DXGI_MODE_DESC ModeDesc;
+    DXGI_MODE_ROTATION Rotation;
+    BOOL DesktopImageInSystemMemory;
+} DXGI_OUTDUPL_DESC;
+
+typedef struct DXGI_OUTDUPL_POINTER_POSITION
+{
+    POINT Position;
+    BOOL Visible;
+} DXGI_OUTDUPL_POINTER_POSITION;
+
+typedef enum DXGI_OUTDUPL_POINTER_SHAPE_TYPE
+{
+    DXGI_OUTDUPL_POINTER_SHAPE_TYPE_MONOCHROME = 0x00000001,
+    DXGI_OUTDUPL_POINTER_SHAPE_TYPE_COLOR = 0x00000002,
+    DXGI_OUTDUPL_POINTER_SHAPE_TYPE_MASKED_COLOR = 0x00000004
+} DXGI_OUTDUPL_POINTER_SHAPE_TYPE;
+
+typedef struct DXGI_OUTDUPL_POINTER_SHAPE_INFO
+{
+    UINT Type;
+    UINT Width;
+    UINT Height;
+    UINT Pitch;
+    POINT HotSpot;
+} DXGI_OUTDUPL_POINTER_SHAPE_INFO;
+
+typedef struct DXGI_OUTDUPL_FRAME_INFO
+{
+    LARGE_INTEGER LastPresentTime;
+    LARGE_INTEGER LastMouseUpdateTime;
+    UINT AccumulatedFrames;
+    BOOL RectsCoalesced;
+    BOOL ProtectedContentMaskedOut;
+    DXGI_OUTDUPL_POINTER_POSITION PointerPosition;
+    UINT TotalMetadataBufferSize;
+    UINT PointerShapeBufferSize;
+} DXGI_OUTDUPL_FRAME_INFO;
+
+typedef struct DXGI_MODE_DESC1
+{
+    UINT Width;
+    UINT Height;
+    DXGI_RATIONAL RefreshRate;
+    DXGI_FORMAT Format;
+    DXGI_MODE_SCANLINE_ORDER ScanlineOrdering;
+    DXGI_MODE_SCALING Scaling;
+    BOOL Stereo;
+} DXGI_MODE_DESC1;
+
+[
+    object,
+    uuid(191cfac3-a341-470d-b26e-a864f428319c),
+    local,
+    pointer_default(unique)
+]
+interface IDXGIOutputDuplication : IDXGIObject
+{
+    void GetDesc(
+        [out] DXGI_OUTDUPL_DESC *desc
+    );
+
+    HRESULT AcquireNextFrame(
+        [in] UINT timeout_in_milliseconds,
+        [out] DXGI_OUTDUPL_FRAME_INFO *frame_info,
+        [out] IDXGIResource **desktop_resource
+    );
+
+    HRESULT GetFrameDirtyRects(
+        [in] UINT dirty_rects_buffer_size,
+        [out] RECT *dirty_rects_buffer,
+        [out] UINT *dirty_rects_buffer_size_required
+    );
+
+    HRESULT GetFrameMoveRects(
+        [in] UINT move_rects_buffer_size,
+        [out] DXGI_OUTDUPL_MOVE_RECT *move_rect_buffer,
+        [out] UINT *move_rects_buffer_size_required
+    );
+
+    HRESULT GetFramePointerShape(
+        [in] UINT pointer_shape_buffer_size,
+        [out] void *pointer_shape_buffer,
+        [out] UINT *pointer_shape_buffer_size_required,
+        [out] DXGI_OUTDUPL_POINTER_SHAPE_INFO *pointer_shape_info
+    );
+
+    HRESULT MapDesktopSurface(
+        [out] DXGI_MAPPED_RECT *locked_rect
+    );
+
+    HRESULT UnMapDesktopSurface();
+
+    HRESULT ReleaseFrame();
+}
+
+[
+    object,
+    uuid(ea9dbf1a-c88e-4486-854a-98aa0138f30c),
+    local,
+    pointer_default(unique)
+]
+interface IDXGIDisplayControl : IUnknown
+{
+    BOOL IsStereoEnabled();
+    void SetStereoEnabled(BOOL enabled);
+}
+
 [
     object,
     uuid(05008617-fbfd-4051-a790-144884b4f6a9),
@@ -232,3 +348,34 @@
 {
     HRESULT GetDesc2([out] DXGI_ADAPTER_DESC2 *pDesc);
 }
+
+[
+    object,
+    uuid(00cddea8-939b-4b83-a340-a685226666cc),
+    local,
+    pointer_default(unique)
+]
+interface IDXGIOutput1 : IDXGIOutput
+{
+    HRESULT GetDisplayModeList1(
+        [in] DXGI_FORMAT enum_format,
+        [in] UINT flags,
+        [in, out] UINT *num_modes,
+        [out] DXGI_MODE_DESC1 *desc
+    );
+
+    HRESULT FindClosestMatchingMode1(
+        [in] const DXGI_MODE_DESC1 *mode_to_match,
+        [out] DXGI_MODE_DESC1 *closest_match,
+        [in] IUnknown *concerned_device
+    );
+
+    HRESULT GetDisplaySurfaceData1(
+        [in] IDXGIResource *destination
+    );
+
+    HRESULT DuplicateOutput(
+        [in] IUnknown *device,
+        [out] IDXGIOutputDuplication **output_duplication
+    );
+}
diff --git a/mingw-w64-headers/include/winhttp.h b/mingw-w64-headers/include/winhttp.h
index 56bfa76..1577c76 100644
--- a/mingw-w64-headers/include/winhttp.h
+++ b/mingw-w64-headers/include/winhttp.h
@@ -440,10 +440,14 @@
 #define WINHTTP_CALLBACK_STATUS_FLAG_CERT_WRONG_USAGE        0x00000040
 #define WINHTTP_CALLBACK_STATUS_FLAG_SECURITY_CHANNEL_ERROR  0x80000000
 
-#define WINHTTP_FLAG_SECURE_PROTOCOL_SSL2  0x00000008
-#define WINHTTP_FLAG_SECURE_PROTOCOL_SSL3  0x00000020
-#define WINHTTP_FLAG_SECURE_PROTOCOL_TLS1  0x00000080
-#define WINHTTP_FLAG_SECURE_PROTOCOL_ALL   (WINHTTP_FLAG_SECURE_PROTOCOL_SSL2 | WINHTTP_FLAG_SECURE_PROTOCOL_SSL3 | WINHTTP_FLAG_SECURE_PROTOCOL_TLS1)
+#define WINHTTP_FLAG_SECURE_PROTOCOL_SSL2   0x00000008
+#define WINHTTP_FLAG_SECURE_PROTOCOL_SSL3   0x00000020
+#define WINHTTP_FLAG_SECURE_PROTOCOL_TLS1   0x00000080
+#define WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_1 0x00000200
+#define WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_2 0x00000800
+#define WINHTTP_FLAG_SECURE_PROTOCOL_ALL    (WINHTTP_FLAG_SECURE_PROTOCOL_SSL2 |\
+                                             WINHTTP_FLAG_SECURE_PROTOCOL_SSL3 |\
+                                             WINHTTP_FLAG_SECURE_PROTOCOL_TLS1)
 
 #define WINHTTP_AUTH_SCHEME_BASIC      0x00000001
 #define WINHTTP_AUTH_SCHEME_NTLM       0x00000002