diff --git a/mingw-w64-headers/include/joystickapi.h b/mingw-w64-headers/include/joystickapi.h
index 2ac1816..80a32ae 100644
--- a/mingw-w64-headers/include/joystickapi.h
+++ b/mingw-w64-headers/include/joystickapi.h
@@ -106,8 +106,6 @@
 #define JOYCAPS_POV4DIR 0x0020
 #define JOYCAPS_POVCTS 0x0040
 
-#ifdef _WIN32
-
 typedef struct tagJOYCAPSA {
   WORD wMid;
   WORD wPid;
@@ -121,7 +119,6 @@
   UINT wNumButtons;
   UINT wPeriodMin;
   UINT wPeriodMax;
-#if (WINVER >= 0x0400)
   UINT wRmin;
   UINT wRmax;
   UINT wUmin;
@@ -134,7 +131,6 @@
   UINT wMaxButtons;
   CHAR szRegKey[MAXPNAMELEN];
   CHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME];
-#endif
 } JOYCAPSA, *PJOYCAPSA, *NPJOYCAPSA, *LPJOYCAPSA;
 
 typedef struct tagJOYCAPSW {
@@ -150,7 +146,6 @@
   UINT wNumButtons;
   UINT wPeriodMin;
   UINT wPeriodMax;
-#if (WINVER >= 0x0400)
   UINT wRmin;
   UINT wRmax;
   UINT wUmin;
@@ -163,7 +158,6 @@
   UINT wMaxButtons;
   WCHAR szRegKey[MAXPNAMELEN];
   WCHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME];
-#endif
 } JOYCAPSW, *PJOYCAPSW, *NPJOYCAPSW, *LPJOYCAPSW;
 
 __MINGW_TYPEDEF_AW(JOYCAPS)
@@ -236,37 +230,6 @@
 __MINGW_TYPEDEF_AW(NPJOYCAPS2)
 __MINGW_TYPEDEF_AW(LPJOYCAPS2)
 
-#else
-typedef struct joycaps_tag {
-  WORD wMid;
-  WORD wPid;
-  char szPname[MAXPNAMELEN];
-  UINT wXmin;
-  UINT wXmax;
-  UINT wYmin;
-  UINT wYmax;
-  UINT wZmin;
-  UINT wZmax;
-  UINT wNumButtons;
-  UINT wPeriodMin;
-  UINT wPeriodMax;
-#if (WINVER >= 0x0400)
-  UINT wRmin;
-  UINT wRmax;
-  UINT wUmin;
-  UINT wUmax;
-  UINT wVmin;
-  UINT wVmax;
-  UINT wCaps;
-  UINT wMaxAxes;
-  UINT wNumAxes;
-  UINT wMaxButtons;
-  char szRegKey[MAXPNAMELEN];
-  char szOEMVxD[MAX_JOYSTICKOEMVXDNAME];
-#endif
-} JOYCAPS, *PJOYCAPS, *NPJOYCAPS, *LPJOYCAPS;
-#endif
-
 typedef struct joyinfo_tag {
   UINT wXpos;
   UINT wYpos;
@@ -274,7 +237,6 @@
   UINT wButtons;
 } JOYINFO, *PJOYINFO, *NPJOYINFO, *LPJOYINFO;
 
-#if (WINVER >= 0x0400)
 typedef struct joyinfoex_tag {
   DWORD dwSize;
   DWORD dwFlags;
@@ -290,21 +252,14 @@
   DWORD dwReserved1;
   DWORD dwReserved2;
 } JOYINFOEX, *PJOYINFOEX, *NPJOYINFOEX, *LPJOYINFOEX;
-#endif
 
-#if (WINVER >= 0x0400)
 WINMMAPI MMRESULT WINAPI joyGetPosEx(UINT uJoyID, LPJOYINFOEX pji);
-#endif /* WINVER >= 0x0400 */
 
 WINMMAPI UINT WINAPI joyGetNumDevs(void);
 
-#ifdef _WIN32
 WINMMAPI MMRESULT WINAPI joyGetDevCapsA(UINT_PTR uJoyID, LPJOYCAPSA pjc, UINT cbjc);
 WINMMAPI MMRESULT WINAPI joyGetDevCapsW(UINT_PTR uJoyID, LPJOYCAPSW pjc, UINT cbjc);
 #define joyGetDevCaps __MINGW_NAME_AW(joyGetDevCaps)
-#else
-MMRESULT WINAPI joyGetDevCaps(UINT uJoyID, LPJOYCAPS pjc, UINT cbjc);
-#endif
 
 WINMMAPI MMRESULT WINAPI joyGetPos(UINT uJoyID, LPJOYINFO pji);
 WINMMAPI MMRESULT WINAPI joyGetThreshold(UINT uJoyID, LPUINT puThreshold);
@@ -312,9 +267,7 @@
 WINMMAPI MMRESULT WINAPI joySetCapture(HWND hwnd, UINT uJoyID, UINT uPeriod, WINBOOL fChanged);
 WINMMAPI MMRESULT WINAPI joySetThreshold(UINT uJoyID, UINT uThreshold);
 
-#if (WINVER >= 0x0400)
 WINMMAPI MMRESULT WINAPI joyConfigChanged(DWORD dwFlags);
-#endif
 
 #endif  /* ifndef MMNOJOY */
 
diff --git a/mingw-w64-headers/include/mciapi.h b/mingw-w64-headers/include/mciapi.h
index ea9c7d6..0d2e3a2 100644
--- a/mingw-w64-headers/include/mciapi.h
+++ b/mingw-w64-headers/include/mciapi.h
@@ -30,7 +30,6 @@
 
 typedef UINT (CALLBACK *YIELDPROC)(MCIDEVICEID mciId, DWORD dwYieldData);
 
-#ifdef _WIN32
 WINMMAPI MCIERROR WINAPI mciSendCommandA(MCIDEVICEID mciId, UINT uMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2);
 WINMMAPI MCIERROR WINAPI mciSendCommandW(MCIDEVICEID mciId, UINT uMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2);
 #define mciSendCommand __MINGW_NAME_AW(mciSendCommand)
@@ -51,23 +50,12 @@
 WINMMAPI WINBOOL WINAPI mciGetErrorStringW(MCIERROR mcierr, LPWSTR pszText, UINT cchText);
 #define mciGetErrorString __MINGW_NAME_AW(mciGetErrorString)
 
-#else
-MCIERROR WINAPI mciSendCommand(MCIDEVICEID mciId, UINT uMsg, DWORD dwParam1, DWORD dwParam2);
-MCIERROR  WINAPI mciSendString(LPCSTR lpstrCommand, LPSTR lpstrReturnString, UINT uReturnLength, HWND hwndCallback);
-MCIDEVICEID WINAPI mciGetDeviceID(LPCSTR pszDevice);
-WINBOOL WINAPI mciGetErrorString(MCIERROR mcierr, LPSTR pszText, UINT cchText);
-#endif
-
 WINMMAPI WINBOOL WINAPI mciSetYieldProc(MCIDEVICEID mciId, YIELDPROC fpYieldProc, DWORD dwYieldData);
 
-#if (WINVER >= 0x030a)
 WINMMAPI HTASK WINAPI mciGetCreatorTask(MCIDEVICEID mciId);
 WINMMAPI YIELDPROC WINAPI mciGetYieldProc(MCIDEVICEID mciId, LPDWORD pdwYieldData);
-#endif
 
-#if (WINVER < 0x030a)
 WINMMAPI WINBOOL WINAPI mciExecute(LPCSTR pszCommand);
-#endif
 
 #define MCIERR_INVALID_DEVICE_ID (MCIERR_BASE + 1)
 #define MCIERR_UNRECOGNIZED_KEYWORD (MCIERR_BASE + 3)
@@ -330,8 +318,6 @@
   DWORD_PTR dwCallback;
 } MCI_GENERIC_PARMS, *PMCI_GENERIC_PARMS, *LPMCI_GENERIC_PARMS;
 
-#ifdef _WIN32
-
 typedef struct tagMCI_OPEN_PARMSA {
   DWORD_PTR dwCallback;
   MCIDEVICEID wDeviceID;
@@ -352,17 +338,6 @@
 __MINGW_TYPEDEF_AW(PMCI_OPEN_PARMS)
 __MINGW_TYPEDEF_AW(LPMCI_OPEN_PARMS)
 
-#else
-typedef struct tagMCI_OPEN_PARMS {
-  DWORD dwCallback;
-  MCIDEVICEID wDeviceID;
-  WORD wReserved0;
-  LPCSTR lpstrDeviceType;
-  LPCSTR lpstrElementName;
-  LPCSTR lpstrAlias;
-} MCI_OPEN_PARMS, *LPMCI_OPEN_PARMS;
-#endif
-
 typedef struct tagMCI_PLAY_PARMS {
   DWORD_PTR dwCallback;
   DWORD dwFrom;
@@ -381,8 +356,6 @@
   DWORD dwTrack;
 } MCI_STATUS_PARMS, *PMCI_STATUS_PARMS, *LPMCI_STATUS_PARMS;
 
-#ifdef _WIN32
-
 typedef struct tagMCI_INFO_PARMSA {
   DWORD_PTR dwCallback;
   LPSTR lpstrReturn;
@@ -398,22 +371,12 @@
 __MINGW_TYPEDEF_AW(MCI_INFO_PARMS)
 __MINGW_TYPEDEF_AW(LPMCI_INFO_PARMS)
 
-#else
-typedef struct tagMCI_INFO_PARMS {
-  DWORD dwCallback;
-  LPSTR lpstrReturn;
-  DWORD dwRetSize;
-} MCI_INFO_PARMS, *LPMCI_INFO_PARMS;
-#endif
-
 typedef struct tagMCI_GETDEVCAPS_PARMS {
   DWORD_PTR dwCallback;
   DWORD dwReturn;
   DWORD dwItem;
 } MCI_GETDEVCAPS_PARMS, *PMCI_GETDEVCAPS_PARMS, *LPMCI_GETDEVCAPS_PARMS;
 
-#ifdef _WIN32
-
 typedef struct tagMCI_SYSINFO_PARMSA {
   DWORD_PTR dwCallback;
   LPSTR lpstrReturn;
@@ -434,17 +397,6 @@
 __MINGW_TYPEDEF_AW(PMCI_SYSINFO_PARMS)
 __MINGW_TYPEDEF_AW(LPMCI_SYSINFO_PARMS)
 
-#else
-typedef struct tagMCI_SYSINFO_PARMS {
-  DWORD dwCallback;
-  LPSTR lpstrReturn;
-  DWORD dwRetSize;
-  DWORD dwNumber;
-  WORD wDeviceType;
-  WORD wReserved0;
-} MCI_SYSINFO_PARMS, *LPMCI_SYSINFO_PARMS;
-#endif
-
 typedef struct tagMCI_SET_PARMS {
   DWORD_PTR dwCallback;
   DWORD dwTimeFormat;
@@ -453,19 +405,10 @@
 
 typedef struct tagMCI_BREAK_PARMS {
   DWORD_PTR dwCallback;
-#ifdef _WIN32
   int nVirtKey;
   HWND hwndBreak;
-#else
-  short nVirtKey;
-  WORD wReserved0;
-  HWND hwndBreak;
-  WORD wReserved1;
-#endif
 } MCI_BREAK_PARMS, *PMCI_BREAK_PARMS, *LPMCI_BREAK_PARMS;
 
-#ifdef _WIN32
-
 typedef struct tagMCI_SAVE_PARMSA {
   DWORD_PTR dwCallback;
   LPCSTR lpfilename;
@@ -480,15 +423,6 @@
 __MINGW_TYPEDEF_AW(PMCI_SAVE_PARMS)
 __MINGW_TYPEDEF_AW(LPMCI_SAVE_PARMS)
 
-#else
-typedef struct tagMCI_SAVE_PARMS {
-  DWORD_PTR dwCallback;
-  LPCSTR lpfilename;
-} MCI_SAVE_PARMS, *LPMCI_SAVE_PARMS;
-#endif
-
-#ifdef _WIN32
-
 typedef struct tagMCI_LOAD_PARMSA {
   DWORD_PTR dwCallback;
   LPCSTR lpfilename;
@@ -503,13 +437,6 @@
 __MINGW_TYPEDEF_AW(PMCI_LOAD_PARMS)
 __MINGW_TYPEDEF_AW(LPMCI_LOAD_PARMS)
 
-#else
-typedef struct tagMCI_LOAD_PARMS {
-  DWORD dwCallback;
-  LPCSTR lpfilename;
-} MCI_LOAD_PARMS, *LPMCI_LOAD_PARMS;
-#endif
-
 typedef struct tagMCI_RECORD_PARMS {
   DWORD_PTR dwCallback;
   DWORD dwFrom;
@@ -566,8 +493,6 @@
   DWORD dwFrames;
 } MCI_VD_STEP_PARMS, *PMCI_VD_STEP_PARMS, *LPMCI_VD_STEP_PARMS;
 
-#ifdef _WIN32
-
 typedef struct tagMCI_VD_ESCAPE_PARMSA {
   DWORD_PTR dwCallback;
   LPCSTR lpstrCommand;
@@ -582,13 +507,6 @@
 __MINGW_TYPEDEF_AW(PMCI_VD_ESCAPE_PARMS)
 __MINGW_TYPEDEF_AW(LPMCI_VD_ESCAPE_PARMS)
 
-#else
-typedef struct tagMCI_VD_ESCAPE_PARMS {
-  DWORD dwCallback;
-  LPCSTR lpstrCommand;
-} MCI_VD_ESCAPE_PARMS, *LPMCI_VD_ESCAPE_PARMS;
-#endif
-
 #define MCI_CDA_STATUS_TYPE_TRACK __MSABI_LONG(0x00004001)
 
 #define MCI_CDA_TRACK_AUDIO (MCI_CD_OFFSET + 0)
@@ -623,8 +541,6 @@
 #define MCI_WAVE_GETDEVCAPS_INPUTS __MSABI_LONG(0x00004001)
 #define MCI_WAVE_GETDEVCAPS_OUTPUTS __MSABI_LONG(0x00004002)
 
-#ifdef _WIN32
-
 typedef struct tagMCI_WAVE_OPEN_PARMSA {
   DWORD_PTR dwCallback;
   MCIDEVICEID wDeviceID;
@@ -647,18 +563,6 @@
 __MINGW_TYPEDEF_AW(PMCI_WAVE_OPEN_PARMS)
 __MINGW_TYPEDEF_AW(LPMCI_WAVE_OPEN_PARMS)
 
-#else
-typedef struct tagMCI_WAVE_OPEN_PARMS {
-  DWORD dwCallback;
-  MCIDEVICEID wDeviceID;
-  WORD wReserved0;
-  LPCSTR lpstrDeviceType;
-  LPCSTR lpstrElementName;
-  LPCSTR lpstrAlias;
-  DWORD dwBufferSeconds;
-} MCI_WAVE_OPEN_PARMS, *LPMCI_WAVE_OPEN_PARMS;
-#endif
-
 typedef struct tagMCI_WAVE_DELETE_PARMS {
   DWORD_PTR dwCallback;
   DWORD dwFrom;
@@ -669,15 +573,8 @@
   DWORD_PTR dwCallback;
   DWORD dwTimeFormat;
   DWORD dwAudio;
-#ifdef _WIN32
   UINT wInput;
   UINT wOutput;
-#else
-  WORD wInput;
-  WORD wReserved0;
-  WORD wOutput;
-  WORD wReserved1;
-#endif
   WORD wFormatTag;
   WORD wReserved2;
   WORD nChannels;
@@ -778,8 +675,6 @@
 
 #define MCI_ANIM_UPDATE_HDC __MSABI_LONG(0x00020000)
 
-#ifdef _WIN32
-
 typedef struct tagMCI_ANIM_OPEN_PARMSA {
   DWORD_PTR dwCallback;
   MCIDEVICEID wDeviceID;
@@ -804,20 +699,6 @@
 __MINGW_TYPEDEF_AW(PMCI_ANIM_OPEN_PARMS)
 __MINGW_TYPEDEF_AW(LPMCI_ANIM_OPEN_PARMS)
 
-#else
-typedef struct tagMCI_ANIM_OPEN_PARMS {
-  DWORD dwCallback;
-  MCIDEVICEID wDeviceID;
-  WORD wReserved0;
-  LPCSTR lpstrDeviceType;
-  LPCSTR lpstrElementName;
-  LPCSTR lpstrAlias;
-  DWORD dwStyle;
-  HWND hWndParent;
-  WORD wReserved1;
-} MCI_ANIM_OPEN_PARMS, *LPMCI_ANIM_OPEN_PARMS;
-#endif
-
 typedef struct tagMCI_ANIM_PLAY_PARMS {
   DWORD_PTR dwCallback;
   DWORD dwFrom;
@@ -830,8 +711,6 @@
   DWORD dwFrames;
 } MCI_ANIM_STEP_PARMS, *PMCI_ANIM_STEP_PARMS, *LPMCI_ANIM_STEP_PARMS;
 
-#ifdef _WIN32
-
 typedef struct tagMCI_ANIM_WINDOW_PARMSA {
   DWORD_PTR dwCallback;
   HWND hWnd;
@@ -850,17 +729,6 @@
 __MINGW_TYPEDEF_AW(PMCI_ANIM_WINDOW_PARMS)
 __MINGW_TYPEDEF_AW(LPMCI_ANIM_WINDOW_PARMS)
 
-#else
-typedef struct tagMCI_ANIM_WINDOW_PARMS {
-  DWORD dwCallback;
-  HWND hWnd;
-  WORD wReserved1;
-  WORD nCmdShow;
-  WORD wReserved2;
-  LPCSTR lpstrText;
-} MCI_ANIM_WINDOW_PARMS, *LPMCI_ANIM_WINDOW_PARMS;
-#endif
-
 typedef struct tagMCI_ANIM_RECT_PARMS {
   DWORD_PTR dwCallback;
 #ifdef MCI_USE_OFFEXT
@@ -908,8 +776,6 @@
 #define MCI_OVLY_WHERE_FRAME __MSABI_LONG(0x00080000)
 #define MCI_OVLY_WHERE_VIDEO __MSABI_LONG(0x00100000)
 
-#ifdef _WIN32
-
 typedef struct tagMCI_OVLY_OPEN_PARMSA {
   DWORD_PTR dwCallback;
   MCIDEVICEID wDeviceID;
@@ -934,22 +800,6 @@
 __MINGW_TYPEDEF_AW(PMCI_OVLY_OPEN_PARMS)
 __MINGW_TYPEDEF_AW(LPMCI_OVLY_OPEN_PARMS)
 
-#else
-typedef struct tagMCI_OVLY_OPEN_PARMS {
-  DWORD dwCallback;
-  MCIDEVICEID wDeviceID;
-  WORD wReserved0;
-  LPCSTR lpstrDeviceType;
-  LPCSTR lpstrElementName;
-  LPCSTR lpstrAlias;
-  DWORD dwStyle;
-  HWND hWndParent;
-  WORD wReserved1;
-} MCI_OVLY_OPEN_PARMS, *LPMCI_OVLY_OPEN_PARMS;
-#endif
-
-#ifdef _WIN32
-
 typedef struct tagMCI_OVLY_WINDOW_PARMSA {
   DWORD_PTR dwCallback;
   HWND hWnd;
@@ -968,17 +818,6 @@
 __MINGW_TYPEDEF_AW(PMCI_OVLY_WINDOW_PARMS)
 __MINGW_TYPEDEF_AW(LPMCI_OVLY_WINDOW_PARMS)
 
-#else
-typedef struct tagMCI_OVLY_WINDOW_PARMS {
-  DWORD dwCallback;
-  HWND hWnd;
-  WORD wReserved1;
-  UINT nCmdShow;
-  WORD wReserved2;
-  LPCSTR lpstrText;
-} MCI_OVLY_WINDOW_PARMS, *LPMCI_OVLY_WINDOW_PARMS;
-#endif
-
 typedef struct tagMCI_OVLY_RECT_PARMS {
   DWORD_PTR dwCallback;
 #ifdef MCI_USE_OFFEXT
@@ -989,8 +828,6 @@
 #endif
 } MCI_OVLY_RECT_PARMS, *PMCI_OVLY_RECT_PARMS, *LPMCI_OVLY_RECT_PARMS;
 
-#ifdef _WIN32
-
 typedef struct tagMCI_OVLY_SAVE_PARMSA {
   DWORD_PTR dwCallback;
   LPCSTR lpfilename;
@@ -1007,16 +844,6 @@
 __MINGW_TYPEDEF_AW(PMCI_OVLY_SAVE_PARMS)
 __MINGW_TYPEDEF_AW(LPMCI_OVLY_SAVE_PARMS)
 
-#else
-typedef struct tagMCI_OVLY_SAVE_PARMS {
-  DWORD dwCallback;
-  LPCSTR lpfilename;
-  RECT rc;
-} MCI_OVLY_SAVE_PARMS, *LPMCI_OVLY_SAVE_PARMS;
-#endif
-
-#ifdef _WIN32
-
 typedef struct tagMCI_OVLY_LOAD_PARMSA {
   DWORD_PTR dwCallback;
   LPCSTR lpfilename;
@@ -1033,14 +860,6 @@
 __MINGW_TYPEDEF_AW(PMCI_OVLY_LOAD_PARMS)
 __MINGW_TYPEDEF_AW(LPMCI_OVLY_LOAD_PARMS)
 
-#else
-typedef struct tagMCI_OVLY_LOAD_PARMS {
-  DWORD dwCallback;
-  LPCSTR lpfilename;
-  RECT rc;
-} MCI_OVLY_LOAD_PARMS, *LPMCI_OVLY_LOAD_PARMS;
-#endif
-
 DWORD_PTR APIENTRY mciGetDriverData(MCIDEVICEID wDeviceID);
 UINT APIENTRY mciLoadCommandResource(HANDLE hInstance, LPCWSTR lpResName, UINT wType);
 WINBOOL APIENTRY mciSetDriverData(MCIDEVICEID wDeviceID, DWORD_PTR dwData);
diff --git a/mingw-w64-headers/include/mmeapi.h b/mingw-w64-headers/include/mmeapi.h
index 6da7cf9..589c93d 100644
--- a/mingw-w64-headers/include/mmeapi.h
+++ b/mingw-w64-headers/include/mmeapi.h
@@ -52,12 +52,10 @@
 
 #define WAVE_FORMAT_QUERY 0x0001
 #define WAVE_ALLOWSYNC 0x0002
-#if (WINVER >= 0x0400)
 #define WAVE_MAPPED 0x0004
 #define WAVE_FORMAT_DIRECT 0x0008
 #define WAVE_FORMAT_DIRECT_QUERY (WAVE_FORMAT_QUERY | WAVE_FORMAT_DIRECT)
 #define WAVE_MAPPED_DEFAULT_COMMUNICATION_DEVICE 0x0010
-#endif /* (WINVER >= 0x0400) */
 
 typedef struct wavehdr_tag {
   LPSTR lpData;
@@ -76,8 +74,6 @@
 #define WHDR_ENDLOOP 0x00000008
 #define WHDR_INQUEUE 0x00000010
 
-#ifdef _WIN32
-
 typedef struct tagWAVEOUTCAPSA {
   WORD wMid;
   WORD wPid;
@@ -138,18 +134,6 @@
 __MINGW_TYPEDEF_AW(NPWAVEOUTCAPS2)
 __MINGW_TYPEDEF_AW(LPWAVEOUTCAPS2)
 
-#else
-typedef struct waveoutcaps_tag {
-  WORD wMid;
-  WORD wPid;
-  VERSION vDriverVersion;
-  char szPname[MAXPNAMELEN];
-  DWORD dwFormats;
-  WORD wChannels;
-  DWORD dwSupport;
-} WAVEOUTCAPS, *PWAVEOUTCAPS, *NPWAVEOUTCAPS, *LPWAVEOUTCAPS;
-#endif
-
 #define WAVECAPS_PITCH 0x0001
 #define WAVECAPS_PLAYBACKRATE 0x0002
 #define WAVECAPS_VOLUME 0x0004
@@ -157,8 +141,6 @@
 #define WAVECAPS_SYNC 0x0010
 #define WAVECAPS_SAMPLEACCURATE 0x0020
 
-#ifdef _WIN32
-
 typedef struct tagWAVEINCAPSA {
   WORD wMid;
   WORD wPid;
@@ -215,17 +197,6 @@
 __MINGW_TYPEDEF_AW(NPWAVEINCAPS2)
 __MINGW_TYPEDEF_AW(LPWAVEINCAPS2)
 
-#else
-typedef struct waveincaps_tag {
-  WORD wMid;
-  WORD wPid;
-  VERSION vDriverVersion;
-  char szPname[MAXPNAMELEN];
-  DWORD dwFormats;
-  WORD wChannels;
-} WAVEINCAPS, *PWAVEINCAPS, *NPWAVEINCAPS, *LPWAVEINCAPS;
-#endif
-
 #define WAVE_INVALIDFORMAT 0x00000000
 #define WAVE_FORMAT_1M08 0x00000001
 #define WAVE_FORMAT_1S08 0x00000002
@@ -289,29 +260,15 @@
 
 WINMMAPI UINT WINAPI waveOutGetNumDevs(void);
 
-#ifdef _WIN32
 WINMMAPI MMRESULT WINAPI waveOutGetDevCapsA(UINT_PTR uDeviceID, LPWAVEOUTCAPSA pwoc, UINT cbwoc);
 WINMMAPI MMRESULT WINAPI waveOutGetDevCapsW(UINT_PTR uDeviceID, LPWAVEOUTCAPSW pwoc, UINT cbwoc);
 #define waveOutGetDevCaps __MINGW_NAME_AW(waveOutGetDevCaps)
-#else
-WINMMAPI MMRESULT WINAPI waveOutGetDevCaps(UINT uDeviceID, LPWAVEOUTCAPS pwoc, UINT cbwoc);
-#endif
 
-#if (WINVER >= 0x0400)
 WINMMAPI MMRESULT WINAPI waveOutGetVolume(HWAVEOUT hwo, LPDWORD pdwVolume);
 WINMMAPI MMRESULT WINAPI waveOutSetVolume(HWAVEOUT hwo, DWORD dwVolume);
-#else
-WINMMAPI MMRESULT WINAPI waveOutGetVolume(UINT uId, LPDWORD pdwVolume);
-WINMMAPI MMRESULT WINAPI waveOutSetVolume(UINT uId, DWORD dwVolume);
-#endif
-
-#ifdef _WIN32
 WINMMAPI MMRESULT WINAPI waveOutGetErrorTextA(MMRESULT mmrError, LPSTR pszText, UINT cchText);
 WINMMAPI MMRESULT WINAPI waveOutGetErrorTextW(MMRESULT mmrError, LPWSTR pszText, UINT cchText);
 #define waveOutGetErrorText __MINGW_NAME_AW(waveOutGetErrorText)
-#else
-MMRESULT WINAPI waveOutGetErrorText(MMRESULT mmrError, LPSTR pszText, UINT cchText);
-#endif
 
 WINMMAPI MMRESULT WINAPI waveOutOpen(LPHWAVEOUT phwo, UINT uDeviceID, LPCWAVEFORMATEX pwfx, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen);
 WINMMAPI MMRESULT WINAPI waveOutClose(HWAVEOUT hwo);
@@ -329,31 +286,17 @@
 WINMMAPI MMRESULT WINAPI waveOutSetPlaybackRate(HWAVEOUT hwo, DWORD dwRate);
 WINMMAPI MMRESULT WINAPI waveOutGetID(HWAVEOUT hwo, LPUINT puDeviceID);
 
-#if (WINVER >= 0x030a)
-#ifdef _WIN32
 WINMMAPI MMRESULT WINAPI waveOutMessage(HWAVEOUT hwo, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2);
-#else
-DWORD WINAPI waveOutMessage(HWAVEOUT hwo, UINT uMsg, DWORD dw1, DWORD dw2);
-#endif
-#endif /* ifdef WINVER >= 0x030a */
 
 WINMMAPI UINT WINAPI waveInGetNumDevs(void);
 
-#ifdef _WIN32
 WINMMAPI MMRESULT WINAPI waveInGetDevCapsA(UINT_PTR uDeviceID, LPWAVEINCAPSA pwic, UINT cbwic);
 WINMMAPI MMRESULT WINAPI waveInGetDevCapsW(UINT_PTR uDeviceID, LPWAVEINCAPSW pwic, UINT cbwic);
 #define waveInGetDevCaps __MINGW_NAME_AW(waveInGetDevCaps)
-#else
-MMRESULT WINAPI waveInGetDevCaps(UINT uDeviceID, LPWAVEINCAPS pwic, UINT cbwic);
-#endif
 
-#ifdef _WIN32
 WINMMAPI MMRESULT WINAPI waveInGetErrorTextA(MMRESULT mmrError, LPSTR pszText, UINT cchText);
 WINMMAPI MMRESULT WINAPI waveInGetErrorTextW(MMRESULT mmrError, LPWSTR pszText, UINT cchText);
 #define waveInGetErrorText __MINGW_NAME_AW(waveInGetErrorText)
-#else
-MMRESULT WINAPI waveInGetErrorText(MMRESULT mmrError, LPSTR pszText, UINT cchText);
-#endif
 
 WINMMAPI MMRESULT WINAPI waveInOpen(LPHWAVEIN phwi, UINT uDeviceID, LPCWAVEFORMATEX pwfx, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen);
 WINMMAPI MMRESULT WINAPI waveInClose(HWAVEIN hwi);
@@ -366,13 +309,7 @@
 WINMMAPI MMRESULT WINAPI waveInGetPosition(HWAVEIN hwi, LPMMTIME pmmt, UINT cbmmt);
 WINMMAPI MMRESULT WINAPI waveInGetID(HWAVEIN hwi, LPUINT puDeviceID);
 
-#if (WINVER >= 0x030a)
-#ifdef _WIN32
 WINMMAPI MMRESULT WINAPI waveInMessage(HWAVEIN hwi, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2);
-#else
-DWORD WINAPI waveInMessage(HWAVEIN hwi, UINT uMsg, DWORD dw1, DWORD dw2);
-#endif
-#endif /* ifdef WINVER >= 0x030a */
 
 #endif  /* ifndef MMNOWAVE */
 
@@ -414,25 +351,19 @@
 #define MOM_CLOSE MM_MOM_CLOSE
 #define MOM_DONE MM_MOM_DONE
 
-#if (WINVER >= 0x0400)
 #define MIM_MOREDATA MM_MIM_MOREDATA
 #define MOM_POSITIONCB MM_MOM_POSITIONCB
-#endif /* WINVER >= 0x0400 */
 
 #define MIDIMAPPER ((UINT)-1)
 #define MIDI_MAPPER ((UINT)-1)
 
-#if (WINVER >= 0x0400)
 #define MIDI_IO_STATUS __MSABI_LONG(0x00000020)
-#endif /* WINVER >= 0x0400 */
 
 #define MIDI_CACHE_ALL 1
 #define MIDI_CACHE_BESTFIT 2
 #define MIDI_CACHE_QUERY 3
 #define MIDI_UNCACHE 4
 
-#ifdef _WIN32
-
 typedef struct tagMIDIOUTCAPSA {
   WORD wMid;
   WORD wPid;
@@ -497,20 +428,6 @@
 __MINGW_TYPEDEF_AW(NPMIDIOUTCAPS2)
 __MINGW_TYPEDEF_AW(LPMIDIOUTCAPS2)
 
-#else
-typedef struct midioutcaps_tag {
-  WORD wMid;
-  WORD wPid;
-  VERSION vDriverVersion;
-  char szPname[MAXPNAMELEN];
-  WORD wTechnology;
-  WORD wVoices;
-  WORD wNotes;
-  WORD wChannelMask;
-  DWORD dwSupport;
-} MIDIOUTCAPS, *PMIDIOUTCAPS, *NPMIDIOUTCAPS, *LPMIDIOUTCAPS;
-#endif
-
 #define MOD_MIDIPORT 1
 #define MOD_SYNTH 2
 #define MOD_SQSYNTH 3
@@ -522,20 +439,14 @@
 #define MIDICAPS_VOLUME 0x0001
 #define MIDICAPS_LRVOLUME 0x0002
 #define MIDICAPS_CACHE 0x0004
-#if(WINVER >= 0x0400)
 #define MIDICAPS_STREAM 0x0008
-#endif /* WINVER >= 0x0400 */
-
-#ifdef _WIN32
 
 typedef struct tagMIDIINCAPSA {
   WORD wMid;
   WORD wPid;
   MMVERSION vDriverVersion;
   CHAR szPname[MAXPNAMELEN];
-#if (WINVER >= 0x0400)
   DWORD dwSupport;
-#endif
 } MIDIINCAPSA, *PMIDIINCAPSA, *NPMIDIINCAPSA, *LPMIDIINCAPSA;
 
 typedef struct tagMIDIINCAPSW {
@@ -543,9 +454,7 @@
   WORD wPid;
   MMVERSION vDriverVersion;
   WCHAR szPname[MAXPNAMELEN];
-#if (WINVER >= 0x0400)
   DWORD dwSupport;
-#endif
 } MIDIINCAPSW, *PMIDIINCAPSW, *NPMIDIINCAPSW, *LPMIDIINCAPSW;
 
 __MINGW_TYPEDEF_AW(MIDIINCAPS)
@@ -558,9 +467,7 @@
   WORD wPid;
   MMVERSION vDriverVersion;
   CHAR szPname[MAXPNAMELEN];
-#if (WINVER >= 0x0400)
   DWORD dwSupport;
-#endif
   GUID ManufacturerGuid;
   GUID ProductGuid;
   GUID NameGuid;
@@ -571,9 +478,7 @@
   WORD wPid;
   MMVERSION vDriverVersion;
   WCHAR szPname[MAXPNAMELEN];
-#if (WINVER >= 0x0400)
   DWORD dwSupport;
-#endif
   GUID ManufacturerGuid;
   GUID ProductGuid;
   GUID NameGuid;
@@ -584,18 +489,6 @@
 __MINGW_TYPEDEF_AW(NPMIDIINCAPS2)
 __MINGW_TYPEDEF_AW(LPMIDIINCAPS2)
 
-#else
-typedef struct midiincaps_tag {
-  WORD wMid;
-  WORD wPid;
-  VERSION vDriverVersion;
-  char szPname[MAXPNAMELEN];
-#if (WINVER >= 0x0400)
-  DWORD dwSupport;
-#endif
-} MIDIINCAPS, *PMIDIINCAPS, *NPMIDIINCAPS, *LPMIDIINCAPS;
-#endif
-
 typedef struct midihdr_tag {
   LPSTR lpData;
   DWORD dwBufferLength;
@@ -604,13 +497,10 @@
   DWORD dwFlags;
   struct midihdr_tag far *lpNext;
   DWORD_PTR reserved;
-#if (WINVER >= 0x0400)
   DWORD dwOffset;
   DWORD_PTR dwReserved[8];
-#endif
 } MIDIHDR, *PMIDIHDR, *NPMIDIHDR, *LPMIDIHDR;
 
-#if (WINVER >= 0x0400)
 typedef struct midievent_tag {
   DWORD dwDeltaTime;
   DWORD dwStreamID;
@@ -623,15 +513,12 @@
   DWORD dwMid;
   DWORD dwOEMVersion;
 } MIDISTRMBUFFVER;
-#endif /* WINVER >= 0x0400 */
 
 #define MHDR_DONE 0x00000001
 #define MHDR_PREPARED 0x00000002
 #define MHDR_INQUEUE 0x00000004
 #define MHDR_ISSTRM 0x00000008
 
-#if (WINVER >= 0x0400)
-
 #define MEVT_F_SHORT __MSABI_LONG(0x00000000)
 #define MEVT_F_LONG __MSABI_LONG(0x80000000)
 #define MEVT_F_CALLBACK __MSABI_LONG(0x40000000)
@@ -665,11 +552,7 @@
   DWORD dwTempo;
 } MIDIPROPTEMPO, *LPMIDIPROPTEMPO;
 
-#endif /* WINVER >= 0x0400 */
-
 WINMMAPI UINT WINAPI midiOutGetNumDevs(void);
-#if (WINVER >= 0x0400)
-
 WINMMAPI MMRESULT WINAPI midiStreamOpen(LPHMIDISTRM phms, LPUINT puDeviceID, DWORD cMidi, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen);
 WINMMAPI MMRESULT WINAPI midiStreamClose(HMIDISTRM hms);
 WINMMAPI MMRESULT WINAPI midiStreamProperty(HMIDISTRM hms, LPBYTE lppropdata, DWORD dwProperty);
@@ -679,35 +562,18 @@
 WINMMAPI MMRESULT WINAPI midiStreamRestart(HMIDISTRM hms);
 WINMMAPI MMRESULT WINAPI midiStreamStop(HMIDISTRM hms);
 
-#ifdef _WIN32
 WINMMAPI MMRESULT WINAPI midiConnect(HMIDI hmi, HMIDIOUT hmo, LPVOID pReserved);
 WINMMAPI MMRESULT WINAPI midiDisconnect(HMIDI hmi, HMIDIOUT hmo, LPVOID pReserved);
-#endif
-#endif /* WINVER >= 0x0400 */
 
-#ifdef _WIN32
 WINMMAPI MMRESULT WINAPI midiOutGetDevCapsA(UINT_PTR uDeviceID, LPMIDIOUTCAPSA pmoc, UINT cbmoc);
 WINMMAPI MMRESULT WINAPI midiOutGetDevCapsW(UINT_PTR uDeviceID, LPMIDIOUTCAPSW pmoc, UINT cbmoc);
 #define midiOutGetDevCaps __MINGW_NAME_AW(midiOutGetDevCaps)
-#else
-MMRESULT WINAPI midiOutGetDevCaps(UINT uDeviceID, LPMIDIOUTCAPS pmoc, UINT cbmoc);
-#endif
 
-#if (WINVER >= 0x0400)
 WINMMAPI MMRESULT WINAPI midiOutGetVolume(HMIDIOUT hmo, LPDWORD pdwVolume);
 WINMMAPI MMRESULT WINAPI midiOutSetVolume(HMIDIOUT hmo, DWORD dwVolume);
-#else
-WINMMAPI MMRESULT WINAPI midiOutGetVolume(UINT uId, LPDWORD pdwVolume);
-WINMMAPI MMRESULT WINAPI midiOutSetVolume(UINT uId, DWORD dwVolume);
-#endif
-
-#ifdef _WIN32
 WINMMAPI MMRESULT WINAPI midiOutGetErrorTextA(MMRESULT mmrError, LPSTR pszText, UINT cchText);
 WINMMAPI MMRESULT WINAPI midiOutGetErrorTextW(MMRESULT mmrError, LPWSTR pszText, UINT cchText);
 #define midiOutGetErrorText __MINGW_NAME_AW(midiOutGetErrorText)
-#else
-WINMMAPI MMRESULT WINAPI midiOutGetErrorText(MMRESULT mmrError, LPSTR pszText, UINT cchText);
-#endif
 
 WINMMAPI MMRESULT WINAPI midiOutOpen(LPHMIDIOUT phmo, UINT uDeviceID, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen);
 WINMMAPI MMRESULT WINAPI midiOutClose(HMIDIOUT hmo);
@@ -720,17 +586,10 @@
 WINMMAPI MMRESULT WINAPI midiOutCacheDrumPatches(HMIDIOUT hmo, UINT uPatch, LPWORD pwkya, UINT fuCache);
 WINMMAPI MMRESULT WINAPI midiOutGetID(HMIDIOUT hmo, LPUINT puDeviceID);
 
-#if (WINVER >= 0x030a)
-#ifdef _WIN32
 WINMMAPI MMRESULT WINAPI midiOutMessage(HMIDIOUT hmo, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2);
-#else
-DWORD WINAPI midiOutMessage(HMIDIOUT hmo, UINT uMsg, DWORD dw1, DWORD dw2);
-#endif
-#endif /* ifdef WINVER >= 0x030a */
 
 WINMMAPI UINT WINAPI midiInGetNumDevs(void);
 
-#ifdef _WIN32
 WINMMAPI MMRESULT WINAPI midiInGetDevCapsA(UINT_PTR uDeviceID, LPMIDIINCAPSA pmic, UINT cbmic);
 WINMMAPI MMRESULT WINAPI midiInGetDevCapsW(UINT_PTR uDeviceID, LPMIDIINCAPSW pmic, UINT cbmic);
 #define midiInGetDevCaps __MINGW_NAME_AW(midiInGetDevCaps)
@@ -738,10 +597,6 @@
 WINMMAPI MMRESULT WINAPI midiInGetErrorTextA(MMRESULT mmrError, LPSTR pszText, UINT cchText);
 WINMMAPI MMRESULT WINAPI midiInGetErrorTextW(MMRESULT mmrError, LPWSTR pszText, UINT cchText);
 #define midiInGetErrorText __MINGW_NAME_AW(midiInGetErrorText)
-#else
-MMRESULT WINAPI midiInGetDevCaps(UINT uDeviceID, LPMIDIINCAPS pmic, UINT cbmic);
-WINMMAPI MMRESULT WINAPI midiInGetErrorText(MMRESULT mmrError, _Out_writes_(cchText) LPSTR pszText, UINT cchText);
-#endif
 
 WINMMAPI MMRESULT WINAPI midiInOpen(LPHMIDIIN phmi, UINT uDeviceID, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen);
 WINMMAPI MMRESULT WINAPI midiInClose(HMIDIIN hmi);
@@ -753,22 +608,13 @@
 WINMMAPI MMRESULT WINAPI midiInReset(HMIDIIN hmi);
 WINMMAPI MMRESULT WINAPI midiInGetID(HMIDIIN hmi, LPUINT puDeviceID);
 
-#if (WINVER >= 0x030a)
-#ifdef _WIN32
 WINMMAPI MMRESULT WINAPI midiInMessage(HMIDIIN hmi, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2);
-#else
-DWORD WINAPI midiInMessage(HMIDIIN hmi, UINT uMsg, DWORD dw1, DWORD dw2);
-#endif
-#endif /* ifdef WINVER >= 0x030a */
-
 #endif  /* ifndef MMNOMIDI */
 
 #ifndef MMNOAUX
 
 #define AUX_MAPPER ((UINT)-1)
 
-#ifdef _WIN32
-
 typedef struct tagAUXCAPSA {
   WORD wMid;
   WORD wPid;
@@ -825,17 +671,6 @@
 __MINGW_TYPEDEF_AW(NPAUXCAPS2)
 __MINGW_TYPEDEF_AW(LPAUXCAPS2)
 
-#else
-typedef struct auxcaps_tag {
-  WORD wMid;
-  WORD wPid;
-  VERSION vDriverVersion;
-  char szPname[MAXPNAMELEN];
-  WORD wTechnology;
-  DWORD dwSupport;
-} AUXCAPS, *PAUXCAPS, *NPAUXCAPS, *LPAUXCAPS;
-#endif
-
 #define AUXCAPS_CDAUDIO 1
 #define AUXCAPS_AUXIN 2
 
@@ -844,24 +679,14 @@
 
 WINMMAPI UINT WINAPI auxGetNumDevs(void);
 
-#ifdef _WIN32
 WINMMAPI MMRESULT WINAPI auxGetDevCapsA(UINT_PTR uDeviceID, LPAUXCAPSA pac, UINT cbac);
 WINMMAPI MMRESULT WINAPI auxGetDevCapsW(UINT_PTR uDeviceID, LPAUXCAPSW pac, UINT cbac);
 #define auxGetDevCaps __MINGW_NAME_AW(auxGetDevCaps)
-#else
-MMRESULT WINAPI auxGetDevCaps(UINT uDeviceID, LPAUXCAPS pac, UINT cbac);
-#endif
 
 WINMMAPI MMRESULT WINAPI auxSetVolume(UINT uDeviceID, DWORD dwVolume);
 WINMMAPI MMRESULT WINAPI auxGetVolume(UINT uDeviceID, LPDWORD pdwVolume);
 
-#if (WINVER >= 0x030a)
-#ifdef _WIN32
 WINMMAPI MMRESULT WINAPI auxOutMessage(UINT uDeviceID, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2);
-#else
-DWORD WINAPI auxOutMessage(UINT uDeviceID, UINT uMsg, DWORD dw1, DWORD dw2);
-#endif
-#endif /* ifdef WINVER >= 0x030a */
 
 #endif  /* ifndef MMNOAUX */
 
@@ -896,8 +721,6 @@
 
 WINMMAPI UINT WINAPI mixerGetNumDevs(void);
 
-#ifdef _WIN32
-
 typedef struct tagMIXERCAPSA {
   WORD wMid;
   WORD wPid;
@@ -948,31 +771,14 @@
 __MINGW_TYPEDEF_AW(PMIXERCAPS2)
 __MINGW_TYPEDEF_AW(LPMIXERCAPS2)
 
-#else
-typedef struct tMIXERCAPS {
-  WORD wMid;
-  WORD wPid;
-  VERSION vDriverVersion;
-  char szPname[MAXPNAMELEN];
-  DWORD fdwSupport;
-  DWORD cDestinations;
-} MIXERCAPS, *PMIXERCAPS, *LPMIXERCAPS;
-#endif
-
-#ifdef _WIN32
 WINMMAPI MMRESULT WINAPI mixerGetDevCapsA(UINT_PTR uMxId, LPMIXERCAPSA pmxcaps, UINT cbmxcaps);
 WINMMAPI MMRESULT WINAPI mixerGetDevCapsW(UINT_PTR uMxId, LPMIXERCAPSW pmxcaps, UINT cbmxcaps);
 #define mixerGetDevCaps __MINGW_NAME_AW(mixerGetDevCaps)
-#else
-MMRESULT WINAPI mixerGetDevCaps(UINT uMxId, LPMIXERCAPS pmxcaps, UINT cbmxcaps);
-#endif
 
 WINMMAPI MMRESULT WINAPI mixerOpen(LPHMIXER phmx, UINT uMxId, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen);
 WINMMAPI MMRESULT WINAPI mixerClose(HMIXER hmx);
 WINMMAPI DWORD WINAPI mixerMessage(HMIXER hmx, UINT uMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2);
 
-#ifdef _WIN32
-
 typedef struct tagMIXERLINEA {
   DWORD cbStruct;
   DWORD dwDestination;
@@ -1023,31 +829,6 @@
 __MINGW_TYPEDEF_AW(PMIXERLINE)
 __MINGW_TYPEDEF_AW(LPMIXERLINE)
 
-#else
-typedef struct tMIXERLINE {
-  DWORD cbStruct;
-  DWORD dwDestination;
-  DWORD dwSource;
-  DWORD dwLineID;
-  DWORD fdwLine;
-  DWORD dwUser;
-  DWORD dwComponentType;
-  DWORD cChannels;
-  DWORD cConnections;
-  DWORD cControls;
-  char szShortName[MIXER_SHORT_NAME_CHARS];
-  char szName[MIXER_LONG_NAME_CHARS];
-  struct {
-    DWORD dwType;
-    DWORD dwDeviceID;
-    WORD wMid;
-    WORD wPid;
-    VERSION vDriverVersion;
-    char szPname[MAXPNAMELEN];
-  } Target;
-} MIXERLINE, *PMIXERLINE, *LPMIXERLINE;
-#endif
-
 #define MIXERLINE_LINEF_ACTIVE __MSABI_LONG(0x00000001)
 #define MIXERLINE_LINEF_DISCONNECTED __MSABI_LONG(0x00008000)
 #define MIXERLINE_LINEF_SOURCE __MSABI_LONG(0x80000000)
@@ -1085,13 +866,9 @@
 #define MIXERLINE_TARGETTYPE_MIDIIN 4
 #define MIXERLINE_TARGETTYPE_AUX 5
 
-#ifdef _WIN32
 WINMMAPI MMRESULT WINAPI mixerGetLineInfoA(HMIXEROBJ hmxobj, LPMIXERLINEA pmxl, DWORD fdwInfo);
 WINMMAPI MMRESULT WINAPI mixerGetLineInfoW(HMIXEROBJ hmxobj, LPMIXERLINEW pmxl, DWORD fdwInfo);
 #define mixerGetLineInfo __MINGW_NAME_AW(mixerGetLineInfo)
-#else
-MMRESULT WINAPI mixerGetLineInfo(HMIXEROBJ hmxobj, LPMIXERLINE pmxl, DWORD fdwInfo);
-#endif
 
 #define MIXER_GETLINEINFOF_DESTINATION __MSABI_LONG(0x00000000)
 #define MIXER_GETLINEINFOF_SOURCE __MSABI_LONG(0x00000001)
@@ -1103,8 +880,6 @@
 
 WINMMAPI MMRESULT WINAPI mixerGetID(HMIXEROBJ hmxobj, UINT *puMxId, DWORD fdwId);
 
-#ifdef _WIN32
-
 typedef struct tagMIXERCONTROLA {
   DWORD cbStruct;
   DWORD dwControlID;
@@ -1161,34 +936,6 @@
 __MINGW_TYPEDEF_AW(PMIXERCONTROL)
 __MINGW_TYPEDEF_AW(LPMIXERCONTROL)
 
-#else
-typedef struct tMIXERCONTROL {
-  DWORD cbStruct;
-  DWORD dwControlID;
-  DWORD dwControlType;
-  DWORD fdwControl;
-  DWORD cMultipleItems;
-  char szShortName[MIXER_SHORT_NAME_CHARS];
-  char szName[MIXER_LONG_NAME_CHARS];
-  union {
-    __C89_NAMELESS struct {
-      LONG lMinimum;
-      LONG lMaximum;
-    };
-    __C89_NAMELESS struct {
-      DWORD dwMinimum;
-      DWORD dwMaximum;
-    };
-    DWORD dwReserved[6];
-  } Bounds;
-  union {
-    DWORD cSteps;
-    DWORD cbCustomData;
-    DWORD dwReserved[6];
-  } Metrics;
-} MIXERCONTROL, *PMIXERCONTROL, *LPMIXERCONTROL;
-#endif
-
 #define MIXERCONTROL_CONTROLF_UNIFORM __MSABI_LONG(0x00000001)
 #define MIXERCONTROL_CONTROLF_MULTIPLE __MSABI_LONG(0x00000002)
 #define MIXERCONTROL_CONTROLF_DISABLED __MSABI_LONG(0x80000000)
@@ -1256,8 +1003,6 @@
 #define MIXERCONTROL_CONTROLTYPE_MICROTIME (MIXERCONTROL_CT_CLASS_TIME | MIXERCONTROL_CT_SC_TIME_MICROSECS | MIXERCONTROL_CT_UNITS_UNSIGNED)
 #define MIXERCONTROL_CONTROLTYPE_MILLITIME (MIXERCONTROL_CT_CLASS_TIME | MIXERCONTROL_CT_SC_TIME_MILLISECS | MIXERCONTROL_CT_UNITS_UNSIGNED)
 
-#ifdef _WIN32
-
 typedef struct tagMIXERLINECONTROLSA {
   DWORD cbStruct;
   DWORD dwLineID;
@@ -1286,28 +1031,9 @@
 __MINGW_TYPEDEF_AW(PMIXERLINECONTROLS)
 __MINGW_TYPEDEF_AW(LPMIXERLINECONTROLS)
 
-#else
-typedef struct tMIXERLINECONTROLS {
-  DWORD cbStruct;
-  DWORD dwLineID;
-  __C89_NAMELESS union {
-    DWORD dwControlID;
-    DWORD dwControlType;
-  };
-  DWORD cControls;
-  DWORD cbmxctrl;
-  LPMIXERCONTROL  pamxctrl;
-} MIXERLINECONTROLS, *PMIXERLINECONTROLS, *LPMIXERLINECONTROLS;
-#endif
-
-#ifdef _WIN32
-
 WINMMAPI MMRESULT WINAPI mixerGetLineControlsA(HMIXEROBJ hmxobj, LPMIXERLINECONTROLSA pmxlc, DWORD fdwControls);
 WINMMAPI MMRESULT WINAPI mixerGetLineControlsW(HMIXEROBJ hmxobj, LPMIXERLINECONTROLSW pmxlc, DWORD fdwControls);
 #define mixerGetLineControls __MINGW_NAME_AW(mixerGetLineControls)
-#else
-MMRESULT WINAPI mixerGetLineControls(HMIXEROBJ hmxobj, LPMIXERLINECONTROLS pmxlc, DWORD fdwControls);
-#endif
 
 #define MIXER_GETLINECONTROLSF_ALL __MSABI_LONG(0x00000000)
 #define MIXER_GETLINECONTROLSF_ONEBYID __MSABI_LONG(0x00000001)
@@ -1327,8 +1053,6 @@
   LPVOID paDetails;
 } MIXERCONTROLDETAILS, *PMIXERCONTROLDETAILS, *LPMIXERCONTROLDETAILS;
 
-#ifdef _WIN32
-
 typedef struct tagMIXERCONTROLDETAILS_LISTTEXTA {
   DWORD dwParam1;
   DWORD dwParam2;
@@ -1345,14 +1069,6 @@
 __MINGW_TYPEDEF_AW(PMIXERCONTROLDETAILS_LISTTEXT)
 __MINGW_TYPEDEF_AW(LPMIXERCONTROLDETAILS_LISTTEXT)
 
-#else
-typedef struct tMIXERCONTROLDETAILS_LISTTEXT {
-  DWORD dwParam1;
-  DWORD dwParam2;
-  char szName[MIXER_LONG_NAME_CHARS];
-} MIXERCONTROLDETAILS_LISTTEXT, *PMIXERCONTROLDETAILS_LISTTEXT, *LPMIXERCONTROLDETAILS_LISTTEXT;
-#endif
-
 typedef struct tMIXERCONTROLDETAILS_BOOLEAN {
   LONG fValue;
 } MIXERCONTROLDETAILS_BOOLEAN, *PMIXERCONTROLDETAILS_BOOLEAN, *LPMIXERCONTROLDETAILS_BOOLEAN;
@@ -1365,13 +1081,9 @@
   DWORD dwValue;
 } MIXERCONTROLDETAILS_UNSIGNED, *PMIXERCONTROLDETAILS_UNSIGNED, *LPMIXERCONTROLDETAILS_UNSIGNED;
 
-#ifdef _WIN32
 WINMMAPI MMRESULT WINAPI mixerGetControlDetailsA(HMIXEROBJ hmxobj, LPMIXERCONTROLDETAILS pmxcd, DWORD fdwDetails);
 WINMMAPI MMRESULT WINAPI mixerGetControlDetailsW(HMIXEROBJ hmxobj, LPMIXERCONTROLDETAILS pmxcd, DWORD fdwDetails);
 #define mixerGetControlDetails __MINGW_NAME_AW(mixerGetControlDetails)
-#else
-MMRESULT WINAPI mixerGetControlDetails(HMIXEROBJ hmxobj, LPMIXERCONTROLDETAILS pmxcd, DWORD fdwDetails);
-#endif
 
 #define MIXER_GETCONTROLDETAILSF_VALUE __MSABI_LONG(0x00000000)
 #define MIXER_GETCONTROLDETAILSF_LISTTEXT __MSABI_LONG(0x00000001)
diff --git a/mingw-w64-headers/include/mmiscapi.h b/mingw-w64-headers/include/mmiscapi.h
index dd643cf..45c9269 100644
--- a/mingw-w64-headers/include/mmiscapi.h
+++ b/mingw-w64-headers/include/mmiscapi.h
@@ -20,7 +20,6 @@
 
 #ifndef MMNODRV
 
-#ifdef _WIN32
 typedef struct DRVCONFIGINFOEX {
   DWORD dwDCISize;
   LPCWSTR lpszDCISectionName;
@@ -28,17 +27,6 @@
   DWORD dnDevNode;
 } DRVCONFIGINFOEX, *PDRVCONFIGINFOEX, *NPDRVCONFIGINFOEX, *LPDRVCONFIGINFOEX;
 
-#else
-typedef struct DRVCONFIGINFOEX {
-  DWORD dwDCISize;
-  LPCSTR lpszDCISectionName;
-  LPCSTR lpszDCIAliasName;
-  DWORD dnDevNode;
-} DRVCONFIGINFOEX, *PDRVCONFIGINFOEX, *NPDRVCONFIGINFOEX, *LPDRVCONFIGINFOEX;
-#endif
-
-#if (WINVER < 0x030a) || defined(_WIN32)
-
 #ifndef DRV_LOAD
 
 #define DRV_LOAD 0x0001
@@ -56,26 +44,16 @@
 #define DRV_RESERVED 0x0800
 #define DRV_USER 0x4000
 
-#ifdef _WIN32
 typedef struct tagDRVCONFIGINFO {
   DWORD dwDCISize;
   LPCWSTR lpszDCISectionName;
   LPCWSTR lpszDCIAliasName;
 } DRVCONFIGINFO, *PDRVCONFIGINFO, *NPDRVCONFIGINFO, *LPDRVCONFIGINFO;
-#else
-typedef struct tagDRVCONFIGINFO {
-  DWORD dwDCISize;
-  LPCSTR lpszDCISectionName;
-  LPCSTR lpszDCIAliasName;
-} DRVCONFIGINFO, *PDRVCONFIGINFO, *NPDRVCONFIGINFO, *LPDRVCONFIGINFO;
-#endif
 
 #define DRVCNF_CANCEL 0x0000
 #define DRVCNF_OK 0x0001
 #define DRVCNF_RESTART 0x0002
 
-#ifdef _WIN32
-
 typedef LRESULT (CALLBACK* DRIVERPROC)(DWORD_PTR, HDRVR, UINT, LPARAM, LPARAM);
 
 WINMMAPI LRESULT WINAPI CloseDriver(HDRVR hDriver, LPARAM lParam1, LPARAM lParam2);
@@ -84,24 +62,12 @@
 WINMMAPI HMODULE WINAPI DrvGetModuleHandle(HDRVR hDriver);
 WINMMAPI HMODULE WINAPI GetDriverModuleHandle(HDRVR hDriver);
 WINMMAPI LRESULT WINAPI DefDriverProc(DWORD_PTR dwDriverIdentifier, HDRVR hdrvr, UINT uMsg, LPARAM lParam1, LPARAM lParam2);
-#else
-LRESULT WINAPI DrvClose(HDRVR hdrvr, LPARAM lParam1, LPARAM lParam2);
-HDRVR WINAPI DrvOpen(LPCSTR szDriverName, LPCSTR szSectionName, LPARAM lParam2);
-LRESULT WINAPI DrvSendMessage(HDRVR hdrvr, UINT uMsg, LPARAM lParam1, LPARAM lParam2);
-HINSTANCE WINAPI DrvGetModuleHandle(HDRVR hdrvr);
-LRESULT WINAPI DrvDefDriverProc(DWORD dwDriverIdentifier, HDRVR hdrvr, UINT uMsg, LPARAM lParam1, LPARAM lParam2);
-#define DefDriverProc DrvDefDriverProc
-#endif
-#endif
 #endif
 
-#if (WINVER >= 0x030a)
 #define DRV_CANCEL DRVCNF_CANCEL
 #define DRV_OK DRVCNF_OK
 #define DRV_RESTART DRVCNF_RESTART
 
-#endif /* ifdef WINVER >= 0x030a */
-
 #define DRV_MCI_FIRST DRV_RESERVED
 #define DRV_MCI_LAST (DRV_RESERVED + 0xFFF)
 
@@ -214,9 +180,7 @@
 #define MMIOM_CLOSE 4
 #define MMIOM_WRITEFLUSH 5
 
-#if (WINVER >= 0x030a)
 #define MMIOM_RENAME 6
-#endif
 
 #define MMIOM_USER 0x8000
 
@@ -236,8 +200,6 @@
 
 #define mmioFOURCC(ch0, ch1, ch2, ch3) MAKEFOURCC(ch0, ch1, ch2, ch3)
 
-#ifdef _WIN32
-
 WINMMAPI FOURCC WINAPI mmioStringToFOURCCA(LPCSTR sz, UINT uFlags);
 WINMMAPI FOURCC WINAPI mmioStringToFOURCCW(LPCWSTR sz, UINT uFlags);
 #define mmioStringToFOURCC __MINGW_NAME_AW(mmioStringToFOURCC)
@@ -254,15 +216,6 @@
 WINMMAPI MMRESULT WINAPI mmioRenameW(LPCWSTR pszFileName, LPCWSTR pszNewFileName, LPCMMIOINFO pmmioinfo, DWORD fdwRename);
 #define mmioRename __MINGW_NAME_AW(mmioRename)
 
-#else
-FOURCC WINAPI mmioStringToFOURCC(LPCSTR sz, UINT uFlags);
-LPMMIOPROC WINAPI mmioInstallIOProc(FOURCC fccIOProc, LPMMIOPROC pIOProc, DWORD dwFlags);
-HMMIO WINAPI mmioOpen(LPSTR pszFileName, LPMMIOINFO pmmioinfo, DWORD fdwOpen);
-#if (WINVER >= 0x030a)
-MMRESULT WINAPI mmioRename( LPCSTR pszFileName, LPCSTR pszNewFileName, const MMIOINFO *pmmioinfo, DWORD fdwRename);
-#endif
-#endif
-
 WINMMAPI MMRESULT WINAPI mmioClose(HMMIO hmmio, UINT fuClose);
 WINMMAPI LONG WINAPI mmioRead(HMMIO hmmio, HPSTR pch, LONG cch);
 WINMMAPI LONG WINAPI mmioWrite(HMMIO hmmio, const char _huge * pch, LONG cch);
diff --git a/mingw-w64-headers/include/mmiscapi2.h b/mingw-w64-headers/include/mmiscapi2.h
index 506c36b..4f8b624 100644
--- a/mingw-w64-headers/include/mmiscapi2.h
+++ b/mingw-w64-headers/include/mmiscapi2.h
@@ -24,15 +24,10 @@
 #define TIME_ONESHOT 0x0000
 #define TIME_PERIODIC 0x0001
 
-#ifdef _WIN32
 #define TIME_CALLBACK_FUNCTION 0x0000
 #define TIME_CALLBACK_EVENT_SET 0x0010
 #define TIME_CALLBACK_EVENT_PULSE 0x0020
-#endif
-
-#if WINVER >= 0x0501
 #define TIME_KILL_SYNCHRONOUS   0x0100
-#endif
 
 WINMMAPI MMRESULT WINAPI timeSetEvent(UINT uDelay, UINT uResolution, LPTIMECALLBACK fptc, DWORD_PTR dwUser, UINT fuEvent);
 WINMMAPI MMRESULT WINAPI timeKillEvent(UINT uTimerID);
diff --git a/mingw-w64-headers/include/mmsyscom.h b/mingw-w64-headers/include/mmsyscom.h
index 02d5181..e6bce66 100644
--- a/mingw-w64-headers/include/mmsyscom.h
+++ b/mingw-w64-headers/include/mmsyscom.h
@@ -9,9 +9,7 @@
 #ifndef _INC_MMSYSCOM
 #define _INC_MMSYSCOM
 
-#ifdef _WIN32
 #include <pshpack1.h>
-#endif
 
 #ifdef __cplusplus
 extern "C" {
@@ -19,7 +17,6 @@
 
 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
 
-#ifdef _WIN32
 #ifndef _WINMM_
 #define WINMMAPI DECLSPEC_IMPORT
 #else
@@ -27,15 +24,11 @@
 #endif
 #define _loadds
 #define _huge
-#else
-#define WINMMAPI
-#endif
 
 #define MAXPNAMELEN 32
 #define MAXERRORLENGTH 256
 #define MAX_JOYSTICKOEMVXDNAME 260
 
-#if (WINVER <= 0x0400)
 #ifndef MM_MICROSOFT
 #define MM_MICROSOFT 1
 #endif
@@ -53,13 +46,8 @@
 #define MM_MPU401_MIDIIN 11
 #define MM_PC_JOYSTICK 12
 #endif
-#endif
 
-#ifdef _WIN32
 typedef UINT MMVERSION;
-#else
-typedef UINT VERSION;
-#endif
 
 typedef UINT MMRESULT;
 #define _MMRESULT_
@@ -79,9 +67,7 @@
       BYTE frame;
       BYTE fps;
       BYTE dummy;
-#ifdef _WIN32
       BYTE pad[2];
-#endif
     } smpte;
     struct {
       DWORD songptrpos;
@@ -140,7 +126,6 @@
 #define MM_STREAM_DONE 0x3D6
 #define MM_STREAM_ERROR 0x3D7
 
-#if(WINVER >= 0x0400)
 #define MM_MOM_POSITIONCB 0x3CA
 
 #ifndef MM_MCISIGNAL
@@ -149,8 +134,6 @@
 
 #define MM_MIM_MOREDATA 0x3CC
 
-#endif /* WINVER >= 0x0400 */
-
 #define MM_MIXM_LINE_CHANGE 0x3D0
 #define MM_MIXM_CONTROL_CHANGE 0x3D1
 
@@ -192,25 +175,19 @@
 #define MMSYSERR_MOREDATA (MMSYSERR_BASE + 21)
 #define MMSYSERR_LASTERROR (MMSYSERR_BASE + 21)
 
-#if (WINVER < 0x030a) || defined(_WIN32)
 DECLARE_HANDLE(HDRVR);
-#endif /* ifdef WINVER < 0x030a */
 
 #define CALLBACK_TYPEMASK __MSABI_LONG(0x00070000)
 #define CALLBACK_NULL __MSABI_LONG(0x00000000)
 #define CALLBACK_WINDOW __MSABI_LONG(0x00010000)
 #define CALLBACK_TASK __MSABI_LONG(0x00020000)
 #define CALLBACK_FUNCTION __MSABI_LONG(0x00030000)
-#ifdef _WIN32
 #define CALLBACK_THREAD (CALLBACK_TASK)
 #define CALLBACK_EVENT __MSABI_LONG(0x00050000)
-#endif
 typedef void (CALLBACK DRVCALLBACK)(HDRVR hdrvr, UINT uMsg, DWORD_PTR dwUser, DWORD_PTR dw1, DWORD_PTR dw2);
 
 typedef DRVCALLBACK *LPDRVCALLBACK;
-#ifdef _WIN32
 typedef DRVCALLBACK *PDRVCALLBACK;
-#endif
 
 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
 
@@ -218,8 +195,6 @@
 }
 #endif
 
-#ifdef _WIN32
 #include <poppack.h>
-#endif
 
 #endif /* _INC_MMSYSCOM */
diff --git a/mingw-w64-headers/include/mmsystem.h b/mingw-w64-headers/include/mmsystem.h
index 6d92ce6..1bce639 100644
--- a/mingw-w64-headers/include/mmsystem.h
+++ b/mingw-w64-headers/include/mmsystem.h
@@ -11,9 +11,7 @@
 
 #include <mmsyscom.h>
 
-#ifdef _WIN32
 #include <pshpack1.h>
-#endif
 
 #ifdef __cplusplus
 extern "C" {
@@ -54,8 +52,6 @@
 }
 #endif
 
-#ifdef _WIN32
 #include <poppack.h>
-#endif
 
 #endif /* _INC_MMSYSTEM */
diff --git a/mingw-w64-headers/include/playsoundapi.h b/mingw-w64-headers/include/playsoundapi.h
index 58329dd..6c68311 100644
--- a/mingw-w64-headers/include/playsoundapi.h
+++ b/mingw-w64-headers/include/playsoundapi.h
@@ -20,16 +20,10 @@
 
 #ifndef MMNOSOUND
 
-#ifdef _WIN32
-
 WINMMAPI WINBOOL WINAPI sndPlaySoundA(LPCSTR pszSound, UINT fuSound);
 WINMMAPI WINBOOL WINAPI sndPlaySoundW(LPCWSTR pszSound, UINT fuSound);
 #define sndPlaySound __MINGW_NAME_AW(sndPlaySound)
 
-#else
-DLOAD_RET(FALSE) WINBOOL WINAPI sndPlaySound(LPCSTR pszSound, UINT fuSound);
-#endif
-
 #define SND_SYNC 0x0000
 #define SND_ASYNC 0x0001
 #define SND_NODEFAULT 0x0002
@@ -43,17 +37,14 @@
 #define SND_FILENAME __MSABI_LONG(0x00020000)
 #define SND_RESOURCE __MSABI_LONG(0x00040004)
 
-#if(WINVER >= 0x0400)
 #define SND_PURGE 0x0040
 #define SND_APPLICATION 0x0080
-#endif
 #define SND_SENTRY __MSABI_LONG(0x00080000)
 #define SND_RING __MSABI_LONG(0x00100000)
 #define SND_SYSTEM __MSABI_LONG(0x00200000)
 
 #define SND_ALIAS_START 0
 
-#ifdef _WIN32
 #define sndAlias(ch0, ch1) (SND_ALIAS_START + (DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8))
 
 #define SND_ALIAS_SYSTEMASTERISK sndAlias('S', '*')
@@ -69,10 +60,6 @@
 WINMMAPI WINBOOL WINAPI PlaySoundW(LPCWSTR pszSound, HMODULE hmod, DWORD fdwSound);
 #define PlaySound __MINGW_NAME_AW(PlaySound)
 
-#else
-DLOAD_RET(FALSE) WINBOOL WINAPI PlaySound(LPCSTR pszSound, HMODULE hmod, DWORD fdwSound);
-#endif
-
 #endif /* MMNOSOUND */
 
 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
