* 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.



git-svn-id: svn+ssh://svn.code.sf.net/p/mingw-w64/code/trunk@5861 4407c894-4637-0410-b4f5-ada5f102cad1
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