diff --git a/mingw-w64-headers/include/ChangeLog b/mingw-w64-headers/include/ChangeLog
index 2fca47c..24a8566 100644
--- a/mingw-w64-headers/include/ChangeLog
+++ b/mingw-w64-headers/include/ChangeLog
@@ -1,3 +1,47 @@
+2013-05-16  Kai Tietz  <ktietz@redhat.com>
+
+	* wingdi.h: Add support for WINAPI_FAMILY_PARTITION.
+	(ETO_REVERSE_INDEX_MAP):  New macros.
+	(MILCORE_TS_QUERYVER_RESULT_FALSE, MILCORE_TS_QUERYVER_RESULT_TRUE): Likewise.
+	(GDI_OBJ_LAST): Likewise.
+	(EXTLOGPEN32, *PEXTLOGPEN32, *NPEXTLOGPEN32, *LPEXTLOGPEN32): New.
+	(HS_API_MAX): New.
+	(DM_INTERLACED): New.
+	(DISPLAY_DEVICE_ACC_DRIVER): New.
+	(DISPLAY_DEVICE_TS_COMPATIBLE): New.
+	(DISPLAY_DEVICE_UNSAFE_MODES_ON): New.
+	(DISPLAYCONFIG_MAXPATH): New.
+	(DISPLAYCONFIG_RATIONAL): New.
+	(DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY): New.
+	(DISPLAYCONFIG_SCANLINE_ORDERING): New.
+	(DISPLAYCONFIG_DEVICE_INFO_TYPE): New.
+	(DISPLAYCONFIG_TOPOLOGY_ID): New.
+	(DISPLAYCONFIG_PATH_ACTIVE): New.
+	(DISPLAYCONFIG_PATH_INFO): New.
+	(DISPLAYCONFIG_TARGET_*): New macros.
+	(DISPLAYCONFIG_PATH_TARGET_INFO): New.
+	(DISPLAYCONFIG_SOURCE_IN_USE): New macro.
+	(DISPLAYCONFIG_PATH_SOURCE_INFO): New.
+	(DISPLAYCONFIG_PATH_MODE_IDX_INVALID): New macro.
+	(DISPLAYCONFIG_MODE_INFO): New.
+	(DISPLAYCONFIG_TARGET_MODE): New.
+	(DISPLAYCONFIG_SOURCE_MODE): New.
+	(DISPLAYCONFIG_PIXELFORMAT): New.
+	(DISPLAYCONFIG_MODE_INFO_TYPE): New.
+	(DISPLAYCONFIG_2DREGION): New.
+	(DISPLAYCONFIG_VIDEO_SIGNAL_INFO): New.
+	(DISPLAYCONFIG_SCALING): New.
+	(DISPLAYCONFIG_ROTATION): New.
+	(DISPLAYCONFIG_DEVICE_INFO_HEADER): New.
+	(DISPLAYCONFIG_SOURCE_DEVICE_NAME): New.
+	(DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS): New.
+	(DISPLAYCONFIG_TARGET_DEVICE_NAME): New.
+	(DISPLAYCONFIG_TARGET_PREFERRED_MODE): New.
+	(DISPLAYCONFIG_ADAPTER_NAME): New.
+	(DISPLAYCONFIG_SET_TARGET_PERSISTENCE): New.
+	(QDC_*, SDC_*): New macros.
+	(PFD_DIRECT3D_ACCELERATED, PFD_SUPPORT_COMPOSITION): New macro.
+
 2013-05-09  Conrad Meyer <unknown>
 
 	* hidsdi.h (HidD_GetHidGuid): Add prototype.
diff --git a/mingw-w64-headers/include/wingdi.h b/mingw-w64-headers/include/wingdi.h
index d0bb532..1dd0efa 100644
--- a/mingw-w64-headers/include/wingdi.h
+++ b/mingw-w64-headers/include/wingdi.h
@@ -6,6 +6,7 @@
 #ifndef _WINGDI_
 #define _WINGDI_
 
+#include <winapifamily.h>
 #include <_mingw_unicode.h>
 
 #ifdef _GDI32_
@@ -134,6 +135,9 @@
 #define ETO_NUMERICSLATIN 0x0800
 #define ETO_IGNORELANGUAGE 0x1000
 #define ETO_PDY 0x2000
+#if _WIN32_WINNT >= 0x0600
+#define ETO_REVERSE_INDEX_MAP 0x10000
+#endif
 
 #define ASPECT_FILTERING 0x0001
 
@@ -216,6 +220,7 @@
 #define META_CREATEBRUSHINDIRECT 0x02FC
 #define META_CREATEREGION 0x06FF
 
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   typedef struct _DRAWPATRECT {
     POINT ptPosition;
     POINT ptSize;
@@ -224,6 +229,8 @@
   } DRAWPATRECT,*PDRAWPATRECT;
 #endif
 
+#endif
+
 #define NEWFRAME 1
 #define ABORTDOC 2
 #define NEXTBAND 3
@@ -311,17 +318,26 @@
 #define CHECKPNGFORMAT 4120
 
 #define GET_PS_FEATURESETTING 4121
+#define GDIPLUS_TS_QUERYVER 4122
+#define GDIPLUS_TS_RECORD 4123
+
+#if _WIN32_WINNT >= 0x0600
+#define MILCORE_TS_QUERYVER_RESULT_FALSE 0x0
+#define MILCORE_TS_QUERYVER_RESULT_TRUE  0x7FFFFFFF
+#endif
 
 #define SPCLPASSTHROUGH2 4568
 
 #define PSIDENT_GDICENTRIC 0
 #define PSIDENT_PSCENTRIC 1
 
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   typedef struct _PSINJECTDATA {
     DWORD DataBytes;
     WORD InjectionPoint;
     WORD PageNumber;
   } PSINJECTDATA,*PPSINJECTDATA;
+#endif
 
 #define PSINJECT_BEGINSTREAM 1
 #define PSINJECT_PSADOBE 2
@@ -371,6 +387,7 @@
 #define FEATURESETTING_PRIVATE_BEGIN 0x1000
 #define FEATURESETTING_PRIVATE_END 0x1FFF
 
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   typedef struct _PSFEATURE_OUTPUT {
     WINBOOL bPageIndependent;
     WINBOOL bSetPageDevice;
@@ -383,6 +400,7 @@
     LONG lWidthOffset;
     LONG lHeightOffset;
   } PSFEATURE_CUSTPAPER,*PPSFEATURE_CUSTPAPER;
+#endif
 
 #define PSPROTOCOL_ASCII 0
 #define PSPROTOCOL_BCP 1
@@ -418,6 +436,8 @@
 #define OBJ_ENHMETAFILE 13
 #define OBJ_COLORSPACE 14
 
+#define GDI_OBJ_LAST OBJ_COLORSPACE
+
 #define MWT_IDENTITY 1
 #define MWT_LEFTMULTIPLY 2
 #define MWT_RIGHTMULTIPLY 3
@@ -426,6 +446,7 @@
 #define MWT_MAX MWT_RIGHTMULTIPLY
 
 #define _XFORM_
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
   typedef struct tagXFORM {
     FLOAT eM11;
     FLOAT eM12;
@@ -459,7 +480,11 @@
     BYTE rgbRed;
     BYTE rgbReserved;
   } RGBQUAD;
+#endif
+
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   typedef RGBQUAD *LPRGBQUAD;
+#endif
 
 #define CS_ENABLE __MSABI_LONG(0x00000001)
 #define CS_DISABLE __MSABI_LONG(0x00000002)
@@ -470,6 +495,7 @@
 #define LCS_sRGB 'sRGB'
 #define LCS_WINDOWS_COLOR_SPACE 'Win '
 
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
   typedef LONG LCSCSTYPE;
 #define LCS_CALIBRATED_RGB __MSABI_LONG(0x00000000)
 
@@ -505,16 +531,22 @@
     FXPT2DOT30 ciexyzY;
     FXPT2DOT30 ciexyzZ;
   } CIEXYZ;
+#endif
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   typedef CIEXYZ *LPCIEXYZ;
-
+#endif
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
   typedef struct tagICEXYZTRIPLE {
     CIEXYZ ciexyzRed;
     CIEXYZ ciexyzGreen;
     CIEXYZ ciexyzBlue;
   } CIEXYZTRIPLE;
-
+#endif
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   typedef CIEXYZTRIPLE *LPCIEXYZTRIPLE;
+#endif
 
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
   typedef struct tagLOGCOLORSPACEA {
     DWORD lcsSignature;
     DWORD lcsVersion;
@@ -543,7 +575,9 @@
 
   __MINGW_TYPEDEF_AW(LOGCOLORSPACE)
   __MINGW_TYPEDEF_AW(LPLOGCOLORSPACE)
+#endif
 
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   typedef struct tagBITMAPCOREHEADER {
     DWORD bcSize;
     WORD bcWidth;
@@ -551,7 +585,9 @@
     WORD bcPlanes;
     WORD bcBitCount;
   } BITMAPCOREHEADER,*LPBITMAPCOREHEADER,*PBITMAPCOREHEADER;
+#endif
 
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
   typedef struct tagBITMAPINFOHEADER {
     DWORD biSize;
     LONG biWidth;
@@ -565,7 +601,9 @@
     DWORD biClrUsed;
     DWORD biClrImportant;
   } BITMAPINFOHEADER,*LPBITMAPINFOHEADER,*PBITMAPINFOHEADER;
+#endif
 
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   typedef struct {
     DWORD bV4Size;
     LONG bV4Width;
@@ -615,6 +653,7 @@
     DWORD bV5ProfileSize;
     DWORD bV5Reserved;
   } BITMAPV5HEADER,*LPBITMAPV5HEADER,*PBITMAPV5HEADER;
+#endif
 
 #define PROFILE_LINKED 'LINK'
 #define PROFILE_EMBEDDED 'MBED'
@@ -626,11 +665,14 @@
 #define BI_JPEG __MSABI_LONG(4)
 #define BI_PNG __MSABI_LONG(5)
 
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
   typedef struct tagBITMAPINFO {
     BITMAPINFOHEADER bmiHeader;
     RGBQUAD bmiColors[1];
   } BITMAPINFO,*LPBITMAPINFO,*PBITMAPINFO;
+#endif
 
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   typedef struct tagBITMAPCOREINFO {
     BITMAPCOREHEADER bmciHeader;
     RGBTRIPLE bmciColors[1];
@@ -645,10 +687,13 @@
     DWORD bfOffBits;
   } BITMAPFILEHEADER,*LPBITMAPFILEHEADER,*PBITMAPFILEHEADER;
 #include <poppack.h>
+#endif
 
 #define MAKEPOINTS(l) (*((POINTS *)&(l)))
 
 #ifndef NOFONTSIG
+
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   typedef struct tagFONTSIGNATURE {
     DWORD fsUsb[4];
     DWORD fsCsb[2];
@@ -659,21 +704,24 @@
     UINT ciACP;
     FONTSIGNATURE fs;
   } CHARSETINFO,*PCHARSETINFO,*NPCHARSETINFO,*LPCHARSETINFO;
+#endif
 
 #define TCI_SRCCHARSET 1
 #define TCI_SRCCODEPAGE 2
 #define TCI_SRCFONTSIG 3
 #define TCI_SRCLOCALE 0x1000
 
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
   typedef struct tagLOCALESIGNATURE {
     DWORD lsUsb[4];
     DWORD lsCsbDefault[2];
     DWORD lsCsbSupported[2];
   } LOCALESIGNATURE,*PLOCALESIGNATURE,*LPLOCALESIGNATURE;
 #endif
-
+#endif
 
 #ifndef NOMETAFILE
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
   typedef struct tagHANDLETABLE {
     HGDIOBJ objectHandle[1];
   } HANDLETABLE,*PHANDLETABLE,*LPHANDLETABLE;
@@ -683,7 +731,11 @@
     WORD rdFunction;
     WORD rdParm[1];
   } METARECORD;
+#endif
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   typedef struct tagMETARECORD UNALIGNED *PMETARECORD;
+#endif
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
   typedef struct tagMETARECORD UNALIGNED *LPMETARECORD;
 
   typedef struct tagMETAFILEPICT {
@@ -692,7 +744,9 @@
     LONG yExt;
     HMETAFILE hMF;
   } METAFILEPICT,*LPMETAFILEPICT;
+#endif
 
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
 #include <pshpack2.h>
   typedef struct tagMETAHEADER {
     WORD mtType;
@@ -707,7 +761,9 @@
   typedef struct tagMETAHEADER UNALIGNED *LPMETAHEADER;
 
 #include <poppack.h>
+#endif
 
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
   typedef struct tagENHMETARECORD {
     DWORD iType;
     DWORD nSize;
@@ -736,6 +792,7 @@
     SIZEL szlMicrometers;
   } ENHMETAHEADER,*PENHMETAHEADER,*LPENHMETAHEADER;
 #endif
+#endif
 
 #ifndef NOTEXTMETRIC
 #define TMPF_FIXED_PITCH 0x01
@@ -743,14 +800,19 @@
 #define TMPF_DEVICE 0x08
 #define TMPF_TRUETYPE 0x04
 
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
 #if defined(UNICODE)
   typedef WCHAR BCHAR;
 #else
   typedef BYTE BCHAR;
 #endif
+#endif
 
 #ifndef _TEXTMETRIC_DEFINED
 #define _TEXTMETRIC_DEFINED
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
+#include <pshpack4.h>
+
   typedef struct tagTEXTMETRICA {
     LONG tmHeight;
     LONG tmAscent;
@@ -801,6 +863,8 @@
   __MINGW_TYPEDEF_AW(PTEXTMETRIC)
   __MINGW_TYPEDEF_AW(NPTEXTMETRIC)
   __MINGW_TYPEDEF_AW(LPTEXTMETRIC)
+#include <poppack.h>
+#endif
 #endif
 
 #define NTM_REGULAR __MSABI_LONG(0x00000040)
@@ -814,6 +878,7 @@
 #define NTM_TYPE1 0x00100000
 #define NTM_DSIG 0x00200000
 
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
 #include <pshpack4.h>
   typedef struct tagNEWTEXTMETRICA {
     LONG tmHeight;
@@ -888,7 +953,9 @@
 
   __MINGW_TYPEDEF_AW(NEWTEXTMETRICEX)
 #endif
+#endif
 
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   typedef struct tagPELARRAY {
     LONG paXCount;
     LONG paYCount;
@@ -896,7 +963,8 @@
     LONG paYExt;
     BYTE paRGBs;
   } PELARRAY,*PPELARRAY,*NPPELARRAY,*LPPELARRAY;
-
+#endif
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
   typedef struct tagLOGBRUSH {
     UINT lbStyle;
     COLORREF lbColor;
@@ -908,18 +976,23 @@
     COLORREF lbColor;
     ULONG lbHatch;
   } LOGBRUSH32,*PLOGBRUSH32,*NPLOGBRUSH32,*LPLOGBRUSH32;
-
+#endif
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   typedef LOGBRUSH PATTERN;
   typedef PATTERN *PPATTERN;
   typedef PATTERN *NPPATTERN;
   typedef PATTERN *LPPATTERN;
+#endif
 
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
   typedef struct tagLOGPEN {
     UINT lopnStyle;
     POINT lopnWidth;
     COLORREF lopnColor;
   } LOGPEN,*PLOGPEN,*NPLOGPEN,*LPLOGPEN;
+#endif
 
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   typedef struct tagEXTLOGPEN {
     DWORD elpPenStyle;
     DWORD elpWidth;
@@ -929,6 +1002,18 @@
     DWORD elpNumEntries;
     DWORD elpStyleEntry[1];
   } EXTLOGPEN,*PEXTLOGPEN,*NPEXTLOGPEN,*LPEXTLOGPEN;
+#endif
+
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
+  typedef struct tagEXTLOGPEN32 {
+    DWORD elpPenStyle;
+    DWORD elpWidth;
+    UINT elpBrushStyle;
+    COLORREF elpColor;
+    ULONG elpHatch;
+    DWORD elpNumEntries;
+    DWORD elpStyleEntry[1];
+  } EXTLOGPEN32, *PEXTLOGPEN32, *NPEXTLOGPEN32, *LPEXTLOGPEN32;
 
 #ifndef _PALETTEENTRY_DEFINED
 #define _PALETTEENTRY_DEFINED
@@ -942,7 +1027,6 @@
 
 #ifndef _LOGPALETTE_DEFINED
 #define _LOGPALETTE_DEFINED
-
   typedef struct tagLOGPALETTE {
     WORD palVersion;
     WORD palNumEntries;
@@ -992,9 +1076,11 @@
   __MINGW_TYPEDEF_AW(PLOGFONT)
   __MINGW_TYPEDEF_AW(NPLOGFONT)
   __MINGW_TYPEDEF_AW(LPLOGFONT)
+#endif /* WINAPI_PARTITION_APP */
 
 #define LF_FULLFACESIZE 64
 
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   typedef struct tagENUMLOGFONTA {
     LOGFONTA elfLogFont;
     BYTE elfFullName[LF_FULLFACESIZE];
@@ -1026,6 +1112,7 @@
 
   __MINGW_TYPEDEF_AW(ENUMLOGFONTEX)
   __MINGW_TYPEDEF_AW(LPENUMLOGFONTEX)
+#endif /* WINAPI_PARTITION_DESKTOP */
 
 #define OUT_DEFAULT_PRECIS 0
 #define OUT_STRING_PRECIS 1
@@ -1045,7 +1132,9 @@
 #define CLIP_MASK 0xf
 #define CLIP_LH_ANGLES (1<<4)
 #define CLIP_TT_ALWAYS (2<<4)
+#if _WIN32_WINNT >= 0x0600
 #define CLIP_DFA_DISABLE (4<<4)
+#endif
 #define CLIP_EMBEDDED (8<<4)
 
 #define DEFAULT_QUALITY 0
@@ -1142,6 +1231,7 @@
 
 #define PAN_CULTURE_LATIN 0
 
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
   typedef struct tagPANOSE {
     BYTE bFamilyType;
     BYTE bSerifStyle;
@@ -1293,6 +1383,7 @@
   __MINGW_TYPEDEF_AW(PEXTLOGFONT)
   __MINGW_TYPEDEF_AW(NPEXTLOGFONT)
   __MINGW_TYPEDEF_AW(LPEXTLOGFONT)
+#endif /* WINAPI_PARTITION_APP */
 
 #define ELF_VERSION 0
 #define ELF_CULTURE_LATIN 0
@@ -1359,9 +1450,7 @@
 #define DEVICE_DEFAULT_FONT 14
 #define DEFAULT_PALETTE 15
 #define SYSTEM_FIXED_FONT 16
-
 #define DEFAULT_GUI_FONT 17
-
 #define DC_BRUSH 18
 #define DC_PEN 19
 
@@ -1387,6 +1476,7 @@
 #define HS_BDIAGONAL 3
 #define HS_CROSS 4
 #define HS_DIAGCROSS 5
+#define HS_API_MAX 12
 
 #define PS_SOLID 0
 #define PS_DASH 1
@@ -1455,11 +1545,8 @@
 #define SCALINGFACTORY 115
 
 #define VREFRESH 116
-
 #define DESKTOPVERTRES 117
-
 #define DESKTOPHORZRES 118
-
 #define BLTALIGNMENT 119
 
 #define SHADEBLENDCAPS 120
@@ -1578,6 +1665,7 @@
 
 #define CCHFORMNAME 32
 
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
   typedef struct _devicemodeA {
     BYTE dmDeviceName[CCHDEVICENAME];
     WORD dmSpecVersion;
@@ -1680,6 +1768,7 @@
   __MINGW_TYPEDEF_AW(PDEVMODE)
   __MINGW_TYPEDEF_AW(NPDEVMODE)
   __MINGW_TYPEDEF_AW(LPDEVMODE)
+#endif
 
 #define DM_SPECVERSION 0x0401
 
@@ -1889,6 +1978,7 @@
 #define DMDFO_STRETCH 1
 #define DMDFO_CENTER 2
 
+#define DM_INTERLACED 0x00000002
 #define DMDISPLAYFLAGS_TEXTMODE 0x00000004
 
 #define DMNUP_SYSTEM 1
@@ -1927,6 +2017,7 @@
 
 #define DMDITHER_USER 256
 
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
   typedef struct _DISPLAY_DEVICEA {
     DWORD cb;
     CHAR DeviceName[32];
@@ -1935,6 +2026,7 @@
     CHAR DeviceID[128];
     CHAR DeviceKey[128];
   } DISPLAY_DEVICEA,*PDISPLAY_DEVICEA,*LPDISPLAY_DEVICEA;
+
   typedef struct _DISPLAY_DEVICEW {
     DWORD cb;
     WCHAR DeviceName[32];
@@ -1947,6 +2039,7 @@
   __MINGW_TYPEDEF_AW(DISPLAY_DEVICE)
   __MINGW_TYPEDEF_AW(PDISPLAY_DEVICE)
   __MINGW_TYPEDEF_AW(LPDISPLAY_DEVICE)
+#endif
 
 #define DISPLAY_DEVICE_ATTACHED_TO_DESKTOP 0x00000001
 #define DISPLAY_DEVICE_MULTI_DRIVER 0x00000002
@@ -1954,6 +2047,13 @@
 #define DISPLAY_DEVICE_MIRRORING_DRIVER 0x00000008
 #define DISPLAY_DEVICE_VGA_COMPATIBLE 0x00000010
 #define DISPLAY_DEVICE_REMOVABLE 0x00000020
+#if _WIN32_WINNT >= 0x0602
+#define DISPLAY_DEVICE_ACC_DRIVER 0x00000040
+#endif
+#define DISPLAY_DEVICE_TS_COMPATIBLE 0x00200000
+#if _WIN32_WINNT >= 0x0600
+#define DISPLAY_DEVICE_UNSAFE_MODES_ON 0x00080000
+#endif
 #define DISPLAY_DEVICE_MODESPRUNED 0x08000000
 #define DISPLAY_DEVICE_REMOTE 0x04000000
 #define DISPLAY_DEVICE_DISCONNECT 0x02000000
@@ -1961,8 +2061,257 @@
 #define DISPLAY_DEVICE_ACTIVE 0x00000001
 #define DISPLAY_DEVICE_ATTACHED 0x00000002
 
+#if WINVER >= 0x0601
+#define DISPLAYCONFIG_MAXPATH 1024
+
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
+  typedef struct DISPLAYCONFIG_RATIONAL {
+    UINT32 Numerator;
+    UINT32 Denominator;
+  } DISPLAYCONFIG_RATIONAL;
+
+  typedef enum {
+    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_OTHER = -1,
+    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HD15 =  0,
+    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SVIDEO =  1,
+    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPOSITE_VIDEO =  2,
+    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPONENT_VIDEO =  3,
+    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DVI =  4,
+    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HDMI =  5,
+    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_LVDS =  6,
+    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_D_JPN  =  8,
+    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDI =  9,
+    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EXTERNAL = 10,
+    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EMBEDDED = 11,
+    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EXTERNAL = 12,
+    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EMBEDDED = 13,
+    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDTVDONGLE = 14,
+    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INTERNAL = 0x80000000,
+    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_FORCE_UINT32 = 0xFFFFFFFF
+  } DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY;
+
+  typedef enum {
+    DISPLAYCONFIG_SCANLINE_ORDERING_UNSPECIFIED = 0,
+    DISPLAYCONFIG_SCANLINE_ORDERING_PROGRESSIVE = 1,
+    DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED = 2,
+    DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED_UPPERFIELDFIRST = 2,
+    DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED_LOWERFIELDFIRST = 3,
+    DISPLAYCONFIG_SCANLINE_ORDERING_FORCE_UINT32 = 0xFFFFFFFF
+  } DISPLAYCONFIG_SCANLINE_ORDERING;
+
+  typedef struct DISPLAYCONFIG_2DREGION {
+    UINT32 cx;
+    UINT32 cy;
+  } DISPLAYCONFIG_2DREGION;
+
+  typedef struct DISPLAYCONFIG_VIDEO_SIGNAL_INFO {
+    UINT64 pixelRate;
+    DISPLAYCONFIG_RATIONAL hSyncFreq;
+    DISPLAYCONFIG_RATIONAL vSyncFreq;
+    DISPLAYCONFIG_2DREGION activeSize;
+    DISPLAYCONFIG_2DREGION totalSize;
+    UINT32 videoStandard;
+    DISPLAYCONFIG_SCANLINE_ORDERING scanLineOrdering;
+  } DISPLAYCONFIG_VIDEO_SIGNAL_INFO;
+
+  typedef enum {
+    DISPLAYCONFIG_SCALING_IDENTITY = 1,
+    DISPLAYCONFIG_SCALING_CENTERED = 2,
+    DISPLAYCONFIG_SCALING_STRETCHED = 3,
+    DISPLAYCONFIG_SCALING_ASPECTRATIOCENTEREDMAX = 4,
+    DISPLAYCONFIG_SCALING_CUSTOM = 5,
+    DISPLAYCONFIG_SCALING_PREFERRED = 128,
+    DISPLAYCONFIG_SCALING_FORCE_UINT32 = 0xFFFFFFFF
+  } DISPLAYCONFIG_SCALING;
+
+  typedef enum {
+    DISPLAYCONFIG_ROTATION_IDENTITY = 1,
+    DISPLAYCONFIG_ROTATION_ROTATE90 = 2,
+    DISPLAYCONFIG_ROTATION_ROTATE180 = 3,
+    DISPLAYCONFIG_ROTATION_ROTATE270 = 4,
+    DISPLAYCONFIG_ROTATION_FORCE_UINT32 = 0xFFFFFFFF
+  } DISPLAYCONFIG_ROTATION;
+
+  typedef enum {
+    DISPLAYCONFIG_MODE_INFO_TYPE_SOURCE = 1,
+    DISPLAYCONFIG_MODE_INFO_TYPE_TARGET = 2,
+    DISPLAYCONFIG_MODE_INFO_TYPE_FORCE_UINT32 = 0xFFFFFFFF
+  } DISPLAYCONFIG_MODE_INFO_TYPE;
+
+  typedef enum {
+    DISPLAYCONFIG_PIXELFORMAT_8BPP = 1,
+    DISPLAYCONFIG_PIXELFORMAT_16BPP = 2,
+    DISPLAYCONFIG_PIXELFORMAT_24BPP = 3,
+    DISPLAYCONFIG_PIXELFORMAT_32BPP = 4,
+    DISPLAYCONFIG_PIXELFORMAT_NONGDI = 5,
+    DISPLAYCONFIG_PIXELFORMAT_FORCE_UINT32 = 0xffffffff
+ } DISPLAYCONFIG_PIXELFORMAT;
+
+  typedef struct DISPLAYCONFIG_SOURCE_MODE {
+    UINT32 width;
+    UINT32 height;
+    DISPLAYCONFIG_PIXELFORMAT pixelFormat;
+    POINTL position;
+  } DISPLAYCONFIG_SOURCE_MODE;
+
+  typedef struct DISPLAYCONFIG_TARGET_MODE {
+    DISPLAYCONFIG_VIDEO_SIGNAL_INFO   targetVideoSignalInfo;
+  } DISPLAYCONFIG_TARGET_MODE;
+
+  typedef struct DISPLAYCONFIG_MODE_INFO {
+    DISPLAYCONFIG_MODE_INFO_TYPE infoType;
+    UINT32 id;
+    LUID adapterId;
+    __C89_NAMELESS union {
+      DISPLAYCONFIG_TARGET_MODE targetMode;
+      DISPLAYCONFIG_SOURCE_MODE sourceMode;
+    };
+  } DISPLAYCONFIG_MODE_INFO;
+
+#define DISPLAYCONFIG_PATH_MODE_IDX_INVALID 0xffffffff
+
+  typedef struct DISPLAYCONFIG_PATH_SOURCE_INFO {
+    LUID adapterId;
+    UINT32 id;
+    UINT32 modeInfoIdx;
+    UINT32 statusFlags;
+  } DISPLAYCONFIG_PATH_SOURCE_INFO;
+
+#define DISPLAYCONFIG_SOURCE_IN_USE 0x1
+
+  typedef struct DISPLAYCONFIG_PATH_TARGET_INFO {
+    LUID adapterId;
+    UINT32 id;
+    UINT32 modeInfoIdx;
+    DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY outputTechnology;
+    DISPLAYCONFIG_ROTATION rotation;
+    DISPLAYCONFIG_SCALING scaling;
+    DISPLAYCONFIG_RATIONAL refreshRate;
+    DISPLAYCONFIG_SCANLINE_ORDERING scanLineOrdering;
+    WINBOOL targetAvailable;
+    UINT32 statusFlags;
+  } DISPLAYCONFIG_PATH_TARGET_INFO;
+
+#define DISPLAYCONFIG_TARGET_IN_USE 0x00000001
+#define DISPLAYCONFIG_TARGET_FORCIBLE 0x00000002
+#define DISPLAYCONFIG_TARGET_FORCED_AVAILABILITY_BOOT 0x00000004
+#define DISPLAYCONFIG_TARGET_FORCED_AVAILABILITY_PATH 0x00000008
+#define DISPLAYCONFIG_TARGET_FORCED_AVAILABILITY_SYSTEM  0x00000010
+
+  typedef struct DISPLAYCONFIG_PATH_INFO {
+    DISPLAYCONFIG_PATH_SOURCE_INFO sourceInfo;
+    DISPLAYCONFIG_PATH_TARGET_INFO targetInfo;
+    UINT32 flags;
+  } DISPLAYCONFIG_PATH_INFO;
+
+#define DISPLAYCONFIG_PATH_ACTIVE 0x1
+
+  typedef enum {
+    DISPLAYCONFIG_TOPOLOGY_INTERNAL = 0x1,
+    DISPLAYCONFIG_TOPOLOGY_CLONE = 0x2,
+    DISPLAYCONFIG_TOPOLOGY_EXTEND = 0x4,
+    DISPLAYCONFIG_TOPOLOGY_EXTERNAL = 0x8,
+    DISPLAYCONFIG_TOPOLOGY_FORCE_UINT32 = 0xFFFFFFFF
+  } DISPLAYCONFIG_TOPOLOGY_ID;
+
+  typedef enum {
+    DISPLAYCONFIG_DEVICE_INFO_GET_SOURCE_NAME = 1,
+    DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_NAME = 2,
+    DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_PREFERRED_MODE = 3,
+    DISPLAYCONFIG_DEVICE_INFO_GET_ADAPTER_NAME = 4,
+    DISPLAYCONFIG_DEVICE_INFO_SET_TARGET_PERSISTENCE = 5,
+    DISPLAYCONFIG_DEVICE_INFO_FORCE_UINT32 = 0xFFFFFFFF
+  } DISPLAYCONFIG_DEVICE_INFO_TYPE;
+
+  typedef struct DISPLAYCONFIG_DEVICE_INFO_HEADER {
+    DISPLAYCONFIG_DEVICE_INFO_TYPE type;
+    UINT32 size;
+    LUID adapterId;
+    UINT32 id;
+  } DISPLAYCONFIG_DEVICE_INFO_HEADER;
+
+#endif /* WINAPI_PARTITION_APP */
+
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+  typedef struct DISPLAYCONFIG_SOURCE_DEVICE_NAME {
+    DISPLAYCONFIG_DEVICE_INFO_HEADER header;
+    WCHAR viewGdiDeviceName[CCHDEVICENAME];
+  } DISPLAYCONFIG_SOURCE_DEVICE_NAME;
+
+  typedef struct DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS {
+    __C89_NAMELESS union {
+      __C89_NAMELESS struct {
+        UINT32 friendlyNameFromEdid : 1;
+        UINT32 friendlyNameForced : 1;
+        UINT32 edidIdsValid : 1;
+        UINT32 reserved : 29;
+      };
+      UINT32 value;
+    };
+  } DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS;
+
+  typedef struct DISPLAYCONFIG_TARGET_DEVICE_NAME {
+    DISPLAYCONFIG_DEVICE_INFO_HEADER header;
+    DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS flags;
+    DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY outputTechnology;
+    UINT16 edidManufactureId;
+    UINT16 edidProductCodeId;
+    UINT32 connectorInstance;
+    WCHAR monitorFriendlyDeviceName[64];
+    WCHAR monitorDevicePath[128];
+  } DISPLAYCONFIG_TARGET_DEVICE_NAME;
+
+  typedef struct DISPLAYCONFIG_TARGET_PREFERRED_MODE {
+    DISPLAYCONFIG_DEVICE_INFO_HEADER header;
+    UINT32 width;
+    UINT32 height;
+    DISPLAYCONFIG_TARGET_MODE targetMode;
+  } DISPLAYCONFIG_TARGET_PREFERRED_MODE;
+
+  typedef struct DISPLAYCONFIG_ADAPTER_NAME {
+    DISPLAYCONFIG_DEVICE_INFO_HEADER header;
+    WCHAR adapterDevicePath[128];
+  } DISPLAYCONFIG_ADAPTER_NAME;
+
+  typedef struct DISPLAYCONFIG_SET_TARGET_PERSISTENCE {
+    DISPLAYCONFIG_DEVICE_INFO_HEADER header;
+    __C89_NAMELESS union {
+      __C89_NAMELESS struct {
+        UINT32 bootPersistenceOn : 1;
+        UINT32 reserved : 31;
+      };
+      UINT32 value;
+    };
+  } DISPLAYCONFIG_SET_TARGET_PERSISTENCE;
+#endif /* WINAPI_PARTITION_DESKTOP */
+
+#define QDC_ALL_PATHS 0x00000001
+#define QDC_ONLY_ACTIVE_PATHS 0x00000002
+#define QDC_DATABASE_CURRENT 0x00000004
+
+#define SDC_TOPOLOGY_INTERNAL 0x00000001
+#define SDC_TOPOLOGY_CLONE 0x00000002
+#define SDC_TOPOLOGY_EXTEND 0x00000004
+#define SDC_TOPOLOGY_EXTERNAL 0x00000008
+#define SDC_TOPOLOGY_SUPPLIED 0x00000010
+#define SDC_USE_DATABASE_CURRENT (SDC_TOPOLOGY_INTERNAL | SDC_TOPOLOGY_CLONE \
+  | SDC_TOPOLOGY_EXTEND | SDC_TOPOLOGY_EXTERNAL)
+
+#define SDC_USE_SUPPLIED_DISPLAY_CONFIG 0x00000020
+#define SDC_VALIDATE                    0x00000040
+#define SDC_APPLY                       0x00000080
+#define SDC_NO_OPTIMIZATION             0x00000100
+#define SDC_SAVE_TO_DATABASE            0x00000200
+#define SDC_ALLOW_CHANGES               0x00000400
+#define SDC_PATH_PERSIST_IF_REQUIRED    0x00000800
+#define SDC_FORCE_MODE_ENUMERATION      0x00001000
+#define SDC_ALLOW_PATH_ORDER_CHANGES    0x00002000
+
+#endif /* WINVER >= 0x0601 */
+
 #define RDH_RECTANGLES 1
 
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
   typedef struct _RGNDATAHEADER {
     DWORD dwSize;
     DWORD iType;
@@ -1975,9 +2324,11 @@
     RGNDATAHEADER rdh;
     char Buffer[1];
   } RGNDATA,*PRGNDATA,*NPRGNDATA,*LPRGNDATA;
+#endif
 
 #define SYSRGN 4
 
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   typedef struct _ABC {
     int abcA;
     UINT abcB;
@@ -1989,9 +2340,11 @@
     FLOAT abcfB;
     FLOAT abcfC;
   } ABCFLOAT,*PABCFLOAT,*NPABCFLOAT,*LPABCFLOAT;
+#endif
 
 #ifndef NOTEXTMETRIC
 
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   typedef struct _OUTLINETEXTMETRICA {
     UINT otmSize;
     TEXTMETRICA otmTextMetrics;
@@ -2067,7 +2420,9 @@
   __MINGW_TYPEDEF_AW(NPOUTLINETEXTMETRIC)
   __MINGW_TYPEDEF_AW(LPOUTLINETEXTMETRIC)
 #endif
+#endif
 
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
   typedef struct tagPOLYTEXTA {
     int x;
     int y;
@@ -2092,7 +2447,9 @@
   __MINGW_TYPEDEF_AW(PPOLYTEXT)
   __MINGW_TYPEDEF_AW(NPPOLYTEXT)
   __MINGW_TYPEDEF_AW(LPPOLYTEXT)
+#endif
 
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   typedef struct _FIXED {
     WORD fract;
     short value;
@@ -2112,12 +2469,12 @@
     short gmCellIncX;
     short gmCellIncY;
   } GLYPHMETRICS,*LPGLYPHMETRICS;
+#endif
 
 #define GGO_METRICS 0
 #define GGO_BITMAP 1
 #define GGO_NATIVE 2
 #define GGO_BEZIER 3
-
 #define GGO_GRAY2_BITMAP 4
 #define GGO_GRAY4_BITMAP 5
 #define GGO_GRAY8_BITMAP 6
@@ -2130,6 +2487,7 @@
 #define TT_PRIM_QSPLINE 2
 #define TT_PRIM_CSPLINE 3
 
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   typedef struct tagPOINTFX {
     FIXED x;
     FIXED y;
@@ -2146,20 +2504,19 @@
     DWORD dwType;
     POINTFX pfxStart;
   } TTPOLYGONHEADER,*LPTTPOLYGONHEADER;
+#endif
 
 #define GCP_DBCS 0x0001
 #define GCP_REORDER 0x0002
 #define GCP_USEKERNING 0x0008
 #define GCP_GLYPHSHAPE 0x0010
 #define GCP_LIGATE 0x0020
-
 #define GCP_DIACRITIC 0x0100
 #define GCP_KASHIDA 0x0400
 #define GCP_ERROR 0x8000
 #define FLI_MASK 0x103B
 
 #define GCP_JUSTIFY __MSABI_LONG(0x00010000)
-
 #define FLI_GLYPHS __MSABI_LONG(0x00040000)
 #define GCP_CLASSIN __MSABI_LONG(0x00080000)
 #define GCP_MAXEXTENT __MSABI_LONG(0x00100000)
@@ -2188,6 +2545,7 @@
 #define GCPGLYPH_LINKBEFORE 0x8000
 #define GCPGLYPH_LINKAFTER 0x4000
 
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   typedef struct tagGCP_RESULTSA {
     DWORD lStructSize;
     LPSTR lpOutString;
@@ -2219,10 +2577,12 @@
     short wFlags;
     short nLanguageID;
   } RASTERIZER_STATUS,*LPRASTERIZER_STATUS;
+#endif
 
 #define TT_AVAILABLE 0x0001
 #define TT_ENABLED 0x0002
 
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
   typedef struct tagPIXELFORMATDESCRIPTOR {
     WORD nSize;
     WORD nVersion;
@@ -2251,6 +2611,7 @@
     DWORD dwVisibleMask;
     DWORD dwDamageMask;
   } PIXELFORMATDESCRIPTOR,*PPIXELFORMATDESCRIPTOR,*LPPIXELFORMATDESCRIPTOR;
+#endif
 
 #define PFD_TYPE_RGBA 0
 #define PFD_TYPE_COLORINDEX 1
@@ -2273,11 +2634,14 @@
 #define PFD_SWAP_LAYER_BUFFERS 0x00000800
 #define PFD_GENERIC_ACCELERATED 0x00001000
 #define PFD_SUPPORT_DIRECTDRAW 0x00002000
+#define PFD_DIRECT3D_ACCELERATED 0x00004000
+#define PFD_SUPPORT_COMPOSITION 0x00008000
 
 #define PFD_DEPTH_DONTCARE 0x20000000
 #define PFD_DOUBLEBUFFER_DONTCARE 0x40000000
 #define PFD_STEREO_DONTCARE 0x80000000
 
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
 #ifndef NOTEXTMETRIC
   typedef int (CALLBACK *OLDFONTENUMPROCA)(CONST LOGFONTA *,CONST TEXTMETRICA *,DWORD,LPARAM);
   typedef int (CALLBACK *OLDFONTENUMPROCW)(CONST LOGFONTW *,CONST TEXTMETRICW *,DWORD,LPARAM);
@@ -2360,6 +2724,7 @@
 
   typedef UINT (CALLBACK *LPFNDEVMODE)(HWND,HMODULE,LPDEVMODE,LPSTR,LPSTR,LPDEVMODE,LPSTR,UINT);
   typedef DWORD (CALLBACK *LPFNDEVCAPS)(LPSTR,LPSTR,UINT,LPSTR,LPDEVMODE);
+#endif /* WINAPI_PARTITION_DESKTOP */
 
 #define DM_UPDATE 1
 #define DM_COPY 2
@@ -2425,6 +2790,7 @@
 #define DCBA_FACEDOWNLEFT 0x0102
 #define DCBA_FACEDOWNRIGHT 0x0103
 
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
 #define DeviceCapabilities __MINGW_NAME_AW(DeviceCapabilities)
 #define EnumFontFamiliesEx __MINGW_NAME_AW(EnumFontFamiliesEx)
 #define EnumFontFamilies __MINGW_NAME_AW(EnumFontFamilies)
@@ -2726,6 +3092,35 @@
   WINGDIAPI WINBOOL WINAPI SetTextJustification(HDC hdc,int extra,int count);
   WINGDIAPI WINBOOL WINAPI UpdateColors(HDC hdc);
 
+#if defined (COMBOX_SANDBOX) &&  _WIN32_WINNT >= 0x0600
+  typedef PVOID (WINAPI *GDIMARSHALLOC)(DWORD dwSize, LPVOID pGdiRef);
+  typedef HRESULT (WINAPI *DDRAWMARSHCALLBACKMARSHAL)(HGDIOBJ hGdiObj,
+                   LPVOID pGdiRef, LPVOID *ppDDrawRef);
+  typedef HRESULT (WINAPI *DDRAWMARSHCALLBACKUNMARSHAL)(LPVOID pData, HDC *phdc,
+                   LPVOID *ppDDrawRef);
+  typedef HRESULT (WINAPI *DDRAWMARSHCALLBACKRELEASE)(LPVOID pDDrawRef);
+
+#define GDIREGISTERDDRAWPACKETVERSION 0x1
+
+  typedef struct {
+    DWORD dwSize;
+    DWORD dwVersion;
+    DDRAWMARSHCALLBACKMARSHAL pfnDdMarshal;
+    DDRAWMARSHCALLBACKUNMARSHAL pfnDdUnmarshal;
+    DDRAWMARSHCALLBACKRELEASE pfnDdRelease;
+  } GDIREGISTERDDRAWPACKET, *PGDIREGISTERDDRAWPACKET;
+
+WINGDIAPI BOOL WINAPI GdiRegisterDdraw(PGDIREGISTERDDRAWPACKET pPacket,
+                                       GDIMARSHALLOC *ppfnGdiAlloc);
+WINGDIAPI ULONG WINAPI GdiMarshalSize(VOID);
+WINGDIAPI VOID WINAPI GdiMarshal(DWORD dwProcessIdTo, HGDIOBJ hGdiObj,
+                                 PVOID pData, ULONG ulFlags);
+WINGDIAPI HGDIOBJ WINAPI GdiUnmarshal(PVOID pData, ULONG ulFlags);
+#endif
+
+#endif /* WINAPI_PARTITION_DESKTOP */
+
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
   typedef USHORT COLOR16;
 
   typedef struct _TRIVERTEX {
@@ -2736,7 +3131,8 @@
     COLOR16 Blue;
     COLOR16 Alpha;
   } TRIVERTEX,*PTRIVERTEX,*LPTRIVERTEX;
-
+#endif
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   typedef struct _GRADIENT_TRIANGLE {
     ULONG Vertex1;
     ULONG Vertex2;
@@ -2747,14 +3143,16 @@
     ULONG UpperLeft;
     ULONG LowerRight;
   } GRADIENT_RECT,*PGRADIENT_RECT,*LPGRADIENT_RECT;
-
+#endif
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
   typedef struct _BLENDFUNCTION {
     BYTE BlendOp;
     BYTE BlendFlags;
     BYTE SourceConstantAlpha;
     BYTE AlphaFormat;
   } BLENDFUNCTION,*PBLENDFUNCTION;
-
+#endif
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
 #define AC_SRC_OVER 0x00
 #define AC_SRC_ALPHA 0x01
 
@@ -3897,6 +4295,8 @@
   WINGDIAPI DWORD WINAPI wglSwapMultipleBuffers(UINT,CONST WGLSWAP *);
 #endif
 
+#endif /* WINAPI_PARTITION_DESKTOP */
+
 #ifdef __cplusplus
 }
 #endif
