Continue abstracting ifdef-UNICDE by __MINGW_..._AW macros.


git-svn-id: svn+ssh://svn.code.sf.net/p/mingw-w64/code/trunk@2520 4407c894-4637-0410-b4f5-ada5f102cad1
diff --git a/mingw-w64-headers/include/winspool.h b/mingw-w64-headers/include/winspool.h
index bbcf1c5..d24c87f 100644
--- a/mingw-w64-headers/include/winspool.h
+++ b/mingw-w64-headers/include/winspool.h
@@ -28,15 +28,9 @@
     LPWSTR pComment;
   } PRINTER_INFO_1W,*PPRINTER_INFO_1W,*LPPRINTER_INFO_1W;
 
-#ifdef UNICODE
-  typedef PRINTER_INFO_1W PRINTER_INFO_1;
-  typedef PPRINTER_INFO_1W PPRINTER_INFO_1;
-  typedef LPPRINTER_INFO_1W LPPRINTER_INFO_1;
-#else
-  typedef PRINTER_INFO_1A PRINTER_INFO_1;
-  typedef PPRINTER_INFO_1A PPRINTER_INFO_1;
-  typedef LPPRINTER_INFO_1A LPPRINTER_INFO_1;
-#endif
+  __MINGW_TYPEDEF_AW(PRINTER_INFO_1)
+  __MINGW_TYPEDEF_AW(PPRINTER_INFO_1)
+  __MINGW_TYPEDEF_AW(LPPRINTER_INFO_1)
 
   typedef struct _PRINTER_INFO_2A {
     LPSTR pServerName;
@@ -86,15 +80,9 @@
     DWORD AveragePPM;
   } PRINTER_INFO_2W,*PPRINTER_INFO_2W,*LPPRINTER_INFO_2W;
 
-#ifdef UNICODE
-  typedef PRINTER_INFO_2W PRINTER_INFO_2;
-  typedef PPRINTER_INFO_2W PPRINTER_INFO_2;
-  typedef LPPRINTER_INFO_2W LPPRINTER_INFO_2;
-#else
-  typedef PRINTER_INFO_2A PRINTER_INFO_2;
-  typedef PPRINTER_INFO_2A PPRINTER_INFO_2;
-  typedef LPPRINTER_INFO_2A LPPRINTER_INFO_2;
-#endif
+  __MINGW_TYPEDEF_AW(PRINTER_INFO_2)
+  __MINGW_TYPEDEF_AW(PPRINTER_INFO_2)
+  __MINGW_TYPEDEF_AW(LPPRINTER_INFO_2)
 
   typedef struct _PRINTER_INFO_3 {
     PSECURITY_DESCRIPTOR pSecurityDescriptor;
@@ -112,15 +100,9 @@
     DWORD Attributes;
   } PRINTER_INFO_4W,*PPRINTER_INFO_4W,*LPPRINTER_INFO_4W;
 
-#ifdef UNICODE
-  typedef PRINTER_INFO_4W PRINTER_INFO_4;
-  typedef PPRINTER_INFO_4W PPRINTER_INFO_4;
-  typedef LPPRINTER_INFO_4W LPPRINTER_INFO_4;
-#else
-  typedef PRINTER_INFO_4A PRINTER_INFO_4;
-  typedef PPRINTER_INFO_4A PPRINTER_INFO_4;
-  typedef LPPRINTER_INFO_4A LPPRINTER_INFO_4;
-#endif
+  __MINGW_TYPEDEF_AW(PRINTER_INFO_4)
+  __MINGW_TYPEDEF_AW(PPRINTER_INFO_4)
+  __MINGW_TYPEDEF_AW(LPPRINTER_INFO_4)
 
   typedef struct _PRINTER_INFO_5A {
     LPSTR pPrinterName;
@@ -138,15 +120,9 @@
     DWORD TransmissionRetryTimeout;
   } PRINTER_INFO_5W,*PPRINTER_INFO_5W,*LPPRINTER_INFO_5W;
 
-#ifdef UNICODE
-  typedef PRINTER_INFO_5W PRINTER_INFO_5;
-  typedef PPRINTER_INFO_5W PPRINTER_INFO_5;
-  typedef LPPRINTER_INFO_5W LPPRINTER_INFO_5;
-#else
-  typedef PRINTER_INFO_5A PRINTER_INFO_5;
-  typedef PPRINTER_INFO_5A PPRINTER_INFO_5;
-  typedef LPPRINTER_INFO_5A LPPRINTER_INFO_5;
-#endif
+  __MINGW_TYPEDEF_AW(PRINTER_INFO_5)
+  __MINGW_TYPEDEF_AW(PPRINTER_INFO_5)
+  __MINGW_TYPEDEF_AW(LPPRINTER_INFO_5)
 
   typedef struct _PRINTER_INFO_6 {
     DWORD dwStatus;
@@ -162,15 +138,9 @@
     DWORD dwAction;
   } PRINTER_INFO_7W,*PPRINTER_INFO_7W,*LPPRINTER_INFO_7W;
 
-#ifdef UNICODE
-  typedef PRINTER_INFO_7W PRINTER_INFO_7;
-  typedef PPRINTER_INFO_7W PPRINTER_INFO_7;
-  typedef LPPRINTER_INFO_7W LPPRINTER_INFO_7;
-#else
-  typedef PRINTER_INFO_7A PRINTER_INFO_7;
-  typedef PPRINTER_INFO_7A PPRINTER_INFO_7;
-  typedef LPPRINTER_INFO_7A LPPRINTER_INFO_7;
-#endif
+  __MINGW_TYPEDEF_AW(PRINTER_INFO_7)
+  __MINGW_TYPEDEF_AW(PPRINTER_INFO_7)
+  __MINGW_TYPEDEF_AW(LPPRINTER_INFO_7)
 
 #define DSPRINT_PUBLISH 0x00000001
 #define DSPRINT_UPDATE 0x00000002
@@ -186,15 +156,9 @@
     LPDEVMODEW pDevMode;
   } PRINTER_INFO_8W,*PPRINTER_INFO_8W,*LPPRINTER_INFO_8W;
 
-#ifdef UNICODE
-  typedef PRINTER_INFO_8W PRINTER_INFO_8;
-  typedef PPRINTER_INFO_8W PPRINTER_INFO_8;
-  typedef LPPRINTER_INFO_8W LPPRINTER_INFO_8;
-#else
-  typedef PRINTER_INFO_8A PRINTER_INFO_8;
-  typedef PPRINTER_INFO_8A PPRINTER_INFO_8;
-  typedef LPPRINTER_INFO_8A LPPRINTER_INFO_8;
-#endif
+  __MINGW_TYPEDEF_AW(PRINTER_INFO_8)
+  __MINGW_TYPEDEF_AW(PPRINTER_INFO_8)
+  __MINGW_TYPEDEF_AW(LPPRINTER_INFO_8)
 
   typedef struct _PRINTER_INFO_9A {
     LPDEVMODEA pDevMode;
@@ -204,15 +168,9 @@
     LPDEVMODEW pDevMode;
   } PRINTER_INFO_9W,*PPRINTER_INFO_9W,*LPPRINTER_INFO_9W;
 
-#ifdef UNICODE
-  typedef PRINTER_INFO_9W PRINTER_INFO_9;
-  typedef PPRINTER_INFO_9W PPRINTER_INFO_9;
-  typedef LPPRINTER_INFO_9W LPPRINTER_INFO_9;
-#else
-  typedef PRINTER_INFO_9A PRINTER_INFO_9;
-  typedef PPRINTER_INFO_9A PPRINTER_INFO_9;
-  typedef LPPRINTER_INFO_9A LPPRINTER_INFO_9;
-#endif
+  __MINGW_TYPEDEF_AW(PRINTER_INFO_9)
+  __MINGW_TYPEDEF_AW(PPRINTER_INFO_9)
+  __MINGW_TYPEDEF_AW(LPPRINTER_INFO_9)
 
 #define PRINTER_CONTROL_PAUSE 1
 #define PRINTER_CONTROL_RESUME 2
@@ -301,15 +259,9 @@
     SYSTEMTIME Submitted;
   } JOB_INFO_1W,*PJOB_INFO_1W,*LPJOB_INFO_1W;
 
-#ifdef UNICODE
-  typedef JOB_INFO_1W JOB_INFO_1;
-  typedef PJOB_INFO_1W PJOB_INFO_1;
-  typedef LPJOB_INFO_1W LPJOB_INFO_1;
-#else
-  typedef JOB_INFO_1A JOB_INFO_1;
-  typedef PJOB_INFO_1A PJOB_INFO_1;
-  typedef LPJOB_INFO_1A LPJOB_INFO_1;
-#endif
+  __MINGW_TYPEDEF_AW(JOB_INFO_1)
+  __MINGW_TYPEDEF_AW(PJOB_INFO_1)
+  __MINGW_TYPEDEF_AW(LPJOB_INFO_1)
 
   typedef struct _JOB_INFO_2A {
     DWORD JobId;
@@ -363,15 +315,9 @@
     DWORD PagesPrinted;
   } JOB_INFO_2W,*PJOB_INFO_2W,*LPJOB_INFO_2W;
 
-#ifdef UNICODE
-  typedef JOB_INFO_2W JOB_INFO_2;
-  typedef PJOB_INFO_2W PJOB_INFO_2;
-  typedef LPJOB_INFO_2W LPJOB_INFO_2;
-#else
-  typedef JOB_INFO_2A JOB_INFO_2;
-  typedef PJOB_INFO_2A PJOB_INFO_2;
-  typedef LPJOB_INFO_2A LPJOB_INFO_2;
-#endif
+  __MINGW_TYPEDEF_AW(JOB_INFO_2)
+  __MINGW_TYPEDEF_AW(PJOB_INFO_2)
+  __MINGW_TYPEDEF_AW(LPJOB_INFO_2)
 
   typedef struct _JOB_INFO_3 {
     DWORD JobId;
@@ -413,15 +359,9 @@
     DWORD JobId;
   } ADDJOB_INFO_1W,*PADDJOB_INFO_1W,*LPADDJOB_INFO_1W;
 
-#ifdef UNICODE
-  typedef ADDJOB_INFO_1W ADDJOB_INFO_1;
-  typedef PADDJOB_INFO_1W PADDJOB_INFO_1;
-  typedef LPADDJOB_INFO_1W LPADDJOB_INFO_1;
-#else
-  typedef ADDJOB_INFO_1A ADDJOB_INFO_1;
-  typedef PADDJOB_INFO_1A PADDJOB_INFO_1;
-  typedef LPADDJOB_INFO_1A LPADDJOB_INFO_1;
-#endif
+  __MINGW_TYPEDEF_AW(ADDJOB_INFO_1)
+  __MINGW_TYPEDEF_AW(PADDJOB_INFO_1)
+  __MINGW_TYPEDEF_AW(LPADDJOB_INFO_1)
 
   typedef struct _DRIVER_INFO_1A {
     LPSTR pName;
@@ -431,15 +371,9 @@
     LPWSTR pName;
   } DRIVER_INFO_1W,*PDRIVER_INFO_1W,*LPDRIVER_INFO_1W;
 
-#ifdef UNICODE
-  typedef DRIVER_INFO_1W DRIVER_INFO_1;
-  typedef PDRIVER_INFO_1W PDRIVER_INFO_1;
-  typedef LPDRIVER_INFO_1W LPDRIVER_INFO_1;
-#else
-  typedef DRIVER_INFO_1A DRIVER_INFO_1;
-  typedef PDRIVER_INFO_1A PDRIVER_INFO_1;
-  typedef LPDRIVER_INFO_1A LPDRIVER_INFO_1;
-#endif
+  __MINGW_TYPEDEF_AW(DRIVER_INFO_1)
+  __MINGW_TYPEDEF_AW(PDRIVER_INFO_1)
+  __MINGW_TYPEDEF_AW(LPDRIVER_INFO_1)
 
   typedef struct _DRIVER_INFO_2A {
     DWORD cVersion;
@@ -459,15 +393,9 @@
     LPWSTR pConfigFile;
   } DRIVER_INFO_2W,*PDRIVER_INFO_2W,*LPDRIVER_INFO_2W;
 
-#ifdef UNICODE
-  typedef DRIVER_INFO_2W DRIVER_INFO_2;
-  typedef PDRIVER_INFO_2W PDRIVER_INFO_2;
-  typedef LPDRIVER_INFO_2W LPDRIVER_INFO_2;
-#else
-  typedef DRIVER_INFO_2A DRIVER_INFO_2;
-  typedef PDRIVER_INFO_2A PDRIVER_INFO_2;
-  typedef LPDRIVER_INFO_2A LPDRIVER_INFO_2;
-#endif
+  __MINGW_TYPEDEF_AW(DRIVER_INFO_2)
+  __MINGW_TYPEDEF_AW(PDRIVER_INFO_2)
+  __MINGW_TYPEDEF_AW(LPDRIVER_INFO_2)
 
   typedef struct _DRIVER_INFO_3A {
     DWORD cVersion;
@@ -495,15 +423,9 @@
     LPWSTR pDefaultDataType;
   } DRIVER_INFO_3W,*PDRIVER_INFO_3W,*LPDRIVER_INFO_3W;
 
-#ifdef UNICODE
-  typedef DRIVER_INFO_3W DRIVER_INFO_3;
-  typedef PDRIVER_INFO_3W PDRIVER_INFO_3;
-  typedef LPDRIVER_INFO_3W LPDRIVER_INFO_3;
-#else
-  typedef DRIVER_INFO_3A DRIVER_INFO_3;
-  typedef PDRIVER_INFO_3A PDRIVER_INFO_3;
-  typedef LPDRIVER_INFO_3A LPDRIVER_INFO_3;
-#endif
+  __MINGW_TYPEDEF_AW(DRIVER_INFO_3)
+  __MINGW_TYPEDEF_AW(PDRIVER_INFO_3)
+  __MINGW_TYPEDEF_AW(LPDRIVER_INFO_3)
 
   typedef struct _DRIVER_INFO_4A {
     DWORD cVersion;
@@ -533,15 +455,9 @@
     LPWSTR pszzPreviousNames;
   } DRIVER_INFO_4W,*PDRIVER_INFO_4W,*LPDRIVER_INFO_4W;
 
-#ifdef UNICODE
-  typedef DRIVER_INFO_4W DRIVER_INFO_4;
-  typedef PDRIVER_INFO_4W PDRIVER_INFO_4;
-  typedef LPDRIVER_INFO_4W LPDRIVER_INFO_4;
-#else
-  typedef DRIVER_INFO_4A DRIVER_INFO_4;
-  typedef PDRIVER_INFO_4A PDRIVER_INFO_4;
-  typedef LPDRIVER_INFO_4A LPDRIVER_INFO_4;
-#endif
+  __MINGW_TYPEDEF_AW(DRIVER_INFO_4)
+  __MINGW_TYPEDEF_AW(PDRIVER_INFO_4)
+  __MINGW_TYPEDEF_AW(LPDRIVER_INFO_4)
 
   typedef struct _DRIVER_INFO_5A {
     DWORD cVersion;
@@ -567,15 +483,9 @@
     DWORD dwDriverVersion;
   } DRIVER_INFO_5W,*PDRIVER_INFO_5W,*LPDRIVER_INFO_5W;
 
-#ifdef UNICODE
-  typedef DRIVER_INFO_5W DRIVER_INFO_5;
-  typedef PDRIVER_INFO_5W PDRIVER_INFO_5;
-  typedef LPDRIVER_INFO_5W LPDRIVER_INFO_5;
-#else
-  typedef DRIVER_INFO_5A DRIVER_INFO_5;
-  typedef PDRIVER_INFO_5A PDRIVER_INFO_5;
-  typedef LPDRIVER_INFO_5A LPDRIVER_INFO_5;
-#endif
+  __MINGW_TYPEDEF_AW(DRIVER_INFO_5)
+  __MINGW_TYPEDEF_AW(PDRIVER_INFO_5)
+  __MINGW_TYPEDEF_AW(LPDRIVER_INFO_5)
 
   typedef struct _DRIVER_INFO_6A {
     DWORD cVersion;
@@ -617,15 +527,9 @@
     LPWSTR pszProvider;
   } DRIVER_INFO_6W,*PDRIVER_INFO_6W,*LPDRIVER_INFO_6W;
 
-#ifdef UNICODE
-  typedef DRIVER_INFO_6W DRIVER_INFO_6;
-  typedef PDRIVER_INFO_6W PDRIVER_INFO_6;
-  typedef LPDRIVER_INFO_6W LPDRIVER_INFO_6;
-#else
-  typedef DRIVER_INFO_6A DRIVER_INFO_6;
-  typedef PDRIVER_INFO_6A PDRIVER_INFO_6;
-  typedef LPDRIVER_INFO_6A LPDRIVER_INFO_6;
-#endif
+  __MINGW_TYPEDEF_AW(DRIVER_INFO_6)
+  __MINGW_TYPEDEF_AW(PDRIVER_INFO_6)
+  __MINGW_TYPEDEF_AW(LPDRIVER_INFO_6)
 
 #define DRIVER_KERNELMODE 0x00000001
 #define DRIVER_USERMODE 0x00000002
@@ -652,15 +556,9 @@
     LPWSTR pDatatype;
   } DOC_INFO_1W,*PDOC_INFO_1W,*LPDOC_INFO_1W;
 
-#ifdef UNICODE
-  typedef DOC_INFO_1W DOC_INFO_1;
-  typedef PDOC_INFO_1W PDOC_INFO_1;
-  typedef LPDOC_INFO_1W LPDOC_INFO_1;
-#else
-  typedef DOC_INFO_1A DOC_INFO_1;
-  typedef PDOC_INFO_1A PDOC_INFO_1;
-  typedef LPDOC_INFO_1A LPDOC_INFO_1;
-#endif
+  __MINGW_TYPEDEF_AW(DOC_INFO_1)
+  __MINGW_TYPEDEF_AW(PDOC_INFO_1)
+  __MINGW_TYPEDEF_AW(LPDOC_INFO_1)
 
   typedef struct _FORM_INFO_1A {
     DWORD Flags;
@@ -676,15 +574,9 @@
     RECTL ImageableArea;
   } FORM_INFO_1W,*PFORM_INFO_1W,*LPFORM_INFO_1W;
 
-#ifdef UNICODE
-  typedef FORM_INFO_1W FORM_INFO_1;
-  typedef PFORM_INFO_1W PFORM_INFO_1;
-  typedef LPFORM_INFO_1W LPFORM_INFO_1;
-#else
-  typedef FORM_INFO_1A FORM_INFO_1;
-  typedef PFORM_INFO_1A PFORM_INFO_1;
-  typedef LPFORM_INFO_1A LPFORM_INFO_1;
-#endif
+  __MINGW_TYPEDEF_AW(FORM_INFO_1)
+  __MINGW_TYPEDEF_AW(PFORM_INFO_1)
+  __MINGW_TYPEDEF_AW(LPFORM_INFO_1)
 
   typedef struct _DOC_INFO_2A {
     LPSTR pDocName;
@@ -702,15 +594,9 @@
     DWORD JobId;
   } DOC_INFO_2W,*PDOC_INFO_2W,*LPDOC_INFO_2W;
 
-#ifdef UNICODE
-  typedef DOC_INFO_2W DOC_INFO_2;
-  typedef PDOC_INFO_2W PDOC_INFO_2;
-  typedef LPDOC_INFO_2W LPDOC_INFO_2;
-#else
-  typedef DOC_INFO_2A DOC_INFO_2;
-  typedef PDOC_INFO_2A PDOC_INFO_2;
-  typedef LPDOC_INFO_2A LPDOC_INFO_2;
-#endif
+  __MINGW_TYPEDEF_AW(DOC_INFO_2)
+  __MINGW_TYPEDEF_AW(PDOC_INFO_2)
+  __MINGW_TYPEDEF_AW(LPDOC_INFO_2)
 
 #define DI_CHANNEL 1
 #define DI_READ_SPOOL_JOB 3
@@ -729,15 +615,9 @@
     DWORD dwFlags;
   } DOC_INFO_3W,*PDOC_INFO_3W,*LPDOC_INFO_3W;
 
-#ifdef UNICODE
-  typedef DOC_INFO_3W DOC_INFO_3;
-  typedef PDOC_INFO_3W PDOC_INFO_3;
-  typedef LPDOC_INFO_3W LPDOC_INFO_3;
-#else
-  typedef DOC_INFO_3A DOC_INFO_3;
-  typedef PDOC_INFO_3A PDOC_INFO_3;
-  typedef LPDOC_INFO_3A LPDOC_INFO_3;
-#endif
+  __MINGW_TYPEDEF_AW(DOC_INFO_3)
+  __MINGW_TYPEDEF_AW(PDOC_INFO_3)
+  __MINGW_TYPEDEF_AW(LPDOC_INFO_3)
 
 #define DI_MEMORYMAP_WRITE 0x00000001
 
@@ -753,15 +633,9 @@
     LPWSTR pName;
   } PRINTPROCESSOR_INFO_1W,*PPRINTPROCESSOR_INFO_1W,*LPPRINTPROCESSOR_INFO_1W;
 
-#ifdef UNICODE
-  typedef PRINTPROCESSOR_INFO_1W PRINTPROCESSOR_INFO_1;
-  typedef PPRINTPROCESSOR_INFO_1W PPRINTPROCESSOR_INFO_1;
-  typedef LPPRINTPROCESSOR_INFO_1W LPPRINTPROCESSOR_INFO_1;
-#else
-  typedef PRINTPROCESSOR_INFO_1A PRINTPROCESSOR_INFO_1;
-  typedef PPRINTPROCESSOR_INFO_1A PPRINTPROCESSOR_INFO_1;
-  typedef LPPRINTPROCESSOR_INFO_1A LPPRINTPROCESSOR_INFO_1;
-#endif
+  __MINGW_TYPEDEF_AW(PRINTPROCESSOR_INFO_1)
+  __MINGW_TYPEDEF_AW(PPRINTPROCESSOR_INFO_1)
+  __MINGW_TYPEDEF_AW(LPPRINTPROCESSOR_INFO_1)
 
   typedef struct _PRINTPROCESSOR_CAPS_1 {
     DWORD dwLevel;
@@ -780,15 +654,9 @@
     LPWSTR pName;
   } PORT_INFO_1W,*PPORT_INFO_1W,*LPPORT_INFO_1W;
 
-#ifdef UNICODE
-  typedef PORT_INFO_1W PORT_INFO_1;
-  typedef PPORT_INFO_1W PPORT_INFO_1;
-  typedef LPPORT_INFO_1W LPPORT_INFO_1;
-#else
-  typedef PORT_INFO_1A PORT_INFO_1;
-  typedef PPORT_INFO_1A PPORT_INFO_1;
-  typedef LPPORT_INFO_1A LPPORT_INFO_1;
-#endif
+  __MINGW_TYPEDEF_AW(PORT_INFO_1)
+  __MINGW_TYPEDEF_AW(PPORT_INFO_1)
+  __MINGW_TYPEDEF_AW(LPPORT_INFO_1)
 
   typedef struct _PORT_INFO_2A {
     LPSTR pPortName;
@@ -806,15 +674,9 @@
     DWORD Reserved;
   } PORT_INFO_2W,*PPORT_INFO_2W,*LPPORT_INFO_2W;
 
-#ifdef UNICODE
-  typedef PORT_INFO_2W PORT_INFO_2;
-  typedef PPORT_INFO_2W PPORT_INFO_2;
-  typedef LPPORT_INFO_2W LPPORT_INFO_2;
-#else
-  typedef PORT_INFO_2A PORT_INFO_2;
-  typedef PPORT_INFO_2A PPORT_INFO_2;
-  typedef LPPORT_INFO_2A LPPORT_INFO_2;
-#endif
+  __MINGW_TYPEDEF_AW(PORT_INFO_2)
+  __MINGW_TYPEDEF_AW(PPORT_INFO_2)
+  __MINGW_TYPEDEF_AW(LPPORT_INFO_2)
 
 #define PORT_TYPE_WRITE 0x0001
 #define PORT_TYPE_READ 0x0002
@@ -833,15 +695,9 @@
     DWORD dwSeverity;
   } PORT_INFO_3W,*PPORT_INFO_3W,*LPPORT_INFO_3W;
 
-#ifdef UNICODE
-  typedef PORT_INFO_3W PORT_INFO_3;
-  typedef PPORT_INFO_3W PPORT_INFO_3;
-  typedef LPPORT_INFO_3W LPPORT_INFO_3;
-#else
-  typedef PORT_INFO_3A PORT_INFO_3;
-  typedef PPORT_INFO_3A PPORT_INFO_3;
-  typedef LPPORT_INFO_3A LPPORT_INFO_3;
-#endif
+  __MINGW_TYPEDEF_AW(PORT_INFO_3)
+  __MINGW_TYPEDEF_AW(PPORT_INFO_3)
+  __MINGW_TYPEDEF_AW(LPPORT_INFO_3)
 
 #define PORT_STATUS_TYPE_ERROR 1
 #define PORT_STATUS_TYPE_WARNING 2
@@ -868,15 +724,9 @@
     LPWSTR pName;
   } MONITOR_INFO_1W,*PMONITOR_INFO_1W,*LPMONITOR_INFO_1W;
 
-#ifdef UNICODE
-  typedef MONITOR_INFO_1W MONITOR_INFO_1;
-  typedef PMONITOR_INFO_1W PMONITOR_INFO_1;
-  typedef LPMONITOR_INFO_1W LPMONITOR_INFO_1;
-#else
-  typedef MONITOR_INFO_1A MONITOR_INFO_1;
-  typedef PMONITOR_INFO_1A PMONITOR_INFO_1;
-  typedef LPMONITOR_INFO_1A LPMONITOR_INFO_1;
-#endif
+  __MINGW_TYPEDEF_AW(MONITOR_INFO_1)
+  __MINGW_TYPEDEF_AW(PMONITOR_INFO_1)
+  __MINGW_TYPEDEF_AW(LPMONITOR_INFO_1)
 
   typedef struct _MONITOR_INFO_2A {
     LPSTR pName;
@@ -890,15 +740,9 @@
     LPWSTR pDLLName;
   } MONITOR_INFO_2W,*PMONITOR_INFO_2W,*LPMONITOR_INFO_2W;
 
-#ifdef UNICODE
-  typedef MONITOR_INFO_2W MONITOR_INFO_2;
-  typedef PMONITOR_INFO_2W PMONITOR_INFO_2;
-  typedef LPMONITOR_INFO_2W LPMONITOR_INFO_2;
-#else
-  typedef MONITOR_INFO_2A MONITOR_INFO_2;
-  typedef PMONITOR_INFO_2A PMONITOR_INFO_2;
-  typedef LPMONITOR_INFO_2A LPMONITOR_INFO_2;
-#endif
+  __MINGW_TYPEDEF_AW(MONITOR_INFO_2)
+  __MINGW_TYPEDEF_AW(PMONITOR_INFO_2)
+  __MINGW_TYPEDEF_AW(LPMONITOR_INFO_2)
 
   typedef struct _DATATYPES_INFO_1A {
     LPSTR pName;
@@ -908,15 +752,9 @@
     LPWSTR pName;
   } DATATYPES_INFO_1W,*PDATATYPES_INFO_1W,*LPDATATYPES_INFO_1W;
 
-#ifdef UNICODE
-  typedef DATATYPES_INFO_1W DATATYPES_INFO_1;
-  typedef PDATATYPES_INFO_1W PDATATYPES_INFO_1;
-  typedef LPDATATYPES_INFO_1W LPDATATYPES_INFO_1;
-#else
-  typedef DATATYPES_INFO_1A DATATYPES_INFO_1;
-  typedef PDATATYPES_INFO_1A PDATATYPES_INFO_1;
-  typedef LPDATATYPES_INFO_1A LPDATATYPES_INFO_1;
-#endif
+  __MINGW_TYPEDEF_AW(DATATYPES_INFO_1)
+  __MINGW_TYPEDEF_AW(PDATATYPES_INFO_1)
+  __MINGW_TYPEDEF_AW(LPDATATYPES_INFO_1)
 
   typedef struct _PRINTER_DEFAULTSA {
     LPSTR pDatatype;
@@ -930,15 +768,9 @@
     ACCESS_MASK DesiredAccess;
   } PRINTER_DEFAULTSW,*PPRINTER_DEFAULTSW,*LPPRINTER_DEFAULTSW;
 
-#ifdef UNICODE
-  typedef PRINTER_DEFAULTSW PRINTER_DEFAULTS;
-  typedef PPRINTER_DEFAULTSW PPRINTER_DEFAULTS;
-  typedef LPPRINTER_DEFAULTSW LPPRINTER_DEFAULTS;
-#else
-  typedef PRINTER_DEFAULTSA PRINTER_DEFAULTS;
-  typedef PPRINTER_DEFAULTSA PPRINTER_DEFAULTS;
-  typedef LPPRINTER_DEFAULTSA LPPRINTER_DEFAULTS;
-#endif
+  __MINGW_TYPEDEF_AW(PRINTER_DEFAULTS)
+  __MINGW_TYPEDEF_AW(PPRINTER_DEFAULTS)
+  __MINGW_TYPEDEF_AW(LPPRINTER_DEFAULTS)
 
   typedef struct _PRINTER_ENUM_VALUESA {
     LPSTR pValueName;
@@ -956,21 +788,11 @@
     DWORD cbData;
   } PRINTER_ENUM_VALUESW,*PPRINTER_ENUM_VALUESW,*LPPRINTER_ENUM_VALUESW;
 
-#ifdef UNICODE
-  typedef PRINTER_ENUM_VALUESW PRINTER_ENUM_VALUES;
-  typedef PPRINTER_ENUM_VALUESW PPRINTER_ENUM_VALUES;
-  typedef LPPRINTER_ENUM_VALUESW LPPRINTER_ENUM_VALUES;
-#else
-  typedef PRINTER_ENUM_VALUESA PRINTER_ENUM_VALUES;
-  typedef PPRINTER_ENUM_VALUESA PPRINTER_ENUM_VALUES;
-  typedef LPPRINTER_ENUM_VALUESA LPPRINTER_ENUM_VALUES;
-#endif
+  __MINGW_TYPEDEF_AW(PRINTER_ENUM_VALUES)
+  __MINGW_TYPEDEF_AW(PPRINTER_ENUM_VALUES)
+  __MINGW_TYPEDEF_AW(LPPRINTER_ENUM_VALUES)
 
-#ifdef UNICODE
-#define EnumPrinters EnumPrintersW
-#else
-#define EnumPrinters EnumPrintersA
-#endif
+#define EnumPrinters __MINGW_NAME_AW(EnumPrinters)
 
   WINBOOL WINAPI EnumPrintersA(DWORD Flags,LPSTR Name,DWORD Level,LPBYTE pPrinterEnum,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned);
   WINBOOL WINAPI EnumPrintersW(DWORD Flags,LPWSTR Name,DWORD Level,LPBYTE pPrinterEnum,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned);
@@ -1001,77 +823,40 @@
 #define SPOOL_FILE_PERSISTENT 0x00000001
 #define SPOOL_FILE_TEMPORARY 0x00000002
 
-#ifdef UNICODE
-#define OpenPrinter OpenPrinterW
-#define ResetPrinter ResetPrinterW
-#define SetJob SetJobW
-#define GetJob GetJobW
-#define EnumJobs EnumJobsW
-#define AddPrinter AddPrinterW
-#define SetPrinter SetPrinterW
-#define GetPrinter GetPrinterW
-#define AddPrinterDriver AddPrinterDriverW
-#define AddPrinterDriverEx AddPrinterDriverExW
-#define EnumPrinterDrivers EnumPrinterDriversW
-#define GetPrinterDriver GetPrinterDriverW
-#define GetPrinterDriverDirectory GetPrinterDriverDirectoryW
-#define DeletePrinterDriver DeletePrinterDriverW
-#define DeletePrinterDriverEx DeletePrinterDriverExW
-#define AddPrintProcessor AddPrintProcessorW
-#define EnumPrintProcessors EnumPrintProcessorsW
-#define GetPrintProcessorDirectory GetPrintProcessorDirectoryW
-#define EnumPrintProcessorDatatypes EnumPrintProcessorDatatypesW
-#define DeletePrintProcessor DeletePrintProcessorW
-#define StartDocPrinter StartDocPrinterW
-#define AddJob AddJobW
-#define DocumentProperties DocumentPropertiesW
-#define AdvancedDocumentProperties AdvancedDocumentPropertiesW
-#define GetPrinterData GetPrinterDataW
-#define GetPrinterDataEx GetPrinterDataExW
-#define EnumPrinterData EnumPrinterDataW
-#define EnumPrinterDataEx EnumPrinterDataExW
-#define EnumPrinterKey EnumPrinterKeyW
-#define SetPrinterData SetPrinterDataW
-#define SetPrinterDataEx SetPrinterDataExW
-#define DeletePrinterData DeletePrinterDataW
-#define DeletePrinterDataEx DeletePrinterDataExW
-#define DeletePrinterKey DeletePrinterKeyW
-#else
-#define OpenPrinter OpenPrinterA
-#define ResetPrinter ResetPrinterA
-#define SetJob SetJobA
-#define GetJob GetJobA
-#define EnumJobs EnumJobsA
-#define AddPrinter AddPrinterA
-#define SetPrinter SetPrinterA
-#define GetPrinter GetPrinterA
-#define AddPrinterDriver AddPrinterDriverA
-#define AddPrinterDriverEx AddPrinterDriverExA
-#define EnumPrinterDrivers EnumPrinterDriversA
-#define GetPrinterDriver GetPrinterDriverA
-#define GetPrinterDriverDirectory GetPrinterDriverDirectoryA
-#define DeletePrinterDriver DeletePrinterDriverA
-#define DeletePrinterDriverEx DeletePrinterDriverExA
-#define AddPrintProcessor AddPrintProcessorA
-#define EnumPrintProcessors EnumPrintProcessorsA
-#define GetPrintProcessorDirectory GetPrintProcessorDirectoryA
-#define EnumPrintProcessorDatatypes EnumPrintProcessorDatatypesA
-#define DeletePrintProcessor DeletePrintProcessorA
-#define StartDocPrinter StartDocPrinterA
-#define AddJob AddJobA
-#define DocumentProperties DocumentPropertiesA
-#define AdvancedDocumentProperties AdvancedDocumentPropertiesA
-#define GetPrinterData GetPrinterDataA
-#define GetPrinterDataEx GetPrinterDataExA
-#define EnumPrinterData EnumPrinterDataA
-#define EnumPrinterDataEx EnumPrinterDataExA
-#define EnumPrinterKey EnumPrinterKeyA
-#define SetPrinterData SetPrinterDataA
-#define SetPrinterDataEx SetPrinterDataExA
-#define DeletePrinterData DeletePrinterDataA
-#define DeletePrinterDataEx DeletePrinterDataExA
-#define DeletePrinterKey DeletePrinterKeyA
-#endif
+#define OpenPrinter __MINGW_NAME_AW(OpenPrinter)
+#define ResetPrinter __MINGW_NAME_AW(ResetPrinter)
+#define SetJob __MINGW_NAME_AW(SetJob)
+#define GetJob __MINGW_NAME_AW(GetJob)
+#define EnumJobs __MINGW_NAME_AW(EnumJobs)
+#define AddPrinter __MINGW_NAME_AW(AddPrinter)
+#define SetPrinter __MINGW_NAME_AW(SetPrinter)
+#define GetPrinter __MINGW_NAME_AW(GetPrinter)
+#define AddPrinterDriver __MINGW_NAME_AW(AddPrinterDriver)
+#define AddPrinterDriverEx __MINGW_NAME_AW(AddPrinterDriverEx)
+#define EnumPrinterDrivers __MINGW_NAME_AW(EnumPrinterDrivers)
+#define GetPrinterDriver __MINGW_NAME_AW(GetPrinterDriver)
+#define GetPrinterDriverDirectory __MINGW_NAME_AW(GetPrinterDriverDirectory)
+#define DeletePrinterDriver __MINGW_NAME_AW(DeletePrinterDriver)
+#define DeletePrinterDriverEx __MINGW_NAME_AW(DeletePrinterDriverEx)
+#define AddPrintProcessor __MINGW_NAME_AW(AddPrintProcessor)
+#define EnumPrintProcessors __MINGW_NAME_AW(EnumPrintProcessors)
+#define GetPrintProcessorDirectory __MINGW_NAME_AW(GetPrintProcessorDirectory)
+#define EnumPrintProcessorDatatypes __MINGW_NAME_AW(EnumPrintProcessorDatatypes)
+#define DeletePrintProcessor __MINGW_NAME_AW(DeletePrintProcessor)
+#define StartDocPrinter __MINGW_NAME_AW(StartDocPrinter)
+#define AddJob __MINGW_NAME_AW(AddJob)
+#define DocumentProperties __MINGW_NAME_AW(DocumentProperties)
+#define AdvancedDocumentProperties __MINGW_NAME_AW(AdvancedDocumentProperties)
+#define GetPrinterData __MINGW_NAME_AW(GetPrinterData)
+#define GetPrinterDataEx __MINGW_NAME_AW(GetPrinterDataEx)
+#define EnumPrinterData __MINGW_NAME_AW(EnumPrinterData)
+#define EnumPrinterDataEx __MINGW_NAME_AW(EnumPrinterDataEx)
+#define EnumPrinterKey __MINGW_NAME_AW(EnumPrinterKey)
+#define SetPrinterData __MINGW_NAME_AW(SetPrinterData)
+#define SetPrinterDataEx __MINGW_NAME_AW(SetPrinterDataEx)
+#define DeletePrinterData __MINGW_NAME_AW(DeletePrinterData)
+#define DeletePrinterDataEx __MINGW_NAME_AW(DeletePrinterDataEx)
+#define DeletePrinterKey __MINGW_NAME_AW(DeletePrinterKey)
 
   WINBOOL WINAPI OpenPrinterA(LPSTR pPrinterName,LPHANDLE phPrinter,LPPRINTER_DEFAULTSA pDefault);
   WINBOOL WINAPI OpenPrinterW(LPWSTR pPrinterName,LPHANDLE phPrinter,LPPRINTER_DEFAULTSW pDefault);
@@ -1349,45 +1134,24 @@
 #define PRINTER_CHANGE_TIMEOUT 0x80000000
 #define PRINTER_CHANGE_ALL 0x7777FFFF
 
-#ifdef UNICODE
-#define PrinterMessageBox PrinterMessageBoxW
-#define AddForm AddFormW
-#define DeleteForm DeleteFormW
-#define GetForm GetFormW
-#define SetForm SetFormW
-#define EnumForms EnumFormsW
-#define EnumMonitors EnumMonitorsW
-#define AddMonitor AddMonitorW
-#define DeleteMonitor DeleteMonitorW
-#define EnumPorts EnumPortsW
-#define AddPort AddPortW
-#define ConfigurePort ConfigurePortW
-#define DeletePort DeletePortW
-#define GetDefaultPrinter GetDefaultPrinterW
-#define SetDefaultPrinter SetDefaultPrinterW
-#define SetPort SetPortW
-#define AddPrinterConnection AddPrinterConnectionW
-#define DeletePrinterConnection DeletePrinterConnectionW
-#else
-#define PrinterMessageBox PrinterMessageBoxA
-#define AddForm AddFormA
-#define DeleteForm DeleteFormA
-#define GetForm GetFormA
-#define SetForm SetFormA
-#define EnumForms EnumFormsA
-#define EnumMonitors EnumMonitorsA
-#define AddMonitor AddMonitorA
-#define DeleteMonitor DeleteMonitorA
-#define EnumPorts EnumPortsA
-#define AddPort AddPortA
-#define ConfigurePort ConfigurePortA
-#define DeletePort DeletePortA
-#define GetDefaultPrinter GetDefaultPrinterA
-#define SetDefaultPrinter SetDefaultPrinterA
-#define SetPort SetPortA
-#define AddPrinterConnection AddPrinterConnectionA
-#define DeletePrinterConnection DeletePrinterConnectionA
-#endif
+#define PrinterMessageBox __MINGW_NAME_AW(PrinterMessageBox)
+#define AddForm __MINGW_NAME_AW(AddForm)
+#define DeleteForm __MINGW_NAME_AW(DeleteForm)
+#define GetForm __MINGW_NAME_AW(GetForm)
+#define SetForm __MINGW_NAME_AW(SetForm)
+#define EnumForms __MINGW_NAME_AW(EnumForms)
+#define EnumMonitors __MINGW_NAME_AW(EnumMonitors)
+#define AddMonitor __MINGW_NAME_AW(AddMonitor)
+#define DeleteMonitor __MINGW_NAME_AW(DeleteMonitor)
+#define EnumPorts __MINGW_NAME_AW(EnumPorts)
+#define AddPort __MINGW_NAME_AW(AddPort)
+#define ConfigurePort __MINGW_NAME_AW(ConfigurePort)
+#define DeletePort __MINGW_NAME_AW(DeletePort)
+#define GetDefaultPrinter __MINGW_NAME_AW(GetDefaultPrinter)
+#define SetDefaultPrinter __MINGW_NAME_AW(SetDefaultPrinter)
+#define SetPort __MINGW_NAME_AW(SetPort)
+#define AddPrinterConnection __MINGW_NAME_AW(AddPrinterConnection)
+#define DeletePrinterConnection __MINGW_NAME_AW(DeletePrinterConnection)
 
   DWORD WINAPI PrinterMessageBoxA(HANDLE hPrinter,DWORD Error,HWND hWnd,LPSTR pText,LPSTR pCaption,DWORD dwType);
   DWORD WINAPI PrinterMessageBoxW(HANDLE hPrinter,DWORD Error,HWND hWnd,LPWSTR pText,LPWSTR pCaption,DWORD dwType);
@@ -1453,15 +1217,9 @@
     LPWSTR pDLLName;
   } PROVIDOR_INFO_1W,*PPROVIDOR_INFO_1W,*LPPROVIDOR_INFO_1W;
 
-#ifdef UNICODE
-  typedef PROVIDOR_INFO_1W PROVIDOR_INFO_1;
-  typedef PPROVIDOR_INFO_1W PPROVIDOR_INFO_1;
-  typedef LPPROVIDOR_INFO_1W LPPROVIDOR_INFO_1;
-#else
-  typedef PROVIDOR_INFO_1A PROVIDOR_INFO_1;
-  typedef PPROVIDOR_INFO_1A PPROVIDOR_INFO_1;
-  typedef LPPROVIDOR_INFO_1A LPPROVIDOR_INFO_1;
-#endif
+  __MINGW_TYPEDEF_AW(PROVIDOR_INFO_1)
+  __MINGW_TYPEDEF_AW(PPROVIDOR_INFO_1)
+  __MINGW_TYPEDEF_AW(LPPROVIDOR_INFO_1)
 
   typedef struct _PROVIDOR_INFO_2A{
     LPSTR pOrder;
@@ -1471,25 +1229,13 @@
     LPWSTR pOrder;
   } PROVIDOR_INFO_2W,*PPROVIDOR_INFO_2W,*LPPROVIDOR_INFO_2W;
 
-#ifdef UNICODE
-  typedef PROVIDOR_INFO_2W PROVIDOR_INFO_2;
-  typedef PPROVIDOR_INFO_2W PPROVIDOR_INFO_2;
-  typedef LPPROVIDOR_INFO_2W LPPROVIDOR_INFO_2;
-#else
-  typedef PROVIDOR_INFO_2A PROVIDOR_INFO_2;
-  typedef PPROVIDOR_INFO_2A PPROVIDOR_INFO_2;
-  typedef LPPROVIDOR_INFO_2A LPPROVIDOR_INFO_2;
-#endif
+  __MINGW_TYPEDEF_AW(PROVIDOR_INFO_2)
+  __MINGW_TYPEDEF_AW(PPROVIDOR_INFO_2)
+  __MINGW_TYPEDEF_AW(LPPROVIDOR_INFO_2)
 
-#ifdef UNICODE
-#define AddPrintProvidor AddPrintProvidorW
-#define DeletePrintProvidor DeletePrintProvidorW
-#define IsValidDevmode IsValidDevmodeW
-#else
-#define AddPrintProvidor AddPrintProvidorA
-#define DeletePrintProvidor DeletePrintProvidorA
-#define IsValidDevmode IsValidDevmodeA
-#endif
+#define AddPrintProvidor __MINGW_NAME_AW(AddPrintProvidor)
+#define DeletePrintProvidor __MINGW_NAME_AW(DeletePrintProvidor)
+#define IsValidDevmode __MINGW_NAME_AW(IsValidDevmode)
 
   WINBOOL WINAPI AddPrintProvidorA(LPSTR pName,DWORD level,LPBYTE pProvidorInfo);
   WINBOOL WINAPI AddPrintProvidorW(LPWSTR pName,DWORD level,LPBYTE pProvidorInfo);
@@ -1601,11 +1347,7 @@
 #define SPLDS_PRINTER_MODEL TEXT("printerModel")
 
 #if (_WIN32_WINNT >= 0x0600)
-#ifdef UNICODE
-#define AddPrinterConnection2 AddPrinterConnection2W
-#else
-#define AddPrinterConnection2 AddPrinterConnection2A
-#endif
+#define AddPrinterConnection2 __MINGW_NAME_AW(AddPrinterConnection2)
 
 #define PRINTER_CONNECTION_MISMATCH 0x00000020
 #define PRINTER_CONNECTION_NO_UI    0x00000040
diff --git a/mingw-w64-headers/include/winsvc.h b/mingw-w64-headers/include/winsvc.h
index f478e63..7be53da 100644
--- a/mingw-w64-headers/include/winsvc.h
+++ b/mingw-w64-headers/include/winsvc.h
@@ -23,17 +23,10 @@
 #define SC_GROUP_IDENTIFIERW L'+'
 #define SC_GROUP_IDENTIFIERA '+'
 
-#ifdef UNICODE
-#define SERVICES_ACTIVE_DATABASE SERVICES_ACTIVE_DATABASEW
-#define SERVICES_FAILED_DATABASE SERVICES_FAILED_DATABASEW
+#define SERVICES_ACTIVE_DATABASE __MINGW_NAME_AW(SERVICES_ACTIVE_DATABASE)
+#define SERVICES_FAILED_DATABASE __MINGW_NAME_AW(SERVICES_FAILED_DATABASE)
 
-#define SC_GROUP_IDENTIFIER SC_GROUP_IDENTIFIERW
-#else
-#define SERVICES_ACTIVE_DATABASE SERVICES_ACTIVE_DATABASEA
-#define SERVICES_FAILED_DATABASE SERVICES_FAILED_DATABASEA
-
-#define SC_GROUP_IDENTIFIER SC_GROUP_IDENTIFIERA
-#endif
+#define SC_GROUP_IDENTIFIER __MINGW_NAME_AW(SC_GROUP_IDENTIFIER)
 
 #define SERVICE_NO_CHANGE 0xffffffff
 
@@ -107,13 +100,8 @@
     LPWSTR lpDescription;
   } SERVICE_DESCRIPTIONW,*LPSERVICE_DESCRIPTIONW;
 
-#ifdef UNICODE
-  typedef SERVICE_DESCRIPTIONW SERVICE_DESCRIPTION;
-  typedef LPSERVICE_DESCRIPTIONW LPSERVICE_DESCRIPTION;
-#else
-  typedef SERVICE_DESCRIPTIONA SERVICE_DESCRIPTION;
-  typedef LPSERVICE_DESCRIPTIONA LPSERVICE_DESCRIPTION;
-#endif
+  __MINGW_TYPEDEF_AW(SERVICE_DESCRIPTION)
+  __MINGW_TYPEDEF_AW(LPSERVICE_DESCRIPTION)
 
   typedef enum _SC_ACTION_TYPE {
     SC_ACTION_NONE = 0,SC_ACTION_RESTART = 1,SC_ACTION_REBOOT = 2,SC_ACTION_RUN_COMMAND = 3
@@ -140,13 +128,8 @@
     SC_ACTION *lpsaActions;
   } SERVICE_FAILURE_ACTIONSW,*LPSERVICE_FAILURE_ACTIONSW;
 
-#ifdef UNICODE
-  typedef SERVICE_FAILURE_ACTIONSW SERVICE_FAILURE_ACTIONS;
-  typedef LPSERVICE_FAILURE_ACTIONSW LPSERVICE_FAILURE_ACTIONS;
-#else
-  typedef SERVICE_FAILURE_ACTIONSA SERVICE_FAILURE_ACTIONS;
-  typedef LPSERVICE_FAILURE_ACTIONSA LPSERVICE_FAILURE_ACTIONS;
-#endif
+  __MINGW_TYPEDEF_AW(SERVICE_FAILURE_ACTIONS)
+  __MINGW_TYPEDEF_AW(LPSERVICE_FAILURE_ACTIONS)
 
   DECLARE_HANDLE(SC_HANDLE);
   typedef SC_HANDLE *LPSC_HANDLE;
@@ -195,13 +178,8 @@
     SERVICE_STATUS ServiceStatus;
   } ENUM_SERVICE_STATUSW,*LPENUM_SERVICE_STATUSW;
 
-#ifdef UNICODE
-  typedef ENUM_SERVICE_STATUSW ENUM_SERVICE_STATUS;
-  typedef LPENUM_SERVICE_STATUSW LPENUM_SERVICE_STATUS;
-#else
-  typedef ENUM_SERVICE_STATUSA ENUM_SERVICE_STATUS;
-  typedef LPENUM_SERVICE_STATUSA LPENUM_SERVICE_STATUS;
-#endif
+  __MINGW_TYPEDEF_AW(ENUM_SERVICE_STATUS)
+  __MINGW_TYPEDEF_AW(LPENUM_SERVICE_STATUS)
 
   typedef struct _ENUM_SERVICE_STATUS_PROCESSA {
     LPSTR lpServiceName;
@@ -215,13 +193,8 @@
     SERVICE_STATUS_PROCESS ServiceStatusProcess;
   } ENUM_SERVICE_STATUS_PROCESSW,*LPENUM_SERVICE_STATUS_PROCESSW;
 
-#ifdef UNICODE
-  typedef ENUM_SERVICE_STATUS_PROCESSW ENUM_SERVICE_STATUS_PROCESS;
-  typedef LPENUM_SERVICE_STATUS_PROCESSW LPENUM_SERVICE_STATUS_PROCESS;
-#else
-  typedef ENUM_SERVICE_STATUS_PROCESSA ENUM_SERVICE_STATUS_PROCESS;
-  typedef LPENUM_SERVICE_STATUS_PROCESSA LPENUM_SERVICE_STATUS_PROCESS;
-#endif
+  __MINGW_TYPEDEF_AW(ENUM_SERVICE_STATUS_PROCESS)
+  __MINGW_TYPEDEF_AW(LPENUM_SERVICE_STATUS_PROCESS)
 
   typedef LPVOID SC_LOCK;
 
@@ -237,13 +210,8 @@
     DWORD dwLockDuration;
   } QUERY_SERVICE_LOCK_STATUSW,*LPQUERY_SERVICE_LOCK_STATUSW;
 
-#ifdef UNICODE
-  typedef QUERY_SERVICE_LOCK_STATUSW QUERY_SERVICE_LOCK_STATUS;
-  typedef LPQUERY_SERVICE_LOCK_STATUSW LPQUERY_SERVICE_LOCK_STATUS;
-#else
-  typedef QUERY_SERVICE_LOCK_STATUSA QUERY_SERVICE_LOCK_STATUS;
-  typedef LPQUERY_SERVICE_LOCK_STATUSA LPQUERY_SERVICE_LOCK_STATUS;
-#endif
+  __MINGW_TYPEDEF_AW(QUERY_SERVICE_LOCK_STATUS)
+  __MINGW_TYPEDEF_AW(LPQUERY_SERVICE_LOCK_STATUS)
 
   typedef struct _QUERY_SERVICE_CONFIGA {
     DWORD dwServiceType;
@@ -269,22 +237,13 @@
     LPWSTR lpDisplayName;
   } QUERY_SERVICE_CONFIGW,*LPQUERY_SERVICE_CONFIGW;
 
-#ifdef UNICODE
-  typedef QUERY_SERVICE_CONFIGW QUERY_SERVICE_CONFIG;
-  typedef LPQUERY_SERVICE_CONFIGW LPQUERY_SERVICE_CONFIG;
-#else
-  typedef QUERY_SERVICE_CONFIGA QUERY_SERVICE_CONFIG;
-  typedef LPQUERY_SERVICE_CONFIGA LPQUERY_SERVICE_CONFIG;
-#endif
+  __MINGW_TYPEDEF_AW(QUERY_SERVICE_CONFIG)
+  __MINGW_TYPEDEF_AW(LPQUERY_SERVICE_CONFIG)
 
   typedef VOID (WINAPI *LPSERVICE_MAIN_FUNCTIONW)(DWORD dwNumServicesArgs,LPWSTR *lpServiceArgVectors);
   typedef VOID (WINAPI *LPSERVICE_MAIN_FUNCTIONA)(DWORD dwNumServicesArgs,LPSTR *lpServiceArgVectors);
 
-#ifdef UNICODE
-#define LPSERVICE_MAIN_FUNCTION LPSERVICE_MAIN_FUNCTIONW
-#else
-#define LPSERVICE_MAIN_FUNCTION LPSERVICE_MAIN_FUNCTIONA
-#endif
+#define LPSERVICE_MAIN_FUNCTION __MINGW_NAME_AW(LPSERVICE_MAIN_FUNCTION)
 
   typedef struct _SERVICE_TABLE_ENTRYA {
     LPSTR lpServiceName;
@@ -296,54 +255,29 @@
     LPSERVICE_MAIN_FUNCTIONW lpServiceProc;
   } SERVICE_TABLE_ENTRYW,*LPSERVICE_TABLE_ENTRYW;
 
-#ifdef UNICODE
-  typedef SERVICE_TABLE_ENTRYW SERVICE_TABLE_ENTRY;
-  typedef LPSERVICE_TABLE_ENTRYW LPSERVICE_TABLE_ENTRY;
-#else
-  typedef SERVICE_TABLE_ENTRYA SERVICE_TABLE_ENTRY;
-  typedef LPSERVICE_TABLE_ENTRYA LPSERVICE_TABLE_ENTRY;
-#endif
+  __MINGW_TYPEDEF_AW(SERVICE_TABLE_ENTRY)
+  __MINGW_TYPEDEF_AW(LPSERVICE_TABLE_ENTRY)
 
   typedef VOID (WINAPI *LPHANDLER_FUNCTION)(DWORD dwControl);
   typedef DWORD (WINAPI *LPHANDLER_FUNCTION_EX)(DWORD dwControl,DWORD dwEventType,LPVOID lpEventData,LPVOID lpContext);
 
-#ifdef UNICODE
-#define ChangeServiceConfig ChangeServiceConfigW
-#define ChangeServiceConfig2 ChangeServiceConfig2W
-#define CreateService CreateServiceW
-#define EnumDependentServices EnumDependentServicesW
-#define EnumServicesStatus EnumServicesStatusW
-#define EnumServicesStatusEx EnumServicesStatusExW
-#define GetServiceKeyName GetServiceKeyNameW
-#define GetServiceDisplayName GetServiceDisplayNameW
-#define OpenSCManager OpenSCManagerW
-#define OpenService OpenServiceW
-#define QueryServiceConfig QueryServiceConfigW
-#define QueryServiceConfig2 QueryServiceConfig2W
-#define QueryServiceLockStatus QueryServiceLockStatusW
-#define RegisterServiceCtrlHandler RegisterServiceCtrlHandlerW
-#define RegisterServiceCtrlHandlerEx RegisterServiceCtrlHandlerExW
-#define StartServiceCtrlDispatcher StartServiceCtrlDispatcherW
-#define StartService StartServiceW
-#else
-#define ChangeServiceConfig ChangeServiceConfigA
-#define ChangeServiceConfig2 ChangeServiceConfig2A
-#define CreateService CreateServiceA
-#define EnumDependentServices EnumDependentServicesA
-#define EnumServicesStatus EnumServicesStatusA
-#define EnumServicesStatusEx EnumServicesStatusExA
-#define GetServiceKeyName GetServiceKeyNameA
-#define GetServiceDisplayName GetServiceDisplayNameA
-#define OpenSCManager OpenSCManagerA
-#define OpenService OpenServiceA
-#define QueryServiceConfig QueryServiceConfigA
-#define QueryServiceConfig2 QueryServiceConfig2A
-#define QueryServiceLockStatus QueryServiceLockStatusA
-#define RegisterServiceCtrlHandler RegisterServiceCtrlHandlerA
-#define RegisterServiceCtrlHandlerEx RegisterServiceCtrlHandlerExA
-#define StartServiceCtrlDispatcher StartServiceCtrlDispatcherA
-#define StartService StartServiceA
-#endif
+#define ChangeServiceConfig __MINGW_NAME_AW(ChangeServiceConfig)
+#define ChangeServiceConfig2 __MINGW_NAME_AW(ChangeServiceConfig2)
+#define CreateService __MINGW_NAME_AW(CreateService)
+#define EnumDependentServices __MINGW_NAME_AW(EnumDependentServices)
+#define EnumServicesStatus __MINGW_NAME_AW(EnumServicesStatus)
+#define EnumServicesStatusEx __MINGW_NAME_AW(EnumServicesStatusEx)
+#define GetServiceKeyName __MINGW_NAME_AW(GetServiceKeyName)
+#define GetServiceDisplayName __MINGW_NAME_AW(GetServiceDisplayName)
+#define OpenSCManager __MINGW_NAME_AW(OpenSCManager)
+#define OpenService __MINGW_NAME_AW(OpenService)
+#define QueryServiceConfig __MINGW_NAME_AW(QueryServiceConfig)
+#define QueryServiceConfig2 __MINGW_NAME_AW(QueryServiceConfig2)
+#define QueryServiceLockStatus __MINGW_NAME_AW(QueryServiceLockStatus)
+#define RegisterServiceCtrlHandler __MINGW_NAME_AW(RegisterServiceCtrlHandler)
+#define RegisterServiceCtrlHandlerEx __MINGW_NAME_AW(RegisterServiceCtrlHandlerEx)
+#define StartServiceCtrlDispatcher __MINGW_NAME_AW(StartServiceCtrlDispatcher)
+#define StartService __MINGW_NAME_AW(StartService)
 
   WINADVAPI WINBOOL WINAPI ChangeServiceConfigA(SC_HANDLE hService,DWORD dwServiceType,DWORD dwStartType,DWORD dwErrorControl,LPCSTR lpBinaryPathName,LPCSTR lpLoadOrderGroup,LPDWORD lpdwTagId,LPCSTR lpDependencies,LPCSTR lpServiceStartName,LPCSTR lpPassword,LPCSTR lpDisplayName);
   WINADVAPI WINBOOL WINAPI ChangeServiceConfigW(SC_HANDLE hService,DWORD dwServiceType,DWORD dwStartType,DWORD dwErrorControl,LPCWSTR lpBinaryPathName,LPCWSTR lpLoadOrderGroup,LPDWORD lpdwTagId,LPCWSTR lpDependencies,LPCWSTR lpServiceStartName,LPCWSTR lpPassword,LPCWSTR lpDisplayName);
diff --git a/mingw-w64-headers/include/winuser.h b/mingw-w64-headers/include/winuser.h
index 6afe17e..92ebe9c 100644
--- a/mingw-w64-headers/include/winuser.h
+++ b/mingw-w64-headers/include/winuser.h
@@ -61,11 +61,7 @@
 #define IS_INTRESOURCE(_r) ((((ULONG_PTR)(_r)) >> 16)==0)
 #define MAKEINTRESOURCEA(i) ((LPSTR)((ULONG_PTR)((WORD)(i))))
 #define MAKEINTRESOURCEW(i) ((LPWSTR)((ULONG_PTR)((WORD)(i))))
-#ifdef UNICODE
-#define MAKEINTRESOURCE MAKEINTRESOURCEW
-#else
-#define MAKEINTRESOURCE MAKEINTRESOURCEA
-#endif
+#define MAKEINTRESOURCE __MINGW_NAME_AW(MAKEINTRESOURCE)
 
 #ifndef NORESOURCE
 
@@ -2879,25 +2875,14 @@
 #define ESB_DISABLE_RTDN ESB_DISABLE_RIGHT
 #endif
 
-#ifdef UNICODE
-#define SetProp SetPropW
-#define GetProp GetPropW
-#define RemoveProp RemovePropW
-#define EnumPropsEx EnumPropsExW
-#define EnumProps EnumPropsW
-#define SetWindowText SetWindowTextW
-#define GetWindowText GetWindowTextW
-#define GetWindowTextLength GetWindowTextLengthW
-#else
-#define SetProp SetPropA
-#define GetProp GetPropA
-#define RemoveProp RemovePropA
-#define EnumPropsEx EnumPropsExA
-#define EnumProps EnumPropsA
-#define SetWindowText SetWindowTextA
-#define GetWindowText GetWindowTextA
-#define GetWindowTextLength GetWindowTextLengthA
-#endif
+#define SetProp __MINGW_NAME_AW(SetProp)
+#define GetProp __MINGW_NAME_AW(GetProp)
+#define RemoveProp __MINGW_NAME_AW(RemoveProp)
+#define EnumPropsEx __MINGW_NAME_AW(EnumPropsEx)
+#define EnumProps __MINGW_NAME_AW(EnumProps)
+#define SetWindowText __MINGW_NAME_AW(SetWindowText)
+#define GetWindowText __MINGW_NAME_AW(GetWindowText)
+#define GetWindowTextLength __MINGW_NAME_AW(GetWindowTextLength)
 
   WINUSERAPI WINBOOL WINAPI SetPropA(HWND hWnd,LPCSTR lpString,HANDLE hData);
   WINUSERAPI WINBOOL WINAPI SetPropW(HWND hWnd,LPCWSTR lpString,HANDLE hData);
@@ -2977,13 +2962,8 @@
 #define MB_MODEMASK 0x00003000L
 #define MB_MISCMASK 0x0000C000L
 
-#ifdef UNICODE
-#define MessageBox MessageBoxW
-#define MessageBoxEx MessageBoxExW
-#else
-#define MessageBox MessageBoxA
-#define MessageBoxEx MessageBoxExA
-#endif
+#define MessageBox __MINGW_NAME_AW(MessageBox)
+#define MessageBoxEx __MINGW_NAME_AW(MessageBoxEx)
 
   WINUSERAPI int WINAPI MessageBoxA(HWND hWnd,LPCSTR lpText,LPCSTR lpCaption,UINT uType);
   WINUSERAPI int WINAPI MessageBoxW(HWND hWnd,LPCWSTR lpText,LPCWSTR lpCaption,UINT uType);
@@ -3022,11 +3002,7 @@
   __MINGW_TYPEDEF_AW(PMSGBOXPARAMS)
   __MINGW_TYPEDEF_AW(LPMSGBOXPARAMS)
 
-#ifdef UNICODE
-#define MessageBoxIndirect MessageBoxIndirectW
-#else
-#define MessageBoxIndirect MessageBoxIndirectA
-#endif
+#define MessageBoxIndirect __MINGW_NAME_AW(MessageBoxIndirect)
 
   WINUSERAPI int WINAPI MessageBoxIndirectA(CONST MSGBOXPARAMSA *lpmbp);
   WINUSERAPI int WINAPI MessageBoxIndirectW(CONST MSGBOXPARAMSW *lpmbp);
@@ -3135,13 +3111,8 @@
 
 #ifndef NOWINOFFSETS
 
-#ifdef UNICODE
-#define GetWindowLong GetWindowLongW
-#define SetWindowLong SetWindowLongW
-#else
-#define GetWindowLong GetWindowLongA
-#define SetWindowLong SetWindowLongA
-#endif
+#define GetWindowLong __MINGW_NAME_AW(GetWindowLong)
+#define SetWindowLong __MINGW_NAME_AW(SetWindowLong)
 
   WINUSERAPI WORD WINAPI GetWindowWord(HWND hWnd,int nIndex);
   WINUSERAPI WORD WINAPI SetWindowWord(HWND hWnd,int nIndex,WORD wNewWord);
@@ -3152,13 +3123,8 @@
 
 #ifdef _WIN64
 
-#ifdef UNICODE
-#define GetWindowLongPtr GetWindowLongPtrW
-#define SetWindowLongPtr SetWindowLongPtrW
-#else
-#define GetWindowLongPtr GetWindowLongPtrA
-#define SetWindowLongPtr SetWindowLongPtrA
-#endif
+#define GetWindowLongPtr __MINGW_NAME_AW(GetWindowLongPtr)
+#define SetWindowLongPtr __MINGW_NAME_AW(SetWindowLongPtr)
 
   WINUSERAPI LONG_PTR WINAPI GetWindowLongPtrA(HWND hWnd,int nIndex);
   WINUSERAPI LONG_PTR WINAPI GetWindowLongPtrW(HWND hWnd,int nIndex);
@@ -3166,13 +3132,8 @@
   WINUSERAPI LONG_PTR WINAPI SetWindowLongPtrW(HWND hWnd,int nIndex,LONG_PTR dwNewLong);
 #else
 
-#ifdef UNICODE
-#define GetWindowLongPtr GetWindowLongPtrW
-#define SetWindowLongPtr SetWindowLongPtrW
-#else
-#define GetWindowLongPtr GetWindowLongPtrA
-#define SetWindowLongPtr SetWindowLongPtrA
-#endif
+#define GetWindowLongPtr __MINGW_NAME_AW(GetWindowLongPtr)
+#define SetWindowLongPtr __MINGW_NAME_AW(SetWindowLongPtr)
 
 #define GetWindowLongPtrA GetWindowLongA
 #define GetWindowLongPtrW GetWindowLongW
@@ -3180,13 +3141,8 @@
 #define SetWindowLongPtrW SetWindowLongW
 #endif
 
-#ifdef UNICODE
-#define GetClassLong GetClassLongW
-#define SetClassLong SetClassLongW
-#else
-#define GetClassLong GetClassLongA
-#define SetClassLong SetClassLongA
-#endif
+#define GetClassLong __MINGW_NAME_AW(GetClassLong)
+#define SetClassLong __MINGW_NAME_AW(SetClassLong)
 
   WINUSERAPI WORD WINAPI GetClassWord(HWND hWnd,int nIndex);
   WINUSERAPI WORD WINAPI SetClassWord(HWND hWnd,int nIndex,WORD wNewWord);
@@ -3197,26 +3153,16 @@
 
 #ifdef _WIN64
 
-#ifdef UNICODE
-#define GetClassLongPtr GetClassLongPtrW
-#define SetClassLongPtr SetClassLongPtrW
-#else
-#define GetClassLongPtr GetClassLongPtrA
-#define SetClassLongPtr SetClassLongPtrA
-#endif
+#define GetClassLongPtr __MINGW_NAME_AW(GetClassLongPtr)
+#define SetClassLongPtr __MINGW_NAME_AW(SetClassLongPtr)
 
   WINUSERAPI ULONG_PTR WINAPI GetClassLongPtrA(HWND hWnd,int nIndex);
   WINUSERAPI ULONG_PTR WINAPI GetClassLongPtrW(HWND hWnd,int nIndex);
   WINUSERAPI ULONG_PTR WINAPI SetClassLongPtrA(HWND hWnd,int nIndex,LONG_PTR dwNewLong);
   WINUSERAPI ULONG_PTR WINAPI SetClassLongPtrW(HWND hWnd,int nIndex,LONG_PTR dwNewLong);
 #else
-#ifdef UNICODE
-#define GetClassLongPtr GetClassLongPtrW
-#define SetClassLongPtr SetClassLongPtrW
-#else
-#define GetClassLongPtr GetClassLongPtrA
-#define SetClassLongPtr SetClassLongPtrA
-#endif
+#define GetClassLongPtr __MINGW_NAME_AW(GetClassLongPtr)
+#define SetClassLongPtr __MINGW_NAME_AW(SetClassLongPtr)
 
 #define GetClassLongPtrA GetClassLongA
 #define GetClassLongPtrW GetClassLongW
@@ -3225,15 +3171,9 @@
 #endif
 #endif
 
-#ifdef UNICODE
-#define FindWindow FindWindowW
-#define FindWindowEx FindWindowExW
-#define GetClassName GetClassNameW
-#else
-#define FindWindow FindWindowA
-#define FindWindowEx FindWindowExA
-#define GetClassName GetClassNameA
-#endif
+#define FindWindow __MINGW_NAME_AW(FindWindow)
+#define FindWindowEx __MINGW_NAME_AW(FindWindowEx)
+#define GetClassName __MINGW_NAME_AW(GetClassName)
 
   WINUSERAPI WINBOOL WINAPI GetProcessDefaultLayout(DWORD *pdwDefaultLayout);
   WINUSERAPI WINBOOL WINAPI SetProcessDefaultLayout(DWORD dwDefaultLayout);
@@ -3281,13 +3221,8 @@
 
 #ifndef NOWH
 
-#ifdef UNICODE
-#define SetWindowsHook SetWindowsHookW
-#define SetWindowsHookEx SetWindowsHookExW
-#else
-#define SetWindowsHook SetWindowsHookA
-#define SetWindowsHookEx SetWindowsHookExA
-#endif
+#define SetWindowsHook __MINGW_NAME_AW(SetWindowsHook)
+#define SetWindowsHookEx __MINGW_NAME_AW(SetWindowsHookEx)
 
   WINUSERAPI HHOOK WINAPI SetWindowsHookA(int nFilterType,HOOKPROC pfnFilterProc);
   WINUSERAPI HHOOK WINAPI SetWindowsHookW(int nFilterType,HOOKPROC pfnFilterProc);
@@ -3390,15 +3325,9 @@
 #define SC_ZOOM SC_MAXIMIZE
 #endif
 
-#ifdef UNICODE
-#define LoadBitmap LoadBitmapW
-#define LoadCursor LoadCursorW
-#define LoadCursorFromFile LoadCursorFromFileW
-#else
-#define LoadBitmap LoadBitmapA
-#define LoadCursor LoadCursorA
-#define LoadCursorFromFile LoadCursorFromFileA
-#endif
+#define LoadBitmap __MINGW_NAME_AW(LoadBitmap)
+#define LoadCursor __MINGW_NAME_AW(LoadCursor)
+#define LoadCursorFromFile __MINGW_NAME_AW(LoadCursorFromFile)
 
   WINUSERAPI HBITMAP WINAPI LoadBitmapA(HINSTANCE hInstance,LPCSTR lpBitmapName);
   WINUSERAPI HBITMAP WINAPI LoadBitmapW(HINSTANCE hInstance,LPCWSTR lpBitmapName);
@@ -3439,13 +3368,8 @@
   } ICONINFO;
   typedef ICONINFO *PICONINFO;
 
-#ifdef UNICODE
-#define LoadIcon LoadIconW
-#define PrivateExtractIcons PrivateExtractIconsW
-#else
-#define LoadIcon LoadIconA
-#define PrivateExtractIcons PrivateExtractIconsA
-#endif
+#define LoadIcon __MINGW_NAME_AW(LoadIcon)
+#define PrivateExtractIcons __MINGW_NAME_AW(PrivateExtractIcons)
 
   WINUSERAPI HICON WINAPI LoadIconA(HINSTANCE hInstance,LPCSTR lpIconName);
   WINUSERAPI HICON WINAPI LoadIconW(HINSTANCE hInstance,LPCWSTR lpIconName);
@@ -3487,11 +3411,7 @@
 #define LR_COPYFROMRESOURCE 0x4000
 #define LR_SHARED 0x8000
 
-#ifdef UNICODE
-#define LoadImage LoadImageW
-#else
-#define LoadImage LoadImageA
-#endif
+#define LoadImage __MINGW_NAME_AW(LoadImage)
 
   WINUSERAPI HANDLE WINAPI LoadImageA(HINSTANCE hInst,LPCSTR name,UINT type,int cx,int cy,UINT fuLoad);
   WINUSERAPI HANDLE WINAPI LoadImageW(HINSTANCE hInst,LPCWSTR name,UINT type,int cx,int cy,UINT fuLoad);
@@ -3603,11 +3523,7 @@
 #define IDI_INFORMATION IDI_ASTERISK
 #endif
 
-#ifdef UNICODE
-#define LoadString LoadStringW
-#else
-#define LoadString LoadStringA
-#endif
+#define LoadString __MINGW_NAME_AW(LoadString)
 
   WINUSERAPI int WINAPI LoadStringA(HINSTANCE hInstance,UINT uID,LPSTR lpBuffer,int cchBufferMax);
   WINUSERAPI int WINAPI LoadStringW(HINSTANCE hInstance,UINT uID,LPWSTR lpBuffer,int cchBufferMax);
@@ -3836,27 +3752,16 @@
 
 #ifndef NOMSG
 
-#ifdef UNICODE
-#define IsDialogMessage IsDialogMessageW
-#else
-#define IsDialogMessage IsDialogMessageA
-#endif
+#define IsDialogMessage __MINGW_NAME_AW(IsDialogMessage)
 
   WINUSERAPI WINBOOL WINAPI IsDialogMessageA(HWND hDlg,LPMSG lpMsg);
   WINUSERAPI WINBOOL WINAPI IsDialogMessageW(HWND hDlg,LPMSG lpMsg);
 #endif
 
-#ifdef UNICODE
-#define DlgDirList DlgDirListW
-#define DlgDirSelectEx DlgDirSelectExW
-#define DlgDirListComboBox DlgDirListComboBoxW
-#define DlgDirSelectComboBoxEx DlgDirSelectComboBoxExW
-#else
-#define DlgDirList DlgDirListA
-#define DlgDirSelectEx DlgDirSelectExA
-#define DlgDirListComboBox DlgDirListComboBoxA
-#define DlgDirSelectComboBoxEx DlgDirSelectComboBoxExA
-#endif
+#define DlgDirList __MINGW_NAME_AW(DlgDirList)
+#define DlgDirSelectEx __MINGW_NAME_AW(DlgDirSelectEx)
+#define DlgDirListComboBox __MINGW_NAME_AW(DlgDirListComboBox)
+#define DlgDirSelectComboBoxEx __MINGW_NAME_AW(DlgDirSelectComboBoxEx)
 
   WINUSERAPI WINBOOL WINAPI MapDialogRect(HWND hDlg,LPRECT lpRect);
   WINUSERAPI int WINAPI DlgDirListA(HWND hDlg,LPSTR lpPathSpec,int nIDListBox,int nIDStaticPath,UINT uFileType);
@@ -4168,15 +4073,9 @@
     UINT idFirstChild;
   } CLIENTCREATESTRUCT,*LPCLIENTCREATESTRUCT;
 
-#ifdef UNICODE
-#define DefFrameProc DefFrameProcW
-#define DefMDIChildProc DefMDIChildProcW
-#define CreateMDIWindow CreateMDIWindowW
-#else
-#define DefFrameProc DefFrameProcA
-#define DefMDIChildProc DefMDIChildProcA
-#define CreateMDIWindow CreateMDIWindowA
-#endif
+#define DefFrameProc __MINGW_NAME_AW(DefFrameProc)
+#define DefMDIChildProc __MINGW_NAME_AW(DefMDIChildProc)
+#define CreateMDIWindow __MINGW_NAME_AW(CreateMDIWindow)
 
   WINUSERAPI LRESULT WINAPI DefFrameProcA(HWND hWnd,HWND hWndMDIClient,UINT uMsg,WPARAM wParam,LPARAM lParam);
   WINUSERAPI LRESULT WINAPI DefFrameProcW(HWND hWnd,HWND hWndMDIClient,UINT uMsg,WPARAM wParam,LPARAM lParam);
@@ -4268,11 +4167,7 @@
 #define IDH_CANCEL 28444
 #define IDH_HELP 28445
 
-#ifdef UNICODE
-#define WinHelp WinHelpW
-#else
-#define WinHelp WinHelpA
-#endif
+#define WinHelp __MINGW_NAME_AW(WinHelp)
 
   WINUSERAPI WINBOOL WINAPI WinHelpA(HWND hWndMain,LPCSTR lpszHelp,UINT uCommand,ULONG_PTR dwData);
   WINUSERAPI WINBOOL WINAPI WinHelpW(HWND hWndMain,LPCWSTR lpszHelp,UINT uCommand,ULONG_PTR dwData);
@@ -4642,19 +4537,11 @@
 #ifdef _WINGDI_
 #ifndef NOGDI
 
-#ifdef UNICODE
-#define ChangeDisplaySettings ChangeDisplaySettingsW
-#define ChangeDisplaySettingsEx ChangeDisplaySettingsExW
-#define EnumDisplaySettings EnumDisplaySettingsW
-#define EnumDisplaySettingsEx EnumDisplaySettingsExW
-#define EnumDisplayDevices EnumDisplayDevicesW
-#else
-#define ChangeDisplaySettings ChangeDisplaySettingsA
-#define ChangeDisplaySettingsEx ChangeDisplaySettingsExA
-#define EnumDisplaySettings EnumDisplaySettingsA
-#define EnumDisplaySettingsEx EnumDisplaySettingsExA
-#define EnumDisplayDevices EnumDisplayDevicesA
-#endif
+#define ChangeDisplaySettings __MINGW_NAME_AW(ChangeDisplaySettings)
+#define ChangeDisplaySettingsEx __MINGW_NAME_AW(ChangeDisplaySettingsEx)
+#define EnumDisplaySettings __MINGW_NAME_AW(EnumDisplaySettings)
+#define EnumDisplaySettingsEx __MINGW_NAME_AW(EnumDisplaySettingsEx)
+#define EnumDisplayDevices __MINGW_NAME_AW(EnumDisplayDevices)
 
   WINUSERAPI LONG WINAPI ChangeDisplaySettingsA(LPDEVMODEA lpDevMode,DWORD dwFlags);
   WINUSERAPI LONG WINAPI ChangeDisplaySettingsW(LPDEVMODEW lpDevMode,DWORD dwFlags);
@@ -4676,11 +4563,7 @@
 #endif
 #endif
 
-#ifdef UNICODE
-#define SystemParametersInfo SystemParametersInfoW
-#else
-#define SystemParametersInfo SystemParametersInfoA
-#endif
+#define SystemParametersInfo __MINGW_NAME_AW(SystemParametersInfo)
 
   WINUSERAPI WINBOOL WINAPI SystemParametersInfoA(UINT uiAction,UINT uiParam,PVOID pvParam,UINT fWinIni);
   WINUSERAPI WINBOOL WINAPI SystemParametersInfoW(UINT uiAction,UINT uiParam,PVOID pvParam,UINT fWinIni);
@@ -4900,11 +4783,7 @@
   __MINGW_TYPEDEF_AW(LPMONITORINFOEX)
 #endif
 
-#ifdef UNICODE 
-#define GetMonitorInfo GetMonitorInfoW
-#else
-#define GetMonitorInfo GetMonitorInfoA
-#endif
+#define GetMonitorInfo __MINGW_NAME_AW(GetMonitorInfo)
 
   WINUSERAPI WINBOOL WINAPI GetMonitorInfoA(HMONITOR hMonitor,LPMONITORINFO lpmi);
   WINUSERAPI WINBOOL WINAPI GetMonitorInfoW(HMONITOR hMonitor,LPMONITORINFO lpmi);
@@ -5055,11 +4934,7 @@
 #define GUI_POPUPMENUMODE 0x00000010
 #define GUI_16BITTASK 0x00000020
 
-#ifdef UNICODE
-#define GetWindowModuleFileName GetWindowModuleFileNameW
-#else
-#define GetWindowModuleFileName GetWindowModuleFileNameA
-#endif
+#define GetWindowModuleFileName __MINGW_NAME_AW(GetWindowModuleFileName)
 
   WINUSERAPI WINBOOL WINAPI GetGUIThreadInfo(DWORD idThread,PGUITHREADINFO pgui);
   WINUSERAPI UINT WINAPI GetWindowModuleFileNameA(HWND hwnd,LPSTR pszFileName,UINT cchFileNameMax);
@@ -5182,11 +5057,8 @@
   WINUSERAPI HWND WINAPI RealChildWindowFromPoint(HWND hwndParent,POINT ptParentClientCoords);
   WINUSERAPI UINT WINAPI RealGetWindowClassA(HWND hwnd,LPSTR ptszClassName,UINT cchClassNameMax);
   WINUSERAPI UINT WINAPI RealGetWindowClassW(HWND hwnd,LPWSTR ptszClassName,UINT cchClassNameMax);
-#ifdef UNICODE
-#define RealGetWindowClass RealGetWindowClassW
-#else
-#define RealGetWindowClass RealGetWindowClassA
-#endif
+
+#define RealGetWindowClass __MINGW_NAME_AW(RealGetWindowClass)
 
   typedef struct tagALTTABINFO {
     DWORD cbSize;
@@ -5200,11 +5072,7 @@
     POINT ptStart;
   } ALTTABINFO,*PALTTABINFO,*LPALTTABINFO;
 
-#ifdef UNICODE
-#define GetAltTabInfo GetAltTabInfoW
-#else
-#define GetAltTabInfo GetAltTabInfoA
-#endif
+#define GetAltTabInfo __MINGW_NAME_AW(GetAltTabInfo)
 
   WINUSERAPI WINBOOL WINAPI GetAltTabInfoA(HWND hwnd,int iItem,PALTTABINFO pati,LPSTR pszItemText,UINT cchItemText);
   WINUSERAPI WINBOOL WINAPI GetAltTabInfoW(HWND hwnd,int iItem,PALTTABINFO pati,LPWSTR pszItemText,UINT cchItemText);
@@ -5356,11 +5224,7 @@
     };
   } RID_DEVICE_INFO,*PRID_DEVICE_INFO,*LPRID_DEVICE_INFO;
 
-#ifdef UNICODE
-#define GetRawInputDeviceInfo GetRawInputDeviceInfoW
-#else
-#define GetRawInputDeviceInfo GetRawInputDeviceInfoA
-#endif
+#define GetRawInputDeviceInfo __MINGW_NAME_AW(GetRawInputDeviceInfo)
 
   WINUSERAPI UINT WINAPI GetRawInputDeviceInfoA(HANDLE hDevice,UINT uiCommand,LPVOID pData,PUINT pcbSize);
   WINUSERAPI UINT WINAPI GetRawInputDeviceInfoW(HANDLE hDevice,UINT uiCommand,LPVOID pData,PUINT pcbSize);