Home | History | Annotate | Download | only in include
      1 /**
      2  * This file has no copyright assigned and is placed in the Public Domain.
      3  * This file is part of the mingw-w64 runtime package.
      4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
      5  */
      6 #ifndef _INC_MMSYSTEM
      7 #define _INC_MMSYSTEM
      8 
      9 #include <_mingw_unicode.h>
     10 #include <pshpack1.h>
     11 
     12 #ifdef __cplusplus
     13 extern "C" {
     14 #endif
     15 
     16 #ifndef _WINMM_
     17 #define WINMMAPI DECLSPEC_IMPORT
     18 #else
     19 #define WINMMAPI
     20 #endif
     21 #define _loadds
     22 #define _huge
     23 
     24 #define MAXPNAMELEN 32
     25 #define MAXERRORLENGTH 256
     26 #define MAX_JOYSTICKOEMVXDNAME 260
     27 
     28   typedef UINT MMVERSION;
     29   typedef UINT MMRESULT;
     30 
     31 #define _MMRESULT_
     32 
     33 #ifndef DEFINED_LPUINT
     34 #define DEFINED_LPUINT
     35   typedef UINT *LPUINT;
     36 #endif
     37 
     38   typedef struct mmtime_tag {
     39     UINT wType;
     40     union {
     41       DWORD ms;
     42       DWORD sample;
     43       DWORD cb;
     44       DWORD ticks;
     45       struct {
     46 	BYTE hour;
     47 	BYTE min;
     48 	BYTE sec;
     49 	BYTE frame;
     50 	BYTE fps;
     51 	BYTE dummy;
     52 	BYTE pad[2];
     53       } smpte;
     54       struct {
     55 	DWORD songptrpos;
     56       } midi;
     57     } u;
     58   } MMTIME,*PMMTIME,NEAR *NPMMTIME,*LPMMTIME;
     59 
     60 #define TIME_MS 0x0001
     61 #define TIME_SAMPLES 0x0002
     62 #define TIME_BYTES 0x0004
     63 #define TIME_SMPTE 0x0008
     64 #define TIME_MIDI 0x0010
     65 #define TIME_TICKS 0x0020
     66 
     67 #ifndef MAKEFOURCC
     68 #define MAKEFOURCC(ch0,ch1,ch2,ch3)				\
     69   ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | 		\
     70    ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24))
     71 #endif /* MAKEFOURCC */
     72 
     73 #define MM_JOY1MOVE 0x3A0
     74 #define MM_JOY2MOVE 0x3A1
     75 #define MM_JOY1ZMOVE 0x3A2
     76 #define MM_JOY2ZMOVE 0x3A3
     77 #define MM_JOY1BUTTONDOWN 0x3B5
     78 #define MM_JOY2BUTTONDOWN 0x3B6
     79 #define MM_JOY1BUTTONUP 0x3B7
     80 #define MM_JOY2BUTTONUP 0x3B8
     81 
     82 #define MM_MCINOTIFY 0x3B9
     83 
     84 #define MM_WOM_OPEN 0x3BB
     85 #define MM_WOM_CLOSE 0x3BC
     86 #define MM_WOM_DONE 0x3BD
     87 
     88 #define MM_WIM_OPEN 0x3BE
     89 #define MM_WIM_CLOSE 0x3BF
     90 #define MM_WIM_DATA 0x3C0
     91 
     92 #define MM_MIM_OPEN 0x3C1
     93 #define MM_MIM_CLOSE 0x3C2
     94 #define MM_MIM_DATA 0x3C3
     95 #define MM_MIM_LONGDATA 0x3C4
     96 #define MM_MIM_ERROR 0x3C5
     97 #define MM_MIM_LONGERROR 0x3C6
     98 
     99 #define MM_MOM_OPEN 0x3C7
    100 #define MM_MOM_CLOSE 0x3C8
    101 #define MM_MOM_DONE 0x3C9
    102 
    103 #ifndef MM_DRVM_OPEN
    104 #define MM_DRVM_OPEN 0x3D0
    105 #define MM_DRVM_CLOSE 0x3D1
    106 #define MM_DRVM_DATA 0x3D2
    107 #define MM_DRVM_ERROR 0x3D3
    108 #endif
    109 
    110 #define MM_STREAM_OPEN 0x3D4
    111 #define MM_STREAM_CLOSE 0x3D5
    112 #define MM_STREAM_DONE 0x3D6
    113 #define MM_STREAM_ERROR 0x3D7
    114 
    115 #define MM_MOM_POSITIONCB 0x3CA
    116 
    117 #ifndef MM_MCISIGNAL
    118 #define MM_MCISIGNAL 0x3CB
    119 #endif
    120 
    121 #define MM_MIM_MOREDATA 0x3CC
    122 
    123 #define MM_MIXM_LINE_CHANGE 0x3D0
    124 #define MM_MIXM_CONTROL_CHANGE 0x3D1
    125 
    126 #define MMSYSERR_BASE 0
    127 #define WAVERR_BASE 32
    128 #define MIDIERR_BASE 64
    129 #define TIMERR_BASE 96
    130 #define JOYERR_BASE 160
    131 #define MCIERR_BASE 256
    132 #define MIXERR_BASE 1024
    133 
    134 #define MCI_STRING_OFFSET 512
    135 #define MCI_VD_OFFSET 1024
    136 #define MCI_CD_OFFSET 1088
    137 #define MCI_WAVE_OFFSET 1152
    138 #define MCI_SEQ_OFFSET 1216
    139 
    140 #define MMSYSERR_NOERROR 0
    141 #define MMSYSERR_ERROR (MMSYSERR_BASE + 1)
    142 #define MMSYSERR_BADDEVICEID (MMSYSERR_BASE + 2)
    143 #define MMSYSERR_NOTENABLED (MMSYSERR_BASE + 3)
    144 #define MMSYSERR_ALLOCATED (MMSYSERR_BASE + 4)
    145 #define MMSYSERR_INVALHANDLE (MMSYSERR_BASE + 5)
    146 #define MMSYSERR_NODRIVER (MMSYSERR_BASE + 6)
    147 #define MMSYSERR_NOMEM (MMSYSERR_BASE + 7)
    148 #define MMSYSERR_NOTSUPPORTED (MMSYSERR_BASE + 8)
    149 #define MMSYSERR_BADERRNUM (MMSYSERR_BASE + 9)
    150 #define MMSYSERR_INVALFLAG (MMSYSERR_BASE + 10)
    151 #define MMSYSERR_INVALPARAM (MMSYSERR_BASE + 11)
    152 #define MMSYSERR_HANDLEBUSY (MMSYSERR_BASE + 12)
    153 
    154 #define MMSYSERR_INVALIDALIAS (MMSYSERR_BASE + 13)
    155 #define MMSYSERR_BADDB (MMSYSERR_BASE + 14)
    156 #define MMSYSERR_KEYNOTFOUND (MMSYSERR_BASE + 15)
    157 #define MMSYSERR_READERROR (MMSYSERR_BASE + 16)
    158 #define MMSYSERR_WRITEERROR (MMSYSERR_BASE + 17)
    159 #define MMSYSERR_DELETEERROR (MMSYSERR_BASE + 18)
    160 #define MMSYSERR_VALNOTFOUND (MMSYSERR_BASE + 19)
    161 #define MMSYSERR_NODRIVERCB (MMSYSERR_BASE + 20)
    162 #define MMSYSERR_MOREDATA (MMSYSERR_BASE + 21)
    163 #define MMSYSERR_LASTERROR (MMSYSERR_BASE + 21)
    164 
    165   DECLARE_HANDLE(HDRVR);
    166 
    167 #ifndef MMNODRV
    168 
    169   typedef struct DRVCONFIGINFOEX {
    170     DWORD dwDCISize;
    171     LPCWSTR lpszDCISectionName;
    172     LPCWSTR lpszDCIAliasName;
    173     DWORD dnDevNode;
    174   } DRVCONFIGINFOEX,*PDRVCONFIGINFOEX,NEAR *NPDRVCONFIGINFOEX,*LPDRVCONFIGINFOEX;
    175 
    176 #ifndef DRV_LOAD
    177 #define DRV_LOAD 0x0001
    178 #define DRV_ENABLE 0x0002
    179 #define DRV_OPEN 0x0003
    180 #define DRV_CLOSE 0x0004
    181 #define DRV_DISABLE 0x0005
    182 #define DRV_FREE 0x0006
    183 #define DRV_CONFIGURE 0x0007
    184 #define DRV_QUERYCONFIGURE 0x0008
    185 #define DRV_INSTALL 0x0009
    186 #define DRV_REMOVE 0x000A
    187 #define DRV_EXITSESSION 0x000B
    188 #define DRV_POWER 0x000F
    189 #define DRV_RESERVED 0x0800
    190 #define DRV_USER 0x4000
    191 
    192   typedef struct tagDRVCONFIGINFO {
    193     DWORD dwDCISize;
    194     LPCWSTR lpszDCISectionName;
    195     LPCWSTR lpszDCIAliasName;
    196   } DRVCONFIGINFO,*PDRVCONFIGINFO,NEAR *NPDRVCONFIGINFO,*LPDRVCONFIGINFO;
    197 
    198 #define DRVCNF_CANCEL 0x0000
    199 #define DRVCNF_OK 0x0001
    200 #define DRVCNF_RESTART 0x0002
    201 
    202   typedef LRESULT (CALLBACK *DRIVERPROC)(DWORD_PTR,HDRVR,UINT,LPARAM,LPARAM);
    203 
    204   WINMMAPI LRESULT WINAPI CloseDriver(HDRVR hDriver,LPARAM lParam1,LPARAM lParam2);
    205   WINMMAPI HDRVR WINAPI OpenDriver(LPCWSTR szDriverName,LPCWSTR szSectionName,LPARAM lParam2);
    206   WINMMAPI LRESULT WINAPI SendDriverMessage(HDRVR hDriver,UINT message,LPARAM lParam1,LPARAM lParam2);
    207   WINMMAPI HMODULE WINAPI DrvGetModuleHandle(HDRVR hDriver);
    208   WINMMAPI HMODULE WINAPI GetDriverModuleHandle(HDRVR hDriver);
    209   WINMMAPI LRESULT WINAPI DefDriverProc(DWORD_PTR dwDriverIdentifier,HDRVR hdrvr,UINT uMsg,LPARAM lParam1,LPARAM lParam2);
    210 #endif
    211 
    212 #define DRV_CANCEL DRVCNF_CANCEL
    213 #define DRV_OK DRVCNF_OK
    214 #define DRV_RESTART DRVCNF_RESTART
    215 #define DRV_MCI_FIRST DRV_RESERVED
    216 #define DRV_MCI_LAST (DRV_RESERVED + 0xFFF)
    217 #endif
    218 
    219 #define CALLBACK_TYPEMASK __MSABI_LONG(0x00070000)
    220 #define CALLBACK_NULL __MSABI_LONG(0x00000000)
    221 #define CALLBACK_WINDOW __MSABI_LONG(0x00010000)
    222 #define CALLBACK_TASK __MSABI_LONG(0x00020000)
    223 #define CALLBACK_FUNCTION __MSABI_LONG(0x00030000)
    224 #define CALLBACK_THREAD (CALLBACK_TASK)
    225 #define CALLBACK_EVENT __MSABI_LONG(0x00050000)
    226   typedef void (CALLBACK DRVCALLBACK)(HDRVR hdrvr,UINT uMsg,DWORD_PTR dwUser,DWORD_PTR dw1,DWORD_PTR dw2);
    227 
    228   typedef DRVCALLBACK *LPDRVCALLBACK;
    229   typedef DRVCALLBACK *PDRVCALLBACK;
    230 
    231 #ifndef MMNOMMSYSTEM
    232 #define OutputDebugStr OutputDebugString
    233 #endif
    234 
    235 #ifndef MMNOSOUND
    236 
    237   WINMMAPI WINBOOL WINAPI sndPlaySoundA(LPCSTR pszSound,UINT fuSound);
    238   WINMMAPI WINBOOL WINAPI sndPlaySoundW(LPCWSTR pszSound,UINT fuSound);
    239 
    240 #define sndPlaySound __MINGW_NAME_AW(sndPlaySound)
    241 
    242 #define SND_SYNC 0x0000
    243 #define SND_ASYNC 0x0001
    244 #define SND_NODEFAULT 0x0002
    245 #define SND_MEMORY 0x0004
    246 #define SND_LOOP 0x0008
    247 #define SND_NOSTOP 0x0010
    248 #define SND_NOWAIT __MSABI_LONG(0x00002000)
    249 #define SND_ALIAS __MSABI_LONG(0x00010000)
    250 #define SND_ALIAS_ID __MSABI_LONG(0x00110000)
    251 #define SND_FILENAME __MSABI_LONG(0x00020000)
    252 #define SND_RESOURCE __MSABI_LONG(0x00040004)
    253 #define SND_PURGE 0x0040
    254 #define SND_APPLICATION 0x0080
    255 
    256 #define SND_ALIAS_START 0
    257 
    258 #define sndAlias(c0,c1) (SND_ALIAS_START+((DWORD)(BYTE)(c0)|((DWORD)(BYTE)(c1)<<8)))
    259 
    260 #define SND_ALIAS_SYSTEMASTERISK sndAlias('S','*')
    261 #define SND_ALIAS_SYSTEMQUESTION sndAlias('S','?')
    262 #define SND_ALIAS_SYSTEMHAND sndAlias('S','H')
    263 #define SND_ALIAS_SYSTEMEXIT sndAlias('S','E')
    264 #define SND_ALIAS_SYSTEMSTART sndAlias('S','S')
    265 #define SND_ALIAS_SYSTEMWELCOME sndAlias('S','W')
    266 #define SND_ALIAS_SYSTEMEXCLAMATION sndAlias('S','!')
    267 #define SND_ALIAS_SYSTEMDEFAULT sndAlias('S','D')
    268 
    269   WINMMAPI WINBOOL WINAPI PlaySoundA(LPCSTR pszSound,HMODULE hmod,DWORD fdwSound);
    270   WINMMAPI WINBOOL WINAPI PlaySoundW(LPCWSTR pszSound,HMODULE hmod,DWORD fdwSound);
    271 
    272 #define PlaySound __MINGW_NAME_AW(PlaySound)
    273 #endif
    274 
    275 #ifndef MMNOWAVE
    276 
    277 #define WAVERR_BADFORMAT (WAVERR_BASE + 0)
    278 #define WAVERR_STILLPLAYING (WAVERR_BASE + 1)
    279 #define WAVERR_UNPREPARED (WAVERR_BASE + 2)
    280 #define WAVERR_SYNC (WAVERR_BASE + 3)
    281 #define WAVERR_LASTERROR (WAVERR_BASE + 3)
    282 
    283   DECLARE_HANDLE(HWAVE);
    284   DECLARE_HANDLE(HWAVEIN);
    285   DECLARE_HANDLE(HWAVEOUT);
    286   typedef HWAVEIN *LPHWAVEIN;
    287   typedef HWAVEOUT *LPHWAVEOUT;
    288   typedef DRVCALLBACK WAVECALLBACK;
    289   typedef WAVECALLBACK *LPWAVECALLBACK;
    290 
    291 #define WOM_OPEN MM_WOM_OPEN
    292 #define WOM_CLOSE MM_WOM_CLOSE
    293 #define WOM_DONE MM_WOM_DONE
    294 #define WIM_OPEN MM_WIM_OPEN
    295 #define WIM_CLOSE MM_WIM_CLOSE
    296 #define WIM_DATA MM_WIM_DATA
    297 
    298 #define WAVE_MAPPER ((UINT)-1)
    299 
    300 #define WAVE_FORMAT_QUERY 0x0001
    301 #define WAVE_ALLOWSYNC 0x0002
    302 #define WAVE_MAPPED 0x0004
    303 #define WAVE_FORMAT_DIRECT 0x0008
    304 #define WAVE_FORMAT_DIRECT_QUERY (WAVE_FORMAT_QUERY | WAVE_FORMAT_DIRECT)
    305 
    306   typedef struct wavehdr_tag {
    307     LPSTR lpData;
    308     DWORD dwBufferLength;
    309     DWORD dwBytesRecorded;
    310     DWORD_PTR dwUser;
    311     DWORD dwFlags;
    312     DWORD dwLoops;
    313     struct wavehdr_tag *lpNext;
    314     DWORD_PTR reserved;
    315   } WAVEHDR,*PWAVEHDR,NEAR *NPWAVEHDR,*LPWAVEHDR;
    316 
    317 #define WHDR_DONE 0x00000001
    318 #define WHDR_PREPARED 0x00000002
    319 #define WHDR_BEGINLOOP 0x00000004
    320 #define WHDR_ENDLOOP 0x00000008
    321 #define WHDR_INQUEUE 0x00000010
    322 
    323   typedef struct tagWAVEOUTCAPSA {
    324     WORD wMid;
    325     WORD wPid;
    326     MMVERSION vDriverVersion;
    327     CHAR szPname[MAXPNAMELEN];
    328     DWORD dwFormats;
    329     WORD wChannels;
    330     WORD wReserved1;
    331     DWORD dwSupport;
    332   } WAVEOUTCAPSA,*PWAVEOUTCAPSA,*NPWAVEOUTCAPSA,*LPWAVEOUTCAPSA;
    333 
    334   typedef struct tagWAVEOUTCAPSW {
    335     WORD wMid;
    336     WORD wPid;
    337     MMVERSION vDriverVersion;
    338     WCHAR szPname[MAXPNAMELEN];
    339     DWORD dwFormats;
    340     WORD wChannels;
    341     WORD wReserved1;
    342     DWORD dwSupport;
    343   } WAVEOUTCAPSW,*PWAVEOUTCAPSW,*NPWAVEOUTCAPSW,*LPWAVEOUTCAPSW;
    344 
    345   __MINGW_TYPEDEF_AW(WAVEOUTCAPS)
    346   __MINGW_TYPEDEF_AW(PWAVEOUTCAPS)
    347   __MINGW_TYPEDEF_AW(NPWAVEOUTCAPS)
    348   __MINGW_TYPEDEF_AW(LPWAVEOUTCAPS)
    349 
    350   typedef struct tagWAVEOUTCAPS2A {
    351     WORD wMid;
    352     WORD wPid;
    353     MMVERSION vDriverVersion;
    354     CHAR szPname[MAXPNAMELEN];
    355     DWORD dwFormats;
    356     WORD wChannels;
    357     WORD wReserved1;
    358     DWORD dwSupport;
    359     GUID ManufacturerGuid;
    360     GUID ProductGuid;
    361     GUID NameGuid;
    362   } WAVEOUTCAPS2A,*PWAVEOUTCAPS2A,*NPWAVEOUTCAPS2A,*LPWAVEOUTCAPS2A;
    363 
    364   typedef struct tagWAVEOUTCAPS2W {
    365     WORD wMid;
    366     WORD wPid;
    367     MMVERSION vDriverVersion;
    368     WCHAR szPname[MAXPNAMELEN];
    369     DWORD dwFormats;
    370     WORD wChannels;
    371     WORD wReserved1;
    372     DWORD dwSupport;
    373     GUID ManufacturerGuid;
    374     GUID ProductGuid;
    375     GUID NameGuid;
    376   } WAVEOUTCAPS2W,*PWAVEOUTCAPS2W,*NPWAVEOUTCAPS2W,*LPWAVEOUTCAPS2W;
    377 
    378   __MINGW_TYPEDEF_AW(WAVEOUTCAPS2)
    379   __MINGW_TYPEDEF_AW(PWAVEOUTCAPS2)
    380   __MINGW_TYPEDEF_AW(NPWAVEOUTCAPS2)
    381   __MINGW_TYPEDEF_AW(LPWAVEOUTCAPS2)
    382 
    383 #define WAVECAPS_PITCH 0x0001
    384 #define WAVECAPS_PLAYBACKRATE 0x0002
    385 #define WAVECAPS_VOLUME 0x0004
    386 #define WAVECAPS_LRVOLUME 0x0008
    387 #define WAVECAPS_SYNC 0x0010
    388 #define WAVECAPS_SAMPLEACCURATE 0x0020
    389 
    390   typedef struct tagWAVEINCAPSA {
    391     WORD wMid;
    392     WORD wPid;
    393     MMVERSION vDriverVersion;
    394     CHAR szPname[MAXPNAMELEN];
    395     DWORD dwFormats;
    396     WORD wChannels;
    397     WORD wReserved1;
    398   } WAVEINCAPSA,*PWAVEINCAPSA,*NPWAVEINCAPSA,*LPWAVEINCAPSA;
    399 
    400   typedef struct tagWAVEINCAPSW {
    401     WORD wMid;
    402     WORD wPid;
    403     MMVERSION vDriverVersion;
    404     WCHAR szPname[MAXPNAMELEN];
    405     DWORD dwFormats;
    406     WORD wChannels;
    407     WORD wReserved1;
    408   } WAVEINCAPSW,*PWAVEINCAPSW,*NPWAVEINCAPSW,*LPWAVEINCAPSW;
    409 
    410   __MINGW_TYPEDEF_AW(WAVEINCAPS)
    411   __MINGW_TYPEDEF_AW(PWAVEINCAPS)
    412   __MINGW_TYPEDEF_AW(NPWAVEINCAPS)
    413   __MINGW_TYPEDEF_AW(LPWAVEINCAPS)
    414 
    415   typedef struct tagWAVEINCAPS2A {
    416     WORD wMid;
    417     WORD wPid;
    418     MMVERSION vDriverVersion;
    419     CHAR szPname[MAXPNAMELEN];
    420     DWORD dwFormats;
    421     WORD wChannels;
    422     WORD wReserved1;
    423     GUID ManufacturerGuid;
    424     GUID ProductGuid;
    425     GUID NameGuid;
    426   } WAVEINCAPS2A,*PWAVEINCAPS2A,*NPWAVEINCAPS2A,*LPWAVEINCAPS2A;
    427 
    428   typedef struct tagWAVEINCAPS2W {
    429     WORD wMid;
    430     WORD wPid;
    431     MMVERSION vDriverVersion;
    432     WCHAR szPname[MAXPNAMELEN];
    433     DWORD dwFormats;
    434     WORD wChannels;
    435     WORD wReserved1;
    436     GUID ManufacturerGuid;
    437     GUID ProductGuid;
    438     GUID NameGuid;
    439   } WAVEINCAPS2W,*PWAVEINCAPS2W,*NPWAVEINCAPS2W,*LPWAVEINCAPS2W;
    440 
    441   __MINGW_TYPEDEF_AW(WAVEINCAPS2)
    442   __MINGW_TYPEDEF_AW(PWAVEINCAPS2)
    443   __MINGW_TYPEDEF_AW(NPWAVEINCAPS2)
    444   __MINGW_TYPEDEF_AW(LPWAVEINCAPS2)
    445 
    446 #define WAVE_INVALIDFORMAT 0x00000000
    447 #define WAVE_FORMAT_1M08 0x00000001
    448 #define WAVE_FORMAT_1S08 0x00000002
    449 #define WAVE_FORMAT_1M16 0x00000004
    450 #define WAVE_FORMAT_1S16 0x00000008
    451 #define WAVE_FORMAT_2M08 0x00000010
    452 #define WAVE_FORMAT_2S08 0x00000020
    453 #define WAVE_FORMAT_2M16 0x00000040
    454 #define WAVE_FORMAT_2S16 0x00000080
    455 #define WAVE_FORMAT_4M08 0x00000100
    456 #define WAVE_FORMAT_4S08 0x00000200
    457 #define WAVE_FORMAT_4M16 0x00000400
    458 #define WAVE_FORMAT_4S16 0x00000800
    459 
    460 #define WAVE_FORMAT_44M08 0x00000100
    461 #define WAVE_FORMAT_44S08 0x00000200
    462 #define WAVE_FORMAT_44M16 0x00000400
    463 #define WAVE_FORMAT_44S16 0x00000800
    464 #define WAVE_FORMAT_48M08 0x00001000
    465 #define WAVE_FORMAT_48S08 0x00002000
    466 #define WAVE_FORMAT_48M16 0x00004000
    467 #define WAVE_FORMAT_48S16 0x00008000
    468 #define WAVE_FORMAT_96M08 0x00010000
    469 #define WAVE_FORMAT_96S08 0x00020000
    470 #define WAVE_FORMAT_96M16 0x00040000
    471 #define WAVE_FORMAT_96S16 0x00080000
    472 
    473 #ifndef WAVE_FORMAT_PCM
    474   typedef struct waveformat_tag {
    475     WORD wFormatTag;
    476     WORD nChannels;
    477     DWORD nSamplesPerSec;
    478     DWORD nAvgBytesPerSec;
    479     WORD nBlockAlign;
    480   } WAVEFORMAT,*PWAVEFORMAT,NEAR *NPWAVEFORMAT,*LPWAVEFORMAT;
    481 
    482 #define WAVE_FORMAT_PCM 1
    483 
    484   typedef struct pcmwaveformat_tag {
    485     WAVEFORMAT wf;
    486     WORD wBitsPerSample;
    487   } PCMWAVEFORMAT,*PPCMWAVEFORMAT,NEAR *NPPCMWAVEFORMAT,*LPPCMWAVEFORMAT;
    488 #endif
    489 
    490 #ifndef _WAVEFORMATEX_
    491 #define _WAVEFORMATEX_
    492 
    493   typedef struct tWAVEFORMATEX {
    494     WORD wFormatTag;
    495     WORD nChannels;
    496     DWORD nSamplesPerSec;
    497     DWORD nAvgBytesPerSec;
    498     WORD nBlockAlign;
    499     WORD wBitsPerSample;
    500     WORD cbSize;
    501   } WAVEFORMATEX,*PWAVEFORMATEX,NEAR *NPWAVEFORMATEX,*LPWAVEFORMATEX;
    502 #endif
    503   typedef const WAVEFORMATEX *LPCWAVEFORMATEX;
    504 
    505   WINMMAPI UINT WINAPI waveOutGetNumDevs(void);
    506   WINMMAPI MMRESULT WINAPI waveOutGetDevCapsA(UINT_PTR uDeviceID,LPWAVEOUTCAPSA pwoc,UINT cbwoc);
    507   WINMMAPI MMRESULT WINAPI waveOutGetDevCapsW(UINT_PTR uDeviceID,LPWAVEOUTCAPSW pwoc,UINT cbwoc);
    508 
    509 #define waveOutGetDevCaps __MINGW_NAME_AW(waveOutGetDevCaps)
    510 
    511   WINMMAPI MMRESULT WINAPI waveOutGetVolume(HWAVEOUT hwo,LPDWORD pdwVolume);
    512   WINMMAPI MMRESULT WINAPI waveOutSetVolume(HWAVEOUT hwo,DWORD dwVolume);
    513   WINMMAPI MMRESULT WINAPI waveOutGetErrorTextA(MMRESULT mmrError,LPSTR pszText,UINT cchText);
    514   WINMMAPI MMRESULT WINAPI waveOutGetErrorTextW(MMRESULT mmrError,LPWSTR pszText,UINT cchText);
    515 
    516 #define waveOutGetErrorText __MINGW_NAME_AW(waveOutGetErrorText)
    517 
    518   WINMMAPI MMRESULT WINAPI waveOutOpen(LPHWAVEOUT phwo,UINT uDeviceID,LPCWAVEFORMATEX pwfx,DWORD_PTR dwCallback,DWORD_PTR dwInstance,DWORD fdwOpen);
    519   WINMMAPI MMRESULT WINAPI waveOutClose(HWAVEOUT hwo);
    520   WINMMAPI MMRESULT WINAPI waveOutPrepareHeader(HWAVEOUT hwo,LPWAVEHDR pwh,UINT cbwh);
    521   WINMMAPI MMRESULT WINAPI waveOutUnprepareHeader(HWAVEOUT hwo,LPWAVEHDR pwh,UINT cbwh);
    522   WINMMAPI MMRESULT WINAPI waveOutWrite(HWAVEOUT hwo,LPWAVEHDR pwh,UINT cbwh);
    523   WINMMAPI MMRESULT WINAPI waveOutPause(HWAVEOUT hwo);
    524   WINMMAPI MMRESULT WINAPI waveOutRestart(HWAVEOUT hwo);
    525   WINMMAPI MMRESULT WINAPI waveOutReset(HWAVEOUT hwo);
    526   WINMMAPI MMRESULT WINAPI waveOutBreakLoop(HWAVEOUT hwo);
    527   WINMMAPI MMRESULT WINAPI waveOutGetPosition(HWAVEOUT hwo,LPMMTIME pmmt,UINT cbmmt);
    528   WINMMAPI MMRESULT WINAPI waveOutGetPitch(HWAVEOUT hwo,LPDWORD pdwPitch);
    529   WINMMAPI MMRESULT WINAPI waveOutSetPitch(HWAVEOUT hwo,DWORD dwPitch);
    530   WINMMAPI MMRESULT WINAPI waveOutGetPlaybackRate(HWAVEOUT hwo,LPDWORD pdwRate);
    531   WINMMAPI MMRESULT WINAPI waveOutSetPlaybackRate(HWAVEOUT hwo,DWORD dwRate);
    532   WINMMAPI MMRESULT WINAPI waveOutGetID(HWAVEOUT hwo,LPUINT puDeviceID);
    533   WINMMAPI MMRESULT WINAPI waveOutMessage(HWAVEOUT hwo,UINT uMsg,DWORD_PTR dw1,DWORD_PTR dw2);
    534   WINMMAPI UINT WINAPI waveInGetNumDevs(void);
    535   WINMMAPI MMRESULT WINAPI waveInGetDevCapsA(UINT_PTR uDeviceID,LPWAVEINCAPSA pwic,UINT cbwic);
    536   WINMMAPI MMRESULT WINAPI waveInGetDevCapsW(UINT_PTR uDeviceID,LPWAVEINCAPSW pwic,UINT cbwic);
    537 
    538 #define waveInGetDevCaps __MINGW_NAME_AW(waveInGetDevCaps)
    539 
    540   WINMMAPI MMRESULT WINAPI waveInGetErrorTextA(MMRESULT mmrError,LPSTR pszText,UINT cchText);
    541   WINMMAPI MMRESULT WINAPI waveInGetErrorTextW(MMRESULT mmrError,LPWSTR pszText,UINT cchText);
    542 
    543 #define waveInGetErrorText __MINGW_NAME_AW(waveInGetErrorText)
    544 
    545   WINMMAPI MMRESULT WINAPI waveInOpen(LPHWAVEIN phwi,UINT uDeviceID,LPCWAVEFORMATEX pwfx,DWORD_PTR dwCallback,DWORD_PTR dwInstance,DWORD fdwOpen);
    546   WINMMAPI MMRESULT WINAPI waveInClose(HWAVEIN hwi);
    547   WINMMAPI MMRESULT WINAPI waveInPrepareHeader(HWAVEIN hwi,LPWAVEHDR pwh,UINT cbwh);
    548   WINMMAPI MMRESULT WINAPI waveInUnprepareHeader(HWAVEIN hwi,LPWAVEHDR pwh,UINT cbwh);
    549   WINMMAPI MMRESULT WINAPI waveInAddBuffer(HWAVEIN hwi,LPWAVEHDR pwh,UINT cbwh);
    550   WINMMAPI MMRESULT WINAPI waveInStart(HWAVEIN hwi);
    551   WINMMAPI MMRESULT WINAPI waveInStop(HWAVEIN hwi);
    552   WINMMAPI MMRESULT WINAPI waveInReset(HWAVEIN hwi);
    553   WINMMAPI MMRESULT WINAPI waveInGetPosition(HWAVEIN hwi,LPMMTIME pmmt,UINT cbmmt);
    554   WINMMAPI MMRESULT WINAPI waveInGetID(HWAVEIN hwi,LPUINT puDeviceID);
    555   WINMMAPI MMRESULT WINAPI waveInMessage(HWAVEIN hwi,UINT uMsg,DWORD_PTR dw1,DWORD_PTR dw2);
    556 #endif
    557 
    558 #ifndef MMNOMIDI
    559 
    560 #define MIDIERR_UNPREPARED (MIDIERR_BASE + 0)
    561 #define MIDIERR_STILLPLAYING (MIDIERR_BASE + 1)
    562 #define MIDIERR_NOMAP (MIDIERR_BASE + 2)
    563 #define MIDIERR_NOTREADY (MIDIERR_BASE + 3)
    564 #define MIDIERR_NODEVICE (MIDIERR_BASE + 4)
    565 #define MIDIERR_INVALIDSETUP (MIDIERR_BASE + 5)
    566 #define MIDIERR_BADOPENMODE (MIDIERR_BASE + 6)
    567 #define MIDIERR_DONT_CONTINUE (MIDIERR_BASE + 7)
    568 #define MIDIERR_LASTERROR (MIDIERR_BASE + 7)
    569 
    570   DECLARE_HANDLE(HMIDI);
    571   DECLARE_HANDLE(HMIDIIN);
    572   DECLARE_HANDLE(HMIDIOUT);
    573   DECLARE_HANDLE(HMIDISTRM);
    574   typedef HMIDI *LPHMIDI;
    575   typedef HMIDIIN *LPHMIDIIN;
    576   typedef HMIDIOUT *LPHMIDIOUT;
    577   typedef HMIDISTRM *LPHMIDISTRM;
    578   typedef DRVCALLBACK MIDICALLBACK;
    579   typedef MIDICALLBACK *LPMIDICALLBACK;
    580 #define MIDIPATCHSIZE 128
    581   typedef WORD PATCHARRAY[MIDIPATCHSIZE];
    582   typedef WORD *LPPATCHARRAY;
    583   typedef WORD KEYARRAY[MIDIPATCHSIZE];
    584   typedef WORD *LPKEYARRAY;
    585 
    586 #define MIM_OPEN MM_MIM_OPEN
    587 #define MIM_CLOSE MM_MIM_CLOSE
    588 #define MIM_DATA MM_MIM_DATA
    589 #define MIM_LONGDATA MM_MIM_LONGDATA
    590 #define MIM_ERROR MM_MIM_ERROR
    591 #define MIM_LONGERROR MM_MIM_LONGERROR
    592 #define MOM_OPEN MM_MOM_OPEN
    593 #define MOM_CLOSE MM_MOM_CLOSE
    594 #define MOM_DONE MM_MOM_DONE
    595 
    596 #define MIM_MOREDATA MM_MIM_MOREDATA
    597 #define MOM_POSITIONCB MM_MOM_POSITIONCB
    598 
    599 #define MIDIMAPPER ((UINT)-1)
    600 #define MIDI_MAPPER ((UINT)-1)
    601 
    602 #define MIDI_IO_STATUS __MSABI_LONG(0x00000020)
    603 
    604 #define MIDI_CACHE_ALL 1
    605 #define MIDI_CACHE_BESTFIT 2
    606 #define MIDI_CACHE_QUERY 3
    607 #define MIDI_UNCACHE 4
    608 
    609   typedef struct tagMIDIOUTCAPSA {
    610     WORD wMid;
    611     WORD wPid;
    612     MMVERSION vDriverVersion;
    613     CHAR szPname[MAXPNAMELEN];
    614     WORD wTechnology;
    615     WORD wVoices;
    616     WORD wNotes;
    617     WORD wChannelMask;
    618     DWORD dwSupport;
    619   } MIDIOUTCAPSA,*PMIDIOUTCAPSA,*NPMIDIOUTCAPSA,*LPMIDIOUTCAPSA;
    620 
    621   typedef struct tagMIDIOUTCAPSW {
    622     WORD wMid;
    623     WORD wPid;
    624     MMVERSION vDriverVersion;
    625     WCHAR szPname[MAXPNAMELEN];
    626     WORD wTechnology;
    627     WORD wVoices;
    628     WORD wNotes;
    629     WORD wChannelMask;
    630     DWORD dwSupport;
    631   } MIDIOUTCAPSW,*PMIDIOUTCAPSW,*NPMIDIOUTCAPSW,*LPMIDIOUTCAPSW;
    632 
    633   __MINGW_TYPEDEF_AW(MIDIOUTCAPS)
    634   __MINGW_TYPEDEF_AW(PMIDIOUTCAPS)
    635   __MINGW_TYPEDEF_AW(NPMIDIOUTCAPS)
    636   __MINGW_TYPEDEF_AW(LPMIDIOUTCAPS)
    637 
    638   typedef struct tagMIDIOUTCAPS2A {
    639     WORD wMid;
    640     WORD wPid;
    641     MMVERSION vDriverVersion;
    642     CHAR szPname[MAXPNAMELEN];
    643     WORD wTechnology;
    644     WORD wVoices;
    645     WORD wNotes;
    646     WORD wChannelMask;
    647     DWORD dwSupport;
    648     GUID ManufacturerGuid;
    649     GUID ProductGuid;
    650     GUID NameGuid;
    651   } MIDIOUTCAPS2A,*PMIDIOUTCAPS2A,*NPMIDIOUTCAPS2A,*LPMIDIOUTCAPS2A;
    652 
    653   typedef struct tagMIDIOUTCAPS2W {
    654     WORD wMid;
    655     WORD wPid;
    656     MMVERSION vDriverVersion;
    657     WCHAR szPname[MAXPNAMELEN];
    658     WORD wTechnology;
    659     WORD wVoices;
    660     WORD wNotes;
    661     WORD wChannelMask;
    662     DWORD dwSupport;
    663     GUID ManufacturerGuid;
    664     GUID ProductGuid;
    665     GUID NameGuid;
    666   } MIDIOUTCAPS2W,*PMIDIOUTCAPS2W,*NPMIDIOUTCAPS2W,*LPMIDIOUTCAPS2W;
    667 
    668   __MINGW_TYPEDEF_AW(MIDIOUTCAPS2)
    669   __MINGW_TYPEDEF_AW(PMIDIOUTCAPS2)
    670   __MINGW_TYPEDEF_AW(NPMIDIOUTCAPS2)
    671   __MINGW_TYPEDEF_AW(LPMIDIOUTCAPS2)
    672 
    673 #define MOD_MIDIPORT 1
    674 #define MOD_SYNTH 2
    675 #define MOD_SQSYNTH 3
    676 #define MOD_FMSYNTH 4
    677 #define MOD_MAPPER 5
    678 #define MOD_WAVETABLE 6
    679 #define MOD_SWSYNTH 7
    680 
    681 #define MIDICAPS_VOLUME 0x0001
    682 #define MIDICAPS_LRVOLUME 0x0002
    683 #define MIDICAPS_CACHE 0x0004
    684 #define MIDICAPS_STREAM 0x0008
    685 
    686   typedef struct tagMIDIINCAPSA {
    687     WORD wMid;
    688     WORD wPid;
    689     MMVERSION vDriverVersion;
    690     CHAR szPname[MAXPNAMELEN];
    691     DWORD dwSupport;
    692   } MIDIINCAPSA,*PMIDIINCAPSA,*NPMIDIINCAPSA,*LPMIDIINCAPSA;
    693 
    694   typedef struct tagMIDIINCAPSW {
    695     WORD wMid;
    696     WORD wPid;
    697     MMVERSION vDriverVersion;
    698     WCHAR szPname[MAXPNAMELEN];
    699     DWORD dwSupport;
    700   } MIDIINCAPSW,*PMIDIINCAPSW,*NPMIDIINCAPSW,*LPMIDIINCAPSW;
    701 
    702   __MINGW_TYPEDEF_AW(MIDIINCAPS)
    703   __MINGW_TYPEDEF_AW(PMIDIINCAPS)
    704   __MINGW_TYPEDEF_AW(NPMIDIINCAPS)
    705   __MINGW_TYPEDEF_AW(LPMIDIINCAPS)
    706 
    707   typedef struct tagMIDIINCAPS2A {
    708     WORD wMid;
    709     WORD wPid;
    710     MMVERSION vDriverVersion;
    711     CHAR szPname[MAXPNAMELEN];
    712     DWORD dwSupport;
    713     GUID ManufacturerGuid;
    714     GUID ProductGuid;
    715     GUID NameGuid;
    716   } MIDIINCAPS2A,*PMIDIINCAPS2A,*NPMIDIINCAPS2A,*LPMIDIINCAPS2A;
    717 
    718   typedef struct tagMIDIINCAPS2W {
    719     WORD wMid;
    720     WORD wPid;
    721     MMVERSION vDriverVersion;
    722     WCHAR szPname[MAXPNAMELEN];
    723     DWORD dwSupport;
    724     GUID ManufacturerGuid;
    725     GUID ProductGuid;
    726     GUID NameGuid;
    727   } MIDIINCAPS2W,*PMIDIINCAPS2W,*NPMIDIINCAPS2W,*LPMIDIINCAPS2W;
    728 
    729   __MINGW_TYPEDEF_AW(MIDIINCAPS2)
    730   __MINGW_TYPEDEF_AW(PMIDIINCAPS2)
    731   __MINGW_TYPEDEF_AW(NPMIDIINCAPS2)
    732   __MINGW_TYPEDEF_AW(LPMIDIINCAPS2)
    733 
    734   typedef struct midihdr_tag {
    735     LPSTR lpData;
    736     DWORD dwBufferLength;
    737     DWORD dwBytesRecorded;
    738     DWORD_PTR dwUser;
    739     DWORD dwFlags;
    740     struct midihdr_tag far *lpNext;
    741     DWORD_PTR reserved;
    742     DWORD dwOffset;
    743     DWORD_PTR dwReserved[8];
    744   } MIDIHDR,*PMIDIHDR,NEAR *NPMIDIHDR,*LPMIDIHDR;
    745 
    746   typedef struct midievent_tag {
    747     DWORD dwDeltaTime;
    748     DWORD dwStreamID;
    749     DWORD dwEvent;
    750     DWORD dwParms[1];
    751   } MIDIEVENT;
    752 
    753   typedef struct midistrmbuffver_tag {
    754     DWORD dwVersion;
    755     DWORD dwMid;
    756     DWORD dwOEMVersion;
    757   } MIDISTRMBUFFVER;
    758 
    759 #define MHDR_DONE 0x00000001
    760 #define MHDR_PREPARED 0x00000002
    761 #define MHDR_INQUEUE 0x00000004
    762 #define MHDR_ISSTRM 0x00000008
    763 
    764 #define MEVT_F_SHORT __MSABI_LONG(0x00000000)
    765 #define MEVT_F_LONG __MSABI_LONG(0x80000000)
    766 #define MEVT_F_CALLBACK __MSABI_LONG(0x40000000)
    767 
    768 #define MEVT_EVENTTYPE(x) ((BYTE)(((x)>>24)&0xFF))
    769 #define MEVT_EVENTPARM(x) ((DWORD)((x)&0x00FFFFFF))
    770 
    771 #define MEVT_SHORTMSG ((BYTE)0x00)
    772 #define MEVT_TEMPO ((BYTE)0x01)
    773 #define MEVT_NOP ((BYTE)0x02)
    774 
    775 #define MEVT_LONGMSG ((BYTE)0x80)
    776 #define MEVT_COMMENT ((BYTE)0x82)
    777 #define MEVT_VERSION ((BYTE)0x84)
    778 
    779 #define MIDISTRM_ERROR (-2)
    780 
    781 #define MIDIPROP_SET __MSABI_LONG(0x80000000)
    782 #define MIDIPROP_GET __MSABI_LONG(0x40000000)
    783 
    784 #define MIDIPROP_TIMEDIV __MSABI_LONG(0x00000001)
    785 #define MIDIPROP_TEMPO __MSABI_LONG(0x00000002)
    786 
    787   typedef struct midiproptimediv_tag {
    788     DWORD cbStruct;
    789     DWORD dwTimeDiv;
    790   } MIDIPROPTIMEDIV,*LPMIDIPROPTIMEDIV;
    791 
    792   typedef struct midiproptempo_tag {
    793     DWORD cbStruct;
    794     DWORD dwTempo;
    795   } MIDIPROPTEMPO,*LPMIDIPROPTEMPO;
    796 
    797   WINMMAPI UINT WINAPI midiOutGetNumDevs(void);
    798   WINMMAPI MMRESULT WINAPI midiStreamOpen(LPHMIDISTRM phms,LPUINT puDeviceID,DWORD cMidi,DWORD_PTR dwCallback,DWORD_PTR dwInstance,DWORD fdwOpen);
    799   WINMMAPI MMRESULT WINAPI midiStreamClose(HMIDISTRM hms);
    800   WINMMAPI MMRESULT WINAPI midiStreamProperty(HMIDISTRM hms,LPBYTE lppropdata,DWORD dwProperty);
    801   WINMMAPI MMRESULT WINAPI midiStreamPosition(HMIDISTRM hms,LPMMTIME lpmmt,UINT cbmmt);
    802   WINMMAPI MMRESULT WINAPI midiStreamOut(HMIDISTRM hms,LPMIDIHDR pmh,UINT cbmh);
    803   WINMMAPI MMRESULT WINAPI midiStreamPause(HMIDISTRM hms);
    804   WINMMAPI MMRESULT WINAPI midiStreamRestart(HMIDISTRM hms);
    805   WINMMAPI MMRESULT WINAPI midiStreamStop(HMIDISTRM hms);
    806   WINMMAPI MMRESULT WINAPI midiConnect(HMIDI hmi,HMIDIOUT hmo,LPVOID pReserved);
    807   WINMMAPI MMRESULT WINAPI midiDisconnect(HMIDI hmi,HMIDIOUT hmo,LPVOID pReserved);
    808   WINMMAPI MMRESULT WINAPI midiOutGetDevCapsA(UINT_PTR uDeviceID,LPMIDIOUTCAPSA pmoc,UINT cbmoc);
    809   WINMMAPI MMRESULT WINAPI midiOutGetDevCapsW(UINT_PTR uDeviceID,LPMIDIOUTCAPSW pmoc,UINT cbmoc);
    810 
    811 #define midiOutGetDevCaps __MINGW_NAME_AW(midiOutGetDevCaps)
    812 
    813   WINMMAPI MMRESULT WINAPI midiOutGetVolume(HMIDIOUT hmo,LPDWORD pdwVolume);
    814   WINMMAPI MMRESULT WINAPI midiOutSetVolume(HMIDIOUT hmo,DWORD dwVolume);
    815   WINMMAPI MMRESULT WINAPI midiOutGetErrorTextA(MMRESULT mmrError,LPSTR pszText,UINT cchText);
    816   WINMMAPI MMRESULT WINAPI midiOutGetErrorTextW(MMRESULT mmrError,LPWSTR pszText,UINT cchText);
    817 
    818 #define midiOutGetErrorText __MINGW_NAME_AW(midiOutGetErrorText)
    819 
    820   WINMMAPI MMRESULT WINAPI midiOutOpen(LPHMIDIOUT phmo,UINT uDeviceID,DWORD_PTR dwCallback,DWORD_PTR dwInstance,DWORD fdwOpen);
    821   WINMMAPI MMRESULT WINAPI midiOutClose(HMIDIOUT hmo);
    822   WINMMAPI MMRESULT WINAPI midiOutPrepareHeader(HMIDIOUT hmo,LPMIDIHDR pmh,UINT cbmh);
    823   WINMMAPI MMRESULT WINAPI midiOutUnprepareHeader(HMIDIOUT hmo,LPMIDIHDR pmh,UINT cbmh);
    824   WINMMAPI MMRESULT WINAPI midiOutShortMsg(HMIDIOUT hmo,DWORD dwMsg);
    825   WINMMAPI MMRESULT WINAPI midiOutLongMsg(HMIDIOUT hmo,LPMIDIHDR pmh,UINT cbmh);
    826   WINMMAPI MMRESULT WINAPI midiOutReset(HMIDIOUT hmo);
    827   WINMMAPI MMRESULT WINAPI midiOutCachePatches(HMIDIOUT hmo,UINT uBank,LPWORD pwpa,UINT fuCache);
    828   WINMMAPI MMRESULT WINAPI midiOutCacheDrumPatches(HMIDIOUT hmo,UINT uPatch,LPWORD pwkya,UINT fuCache);
    829   WINMMAPI MMRESULT WINAPI midiOutGetID(HMIDIOUT hmo,LPUINT puDeviceID);
    830   WINMMAPI MMRESULT WINAPI midiOutMessage(HMIDIOUT hmo,UINT uMsg,DWORD_PTR dw1,DWORD_PTR dw2);
    831   WINMMAPI UINT WINAPI midiInGetNumDevs(void);
    832   WINMMAPI MMRESULT WINAPI midiInGetDevCapsA(UINT_PTR uDeviceID,LPMIDIINCAPSA pmic,UINT cbmic);
    833   WINMMAPI MMRESULT WINAPI midiInGetDevCapsW(UINT_PTR uDeviceID,LPMIDIINCAPSW pmic,UINT cbmic);
    834 
    835 #define midiInGetDevCaps __MINGW_NAME_AW(midiInGetDevCaps)
    836 
    837   WINMMAPI MMRESULT WINAPI midiInGetErrorTextA(MMRESULT mmrError,LPSTR pszText,UINT cchText);
    838   WINMMAPI MMRESULT WINAPI midiInGetErrorTextW(MMRESULT mmrError,LPWSTR pszText,UINT cchText);
    839 
    840 #define midiInGetErrorText __MINGW_NAME_AW(midiInGetErrorText)
    841 
    842   WINMMAPI MMRESULT WINAPI midiInOpen(LPHMIDIIN phmi,UINT uDeviceID,DWORD_PTR dwCallback,DWORD_PTR dwInstance,DWORD fdwOpen);
    843   WINMMAPI MMRESULT WINAPI midiInClose(HMIDIIN hmi);
    844   WINMMAPI MMRESULT WINAPI midiInPrepareHeader(HMIDIIN hmi,LPMIDIHDR pmh,UINT cbmh);
    845   WINMMAPI MMRESULT WINAPI midiInUnprepareHeader(HMIDIIN hmi,LPMIDIHDR pmh,UINT cbmh);
    846   WINMMAPI MMRESULT WINAPI midiInAddBuffer(HMIDIIN hmi,LPMIDIHDR pmh,UINT cbmh);
    847   WINMMAPI MMRESULT WINAPI midiInStart(HMIDIIN hmi);
    848   WINMMAPI MMRESULT WINAPI midiInStop(HMIDIIN hmi);
    849   WINMMAPI MMRESULT WINAPI midiInReset(HMIDIIN hmi);
    850   WINMMAPI MMRESULT WINAPI midiInGetID(HMIDIIN hmi,LPUINT puDeviceID);
    851   WINMMAPI MMRESULT WINAPI midiInMessage(HMIDIIN hmi,UINT uMsg,DWORD_PTR dw1,DWORD_PTR dw2);
    852 #endif
    853 
    854 #ifndef MMNOAUX
    855 
    856 #define AUX_MAPPER ((UINT)-1)
    857 
    858   typedef struct tagAUXCAPSA {
    859     WORD wMid;
    860     WORD wPid;
    861     MMVERSION vDriverVersion;
    862     CHAR szPname[MAXPNAMELEN];
    863     WORD wTechnology;
    864     WORD wReserved1;
    865     DWORD dwSupport;
    866   } AUXCAPSA,*PAUXCAPSA,*NPAUXCAPSA,*LPAUXCAPSA;
    867 
    868   typedef struct tagAUXCAPSW {
    869     WORD wMid;
    870     WORD wPid;
    871     MMVERSION vDriverVersion;
    872     WCHAR szPname[MAXPNAMELEN];
    873     WORD wTechnology;
    874     WORD wReserved1;
    875     DWORD dwSupport;
    876   } AUXCAPSW,*PAUXCAPSW,*NPAUXCAPSW,*LPAUXCAPSW;
    877 
    878   __MINGW_TYPEDEF_AW(AUXCAPS)
    879   __MINGW_TYPEDEF_AW(PAUXCAPS)
    880   __MINGW_TYPEDEF_AW(NPAUXCAPS)
    881   __MINGW_TYPEDEF_AW(LPAUXCAPS)
    882 
    883   typedef struct tagAUXCAPS2A {
    884     WORD wMid;
    885     WORD wPid;
    886     MMVERSION vDriverVersion;
    887     CHAR szPname[MAXPNAMELEN];
    888     WORD wTechnology;
    889     WORD wReserved1;
    890     DWORD dwSupport;
    891     GUID ManufacturerGuid;
    892     GUID ProductGuid;
    893     GUID NameGuid;
    894   } AUXCAPS2A,*PAUXCAPS2A,*NPAUXCAPS2A,*LPAUXCAPS2A;
    895 
    896   typedef struct tagAUXCAPS2W {
    897     WORD wMid;
    898     WORD wPid;
    899     MMVERSION vDriverVersion;
    900     WCHAR szPname[MAXPNAMELEN];
    901     WORD wTechnology;
    902     WORD wReserved1;
    903     DWORD dwSupport;
    904     GUID ManufacturerGuid;
    905     GUID ProductGuid;
    906     GUID NameGuid;
    907   } AUXCAPS2W,*PAUXCAPS2W,*NPAUXCAPS2W,*LPAUXCAPS2W;
    908 
    909   __MINGW_TYPEDEF_AW(AUXCAPS2)
    910   __MINGW_TYPEDEF_AW(PAUXCAPS2)
    911   __MINGW_TYPEDEF_AW(NPAUXCAPS2)
    912   __MINGW_TYPEDEF_AW(LPAUXCAPS2)
    913 
    914 #define AUXCAPS_CDAUDIO 1
    915 #define AUXCAPS_AUXIN 2
    916 
    917 #define AUXCAPS_VOLUME 0x0001
    918 #define AUXCAPS_LRVOLUME 0x0002
    919 
    920   WINMMAPI UINT WINAPI auxGetNumDevs(void);
    921   WINMMAPI MMRESULT WINAPI auxGetDevCapsA(UINT_PTR uDeviceID,LPAUXCAPSA pac,UINT cbac);
    922   WINMMAPI MMRESULT WINAPI auxGetDevCapsW(UINT_PTR uDeviceID,LPAUXCAPSW pac,UINT cbac);
    923 
    924 #define auxGetDevCaps __MINGW_NAME_AW(auxGetDevCaps)
    925 
    926   WINMMAPI MMRESULT WINAPI auxSetVolume(UINT uDeviceID,DWORD dwVolume);
    927   WINMMAPI MMRESULT WINAPI auxGetVolume(UINT uDeviceID,LPDWORD pdwVolume);
    928   WINMMAPI MMRESULT WINAPI auxOutMessage(UINT uDeviceID,UINT uMsg,DWORD_PTR dw1,DWORD_PTR dw2);
    929 #endif
    930 
    931 #ifndef MMNOMIXER
    932 
    933   DECLARE_HANDLE(HMIXEROBJ);
    934   typedef HMIXEROBJ *LPHMIXEROBJ;
    935 
    936   DECLARE_HANDLE(HMIXER);
    937   typedef HMIXER *LPHMIXER;
    938 
    939 #define MIXER_SHORT_NAME_CHARS 16
    940 #define MIXER_LONG_NAME_CHARS 64
    941 
    942 #define MIXERR_INVALLINE (MIXERR_BASE + 0)
    943 #define MIXERR_INVALCONTROL (MIXERR_BASE + 1)
    944 #define MIXERR_INVALVALUE (MIXERR_BASE + 2)
    945 #define MIXERR_LASTERROR (MIXERR_BASE + 2)
    946 
    947 #define MIXER_OBJECTF_HANDLE __MSABI_LONG(0x80000000)
    948 #define MIXER_OBJECTF_MIXER __MSABI_LONG(0x00000000)
    949 #define MIXER_OBJECTF_HMIXER (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIXER)
    950 #define MIXER_OBJECTF_WAVEOUT __MSABI_LONG(0x10000000)
    951 #define MIXER_OBJECTF_HWAVEOUT (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEOUT)
    952 #define MIXER_OBJECTF_WAVEIN __MSABI_LONG(0x20000000)
    953 #define MIXER_OBJECTF_HWAVEIN (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEIN)
    954 #define MIXER_OBJECTF_MIDIOUT __MSABI_LONG(0x30000000)
    955 #define MIXER_OBJECTF_HMIDIOUT (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIOUT)
    956 #define MIXER_OBJECTF_MIDIIN __MSABI_LONG(0x40000000)
    957 #define MIXER_OBJECTF_HMIDIIN (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIIN)
    958 #define MIXER_OBJECTF_AUX __MSABI_LONG(0x50000000)
    959 
    960   WINMMAPI UINT WINAPI mixerGetNumDevs(void);
    961 
    962   typedef struct tagMIXERCAPSA {
    963     WORD wMid;
    964     WORD wPid;
    965     MMVERSION vDriverVersion;
    966     CHAR szPname[MAXPNAMELEN];
    967     DWORD fdwSupport;
    968     DWORD cDestinations;
    969   } MIXERCAPSA,*PMIXERCAPSA,*LPMIXERCAPSA;
    970 
    971   typedef struct tagMIXERCAPSW {
    972     WORD wMid;
    973     WORD wPid;
    974     MMVERSION vDriverVersion;
    975     WCHAR szPname[MAXPNAMELEN];
    976     DWORD fdwSupport;
    977     DWORD cDestinations;
    978   } MIXERCAPSW,*PMIXERCAPSW,*LPMIXERCAPSW;
    979 
    980   __MINGW_TYPEDEF_AW(MIXERCAPS)
    981   __MINGW_TYPEDEF_AW(PMIXERCAPS)
    982   __MINGW_TYPEDEF_AW(LPMIXERCAPS)
    983 
    984   typedef struct tagMIXERCAPS2A {
    985     WORD wMid;
    986     WORD wPid;
    987     MMVERSION vDriverVersion;
    988     CHAR szPname[MAXPNAMELEN];
    989     DWORD fdwSupport;
    990     DWORD cDestinations;
    991     GUID ManufacturerGuid;
    992     GUID ProductGuid;
    993     GUID NameGuid;
    994   } MIXERCAPS2A,*PMIXERCAPS2A,*LPMIXERCAPS2A;
    995 
    996   typedef struct tagMIXERCAPS2W {
    997     WORD wMid;
    998     WORD wPid;
    999     MMVERSION vDriverVersion;
   1000     WCHAR szPname[MAXPNAMELEN];
   1001     DWORD fdwSupport;
   1002     DWORD cDestinations;
   1003     GUID ManufacturerGuid;
   1004     GUID ProductGuid;
   1005     GUID NameGuid;
   1006   } MIXERCAPS2W,*PMIXERCAPS2W,*LPMIXERCAPS2W;
   1007 
   1008   __MINGW_TYPEDEF_AW(MIXERCAPS2)
   1009   __MINGW_TYPEDEF_AW(PMIXERCAPS2)
   1010   __MINGW_TYPEDEF_AW(LPMIXERCAPS2)
   1011 
   1012   WINMMAPI MMRESULT WINAPI mixerGetDevCapsA(UINT_PTR uMxId,LPMIXERCAPSA pmxcaps,UINT cbmxcaps);
   1013   WINMMAPI MMRESULT WINAPI mixerGetDevCapsW(UINT_PTR uMxId,LPMIXERCAPSW pmxcaps,UINT cbmxcaps);
   1014 
   1015 #define mixerGetDevCaps __MINGW_NAME_AW(mixerGetDevCaps)
   1016 
   1017   WINMMAPI MMRESULT WINAPI mixerOpen(LPHMIXER phmx,UINT uMxId,DWORD_PTR dwCallback,DWORD_PTR dwInstance,DWORD fdwOpen);
   1018   WINMMAPI MMRESULT WINAPI mixerClose(HMIXER hmx);
   1019   WINMMAPI DWORD WINAPI mixerMessage(HMIXER hmx,UINT uMsg,DWORD_PTR dwParam1,DWORD_PTR dwParam2);
   1020 
   1021   typedef struct tagMIXERLINEA {
   1022     DWORD cbStruct;
   1023     DWORD dwDestination;
   1024     DWORD dwSource;
   1025     DWORD dwLineID;
   1026     DWORD fdwLine;
   1027     DWORD_PTR dwUser;
   1028     DWORD dwComponentType;
   1029     DWORD cChannels;
   1030     DWORD cConnections;
   1031     DWORD cControls;
   1032     CHAR szShortName[MIXER_SHORT_NAME_CHARS];
   1033     CHAR szName[MIXER_LONG_NAME_CHARS];
   1034     struct {
   1035       DWORD dwType;
   1036       DWORD dwDeviceID;
   1037       WORD wMid;
   1038       WORD wPid;
   1039       MMVERSION vDriverVersion;
   1040       CHAR szPname[MAXPNAMELEN];
   1041     } Target;
   1042   } MIXERLINEA,*PMIXERLINEA,*LPMIXERLINEA;
   1043 
   1044   typedef struct tagMIXERLINEW {
   1045     DWORD cbStruct;
   1046     DWORD dwDestination;
   1047     DWORD dwSource;
   1048     DWORD dwLineID;
   1049     DWORD fdwLine;
   1050     DWORD_PTR dwUser;
   1051     DWORD dwComponentType;
   1052     DWORD cChannels;
   1053     DWORD cConnections;
   1054     DWORD cControls;
   1055     WCHAR szShortName[MIXER_SHORT_NAME_CHARS];
   1056     WCHAR szName[MIXER_LONG_NAME_CHARS];
   1057     struct {
   1058       DWORD dwType;
   1059       DWORD dwDeviceID;
   1060       WORD wMid;
   1061       WORD wPid;
   1062       MMVERSION vDriverVersion;
   1063       WCHAR szPname[MAXPNAMELEN];
   1064     } Target;
   1065   } MIXERLINEW,*PMIXERLINEW,*LPMIXERLINEW;
   1066 
   1067   __MINGW_TYPEDEF_AW(MIXERLINE)
   1068   __MINGW_TYPEDEF_AW(PMIXERLINE)
   1069   __MINGW_TYPEDEF_AW(LPMIXERLINE)
   1070 
   1071 #define MIXERLINE_LINEF_ACTIVE __MSABI_LONG(0x00000001)
   1072 #define MIXERLINE_LINEF_DISCONNECTED __MSABI_LONG(0x00008000)
   1073 #define MIXERLINE_LINEF_SOURCE __MSABI_LONG(0x80000000)
   1074 
   1075 #define MIXERLINE_COMPONENTTYPE_DST_FIRST __MSABI_LONG(0x0)
   1076 #define MIXERLINE_COMPONENTTYPE_DST_UNDEFINED (MIXERLINE_COMPONENTTYPE_DST_FIRST + 0)
   1077 #define MIXERLINE_COMPONENTTYPE_DST_DIGITAL (MIXERLINE_COMPONENTTYPE_DST_FIRST + 1)
   1078 #define MIXERLINE_COMPONENTTYPE_DST_LINE (MIXERLINE_COMPONENTTYPE_DST_FIRST + 2)
   1079 #define MIXERLINE_COMPONENTTYPE_DST_MONITOR (MIXERLINE_COMPONENTTYPE_DST_FIRST + 3)
   1080 #define MIXERLINE_COMPONENTTYPE_DST_SPEAKERS (MIXERLINE_COMPONENTTYPE_DST_FIRST + 4)
   1081 #define MIXERLINE_COMPONENTTYPE_DST_HEADPHONES (MIXERLINE_COMPONENTTYPE_DST_FIRST + 5)
   1082 #define MIXERLINE_COMPONENTTYPE_DST_TELEPHONE (MIXERLINE_COMPONENTTYPE_DST_FIRST + 6)
   1083 #define MIXERLINE_COMPONENTTYPE_DST_WAVEIN (MIXERLINE_COMPONENTTYPE_DST_FIRST + 7)
   1084 #define MIXERLINE_COMPONENTTYPE_DST_VOICEIN (MIXERLINE_COMPONENTTYPE_DST_FIRST + 8)
   1085 #define MIXERLINE_COMPONENTTYPE_DST_LAST (MIXERLINE_COMPONENTTYPE_DST_FIRST + 8)
   1086 #define MIXERLINE_COMPONENTTYPE_SRC_FIRST __MSABI_LONG(0x00001000)
   1087 #define MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 0)
   1088 #define MIXERLINE_COMPONENTTYPE_SRC_DIGITAL (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 1)
   1089 #define MIXERLINE_COMPONENTTYPE_SRC_LINE (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 2)
   1090 #define MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 3)
   1091 #define MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 4)
   1092 #define MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 5)
   1093 #define MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 6)
   1094 #define MIXERLINE_COMPONENTTYPE_SRC_PCSPEAKER (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 7)
   1095 #define MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 8)
   1096 #define MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 9)
   1097 #define MIXERLINE_COMPONENTTYPE_SRC_ANALOG (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 10)
   1098 #define MIXERLINE_COMPONENTTYPE_SRC_LAST (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 10)
   1099 
   1100 #define MIXERLINE_TARGETTYPE_UNDEFINED 0
   1101 #define MIXERLINE_TARGETTYPE_WAVEOUT 1
   1102 #define MIXERLINE_TARGETTYPE_WAVEIN 2
   1103 #define MIXERLINE_TARGETTYPE_MIDIOUT 3
   1104 #define MIXERLINE_TARGETTYPE_MIDIIN 4
   1105 #define MIXERLINE_TARGETTYPE_AUX 5
   1106 
   1107   WINMMAPI MMRESULT WINAPI mixerGetLineInfoA(HMIXEROBJ hmxobj,LPMIXERLINEA pmxl,DWORD fdwInfo);
   1108   WINMMAPI MMRESULT WINAPI mixerGetLineInfoW(HMIXEROBJ hmxobj,LPMIXERLINEW pmxl,DWORD fdwInfo);
   1109 
   1110 #define mixerGetLineInfo __MINGW_NAME_AW(mixerGetLineInfo)
   1111 
   1112 #define MIXER_GETLINEINFOF_DESTINATION __MSABI_LONG(0x00000000)
   1113 #define MIXER_GETLINEINFOF_SOURCE __MSABI_LONG(0x00000001)
   1114 #define MIXER_GETLINEINFOF_LINEID __MSABI_LONG(0x00000002)
   1115 #define MIXER_GETLINEINFOF_COMPONENTTYPE __MSABI_LONG(0x00000003)
   1116 #define MIXER_GETLINEINFOF_TARGETTYPE __MSABI_LONG(0x00000004)
   1117 
   1118 #define MIXER_GETLINEINFOF_QUERYMASK __MSABI_LONG(0x0000000F)
   1119 
   1120   WINMMAPI MMRESULT WINAPI mixerGetID(HMIXEROBJ hmxobj,UINT *puMxId,DWORD fdwId);
   1121 
   1122   typedef struct tagMIXERCONTROLA {
   1123     DWORD cbStruct;
   1124     DWORD dwControlID;
   1125     DWORD dwControlType;
   1126     DWORD fdwControl;
   1127     DWORD cMultipleItems;
   1128     CHAR szShortName[MIXER_SHORT_NAME_CHARS];
   1129     CHAR szName[MIXER_LONG_NAME_CHARS];
   1130     union {
   1131       __C89_NAMELESS struct {
   1132 	LONG lMinimum;
   1133 	LONG lMaximum;
   1134       } DUMMYSTRUCTNAME;
   1135       __C89_NAMELESS struct {
   1136 	DWORD dwMinimum;
   1137 	DWORD dwMaximum;
   1138       } DUMMYSTRUCTNAME2;
   1139       DWORD dwReserved[6];
   1140     } Bounds;
   1141     union {
   1142       DWORD cSteps;
   1143       DWORD cbCustomData;
   1144       DWORD dwReserved[6];
   1145     } Metrics;
   1146   } MIXERCONTROLA,*PMIXERCONTROLA,*LPMIXERCONTROLA;
   1147 
   1148   typedef struct tagMIXERCONTROLW {
   1149     DWORD cbStruct;
   1150     DWORD dwControlID;
   1151     DWORD dwControlType;
   1152     DWORD fdwControl;
   1153     DWORD cMultipleItems;
   1154     WCHAR szShortName[MIXER_SHORT_NAME_CHARS];
   1155     WCHAR szName[MIXER_LONG_NAME_CHARS];
   1156     union {
   1157       __C89_NAMELESS struct {
   1158 	LONG lMinimum;
   1159 	LONG lMaximum;
   1160       } DUMMYSTRUCTNAME;
   1161       __C89_NAMELESS struct {
   1162 	DWORD dwMinimum;
   1163 	DWORD dwMaximum;
   1164       } DUMMYSTRUCTNAME2;
   1165       DWORD dwReserved[6];
   1166     } Bounds;
   1167     union {
   1168       DWORD cSteps;
   1169       DWORD cbCustomData;
   1170       DWORD dwReserved[6];
   1171     } Metrics;
   1172   } MIXERCONTROLW,*PMIXERCONTROLW,*LPMIXERCONTROLW;
   1173 
   1174   __MINGW_TYPEDEF_AW(MIXERCONTROL)
   1175   __MINGW_TYPEDEF_AW(PMIXERCONTROL)
   1176   __MINGW_TYPEDEF_AW(LPMIXERCONTROL)
   1177 
   1178 #define MIXERCONTROL_CONTROLF_UNIFORM __MSABI_LONG(0x00000001)
   1179 #define MIXERCONTROL_CONTROLF_MULTIPLE __MSABI_LONG(0x00000002)
   1180 #define MIXERCONTROL_CONTROLF_DISABLED __MSABI_LONG(0x80000000)
   1181 
   1182 #define MIXERCONTROL_CT_CLASS_MASK __MSABI_LONG(0xF0000000)
   1183 #define MIXERCONTROL_CT_CLASS_CUSTOM __MSABI_LONG(0x00000000)
   1184 #define MIXERCONTROL_CT_CLASS_METER __MSABI_LONG(0x10000000)
   1185 #define MIXERCONTROL_CT_CLASS_SWITCH __MSABI_LONG(0x20000000)
   1186 #define MIXERCONTROL_CT_CLASS_NUMBER __MSABI_LONG(0x30000000)
   1187 #define MIXERCONTROL_CT_CLASS_SLIDER __MSABI_LONG(0x40000000)
   1188 #define MIXERCONTROL_CT_CLASS_FADER __MSABI_LONG(0x50000000)
   1189 #define MIXERCONTROL_CT_CLASS_TIME __MSABI_LONG(0x60000000)
   1190 #define MIXERCONTROL_CT_CLASS_LIST __MSABI_LONG(0x70000000)
   1191 
   1192 #define MIXERCONTROL_CT_SUBCLASS_MASK __MSABI_LONG(0x0F000000)
   1193 
   1194 #define MIXERCONTROL_CT_SC_SWITCH_BOOLEAN __MSABI_LONG(0x00000000)
   1195 #define MIXERCONTROL_CT_SC_SWITCH_BUTTON __MSABI_LONG(0x01000000)
   1196 
   1197 #define MIXERCONTROL_CT_SC_METER_POLLED __MSABI_LONG(0x00000000)
   1198 
   1199 #define MIXERCONTROL_CT_SC_TIME_MICROSECS __MSABI_LONG(0x00000000)
   1200 #define MIXERCONTROL_CT_SC_TIME_MILLISECS __MSABI_LONG(0x01000000)
   1201 
   1202 #define MIXERCONTROL_CT_SC_LIST_SINGLE __MSABI_LONG(0x00000000)
   1203 #define MIXERCONTROL_CT_SC_LIST_MULTIPLE __MSABI_LONG(0x01000000)
   1204 
   1205 #define MIXERCONTROL_CT_UNITS_MASK __MSABI_LONG(0x00FF0000)
   1206 #define MIXERCONTROL_CT_UNITS_CUSTOM __MSABI_LONG(0x00000000)
   1207 #define MIXERCONTROL_CT_UNITS_BOOLEAN __MSABI_LONG(0x00010000)
   1208 #define MIXERCONTROL_CT_UNITS_SIGNED __MSABI_LONG(0x00020000)
   1209 #define MIXERCONTROL_CT_UNITS_UNSIGNED __MSABI_LONG(0x00030000)
   1210 #define MIXERCONTROL_CT_UNITS_DECIBELS __MSABI_LONG(0x00040000)
   1211 #define MIXERCONTROL_CT_UNITS_PERCENT __MSABI_LONG(0x00050000)
   1212 
   1213 #define MIXERCONTROL_CONTROLTYPE_CUSTOM (MIXERCONTROL_CT_CLASS_CUSTOM | MIXERCONTROL_CT_UNITS_CUSTOM)
   1214 #define MIXERCONTROL_CONTROLTYPE_BOOLEANMETER (MIXERCONTROL_CT_CLASS_METER | MIXERCONTROL_CT_SC_METER_POLLED | MIXERCONTROL_CT_UNITS_BOOLEAN)
   1215 #define MIXERCONTROL_CONTROLTYPE_SIGNEDMETER (MIXERCONTROL_CT_CLASS_METER | MIXERCONTROL_CT_SC_METER_POLLED | MIXERCONTROL_CT_UNITS_SIGNED)
   1216 #define MIXERCONTROL_CONTROLTYPE_PEAKMETER (MIXERCONTROL_CONTROLTYPE_SIGNEDMETER + 1)
   1217 #define MIXERCONTROL_CONTROLTYPE_UNSIGNEDMETER (MIXERCONTROL_CT_CLASS_METER | MIXERCONTROL_CT_SC_METER_POLLED | MIXERCONTROL_CT_UNITS_UNSIGNED)
   1218 #define MIXERCONTROL_CONTROLTYPE_BOOLEAN (MIXERCONTROL_CT_CLASS_SWITCH | MIXERCONTROL_CT_SC_SWITCH_BOOLEAN | MIXERCONTROL_CT_UNITS_BOOLEAN)
   1219 #define MIXERCONTROL_CONTROLTYPE_ONOFF (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 1)
   1220 #define MIXERCONTROL_CONTROLTYPE_MUTE (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 2)
   1221 #define MIXERCONTROL_CONTROLTYPE_MONO (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 3)
   1222 #define MIXERCONTROL_CONTROLTYPE_LOUDNESS (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 4)
   1223 #define MIXERCONTROL_CONTROLTYPE_STEREOENH (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 5)
   1224 #define MIXERCONTROL_CONTROLTYPE_BASS_BOOST (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 0x00002277)
   1225 #define MIXERCONTROL_CONTROLTYPE_BUTTON (MIXERCONTROL_CT_CLASS_SWITCH | MIXERCONTROL_CT_SC_SWITCH_BUTTON | MIXERCONTROL_CT_UNITS_BOOLEAN)
   1226 #define MIXERCONTROL_CONTROLTYPE_DECIBELS (MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_DECIBELS)
   1227 #define MIXERCONTROL_CONTROLTYPE_SIGNED (MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_SIGNED)
   1228 #define MIXERCONTROL_CONTROLTYPE_UNSIGNED (MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_UNSIGNED)
   1229 #define MIXERCONTROL_CONTROLTYPE_PERCENT (MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_PERCENT)
   1230 #define MIXERCONTROL_CONTROLTYPE_SLIDER (MIXERCONTROL_CT_CLASS_SLIDER | MIXERCONTROL_CT_UNITS_SIGNED)
   1231 #define MIXERCONTROL_CONTROLTYPE_PAN (MIXERCONTROL_CONTROLTYPE_SLIDER + 1)
   1232 #define MIXERCONTROL_CONTROLTYPE_QSOUNDPAN (MIXERCONTROL_CONTROLTYPE_SLIDER + 2)
   1233 #define MIXERCONTROL_CONTROLTYPE_FADER (MIXERCONTROL_CT_CLASS_FADER | MIXERCONTROL_CT_UNITS_UNSIGNED)
   1234 #define MIXERCONTROL_CONTROLTYPE_VOLUME (MIXERCONTROL_CONTROLTYPE_FADER + 1)
   1235 #define MIXERCONTROL_CONTROLTYPE_BASS (MIXERCONTROL_CONTROLTYPE_FADER + 2)
   1236 #define MIXERCONTROL_CONTROLTYPE_TREBLE (MIXERCONTROL_CONTROLTYPE_FADER + 3)
   1237 #define MIXERCONTROL_CONTROLTYPE_EQUALIZER (MIXERCONTROL_CONTROLTYPE_FADER + 4)
   1238 #define MIXERCONTROL_CONTROLTYPE_SINGLESELECT (MIXERCONTROL_CT_CLASS_LIST | MIXERCONTROL_CT_SC_LIST_SINGLE | MIXERCONTROL_CT_UNITS_BOOLEAN)
   1239 #define MIXERCONTROL_CONTROLTYPE_MUX (MIXERCONTROL_CONTROLTYPE_SINGLESELECT + 1)
   1240 #define MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT (MIXERCONTROL_CT_CLASS_LIST | MIXERCONTROL_CT_SC_LIST_MULTIPLE | MIXERCONTROL_CT_UNITS_BOOLEAN)
   1241 #define MIXERCONTROL_CONTROLTYPE_MIXER (MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT + 1)
   1242 #define MIXERCONTROL_CONTROLTYPE_MICROTIME (MIXERCONTROL_CT_CLASS_TIME | MIXERCONTROL_CT_SC_TIME_MICROSECS | MIXERCONTROL_CT_UNITS_UNSIGNED)
   1243 #define MIXERCONTROL_CONTROLTYPE_MILLITIME (MIXERCONTROL_CT_CLASS_TIME | MIXERCONTROL_CT_SC_TIME_MILLISECS | MIXERCONTROL_CT_UNITS_UNSIGNED)
   1244 
   1245   typedef struct tagMIXERLINECONTROLSA {
   1246     DWORD cbStruct;
   1247     DWORD dwLineID;
   1248     __C89_NAMELESS union {
   1249       DWORD dwControlID;
   1250       DWORD dwControlType;
   1251     } DUMMYUNIONNAME;
   1252     DWORD cControls;
   1253     DWORD cbmxctrl;
   1254     LPMIXERCONTROLA pamxctrl;
   1255   } MIXERLINECONTROLSA,*PMIXERLINECONTROLSA,*LPMIXERLINECONTROLSA;
   1256 
   1257   typedef struct tagMIXERLINECONTROLSW {
   1258     DWORD cbStruct;
   1259     DWORD dwLineID;
   1260     __C89_NAMELESS union {
   1261       DWORD dwControlID;
   1262       DWORD dwControlType;
   1263     } DUMMYUNIONNAME;
   1264     DWORD cControls;
   1265     DWORD cbmxctrl;
   1266     LPMIXERCONTROLW pamxctrl;
   1267   } MIXERLINECONTROLSW,*PMIXERLINECONTROLSW,*LPMIXERLINECONTROLSW;
   1268 
   1269   __MINGW_TYPEDEF_AW(MIXERLINECONTROLS)
   1270   __MINGW_TYPEDEF_AW(PMIXERLINECONTROLS)
   1271   __MINGW_TYPEDEF_AW(LPMIXERLINECONTROLS)
   1272 
   1273   WINMMAPI MMRESULT WINAPI mixerGetLineControlsA(HMIXEROBJ hmxobj,LPMIXERLINECONTROLSA pmxlc,DWORD fdwControls);
   1274   WINMMAPI MMRESULT WINAPI mixerGetLineControlsW(HMIXEROBJ hmxobj,LPMIXERLINECONTROLSW pmxlc,DWORD fdwControls);
   1275 
   1276 #define mixerGetLineControls __MINGW_NAME_AW(mixerGetLineControls)
   1277 
   1278 #define MIXER_GETLINECONTROLSF_ALL __MSABI_LONG(0x00000000)
   1279 #define MIXER_GETLINECONTROLSF_ONEBYID __MSABI_LONG(0x00000001)
   1280 #define MIXER_GETLINECONTROLSF_ONEBYTYPE __MSABI_LONG(0x00000002)
   1281 
   1282 #define MIXER_GETLINECONTROLSF_QUERYMASK __MSABI_LONG(0x0000000F)
   1283 
   1284   typedef struct tMIXERCONTROLDETAILS {
   1285     DWORD cbStruct;
   1286     DWORD dwControlID;
   1287     DWORD cChannels;
   1288     __C89_NAMELESS union {
   1289       HWND hwndOwner;
   1290       DWORD cMultipleItems;
   1291     } DUMMYUNIONNAME;
   1292     DWORD cbDetails;
   1293     LPVOID paDetails;
   1294   } MIXERCONTROLDETAILS,*PMIXERCONTROLDETAILS,*LPMIXERCONTROLDETAILS;
   1295 
   1296   typedef struct tagMIXERCONTROLDETAILS_LISTTEXTA {
   1297     DWORD dwParam1;
   1298     DWORD dwParam2;
   1299     CHAR szName[MIXER_LONG_NAME_CHARS];
   1300   } MIXERCONTROLDETAILS_LISTTEXTA,*PMIXERCONTROLDETAILS_LISTTEXTA,*LPMIXERCONTROLDETAILS_LISTTEXTA;
   1301   typedef struct tagMIXERCONTROLDETAILS_LISTTEXTW {
   1302     DWORD dwParam1;
   1303     DWORD dwParam2;
   1304     WCHAR szName[MIXER_LONG_NAME_CHARS];
   1305   } MIXERCONTROLDETAILS_LISTTEXTW,*PMIXERCONTROLDETAILS_LISTTEXTW,*LPMIXERCONTROLDETAILS_LISTTEXTW;
   1306 
   1307   __MINGW_TYPEDEF_AW(MIXERCONTROLDETAILS_LISTTEXT)
   1308   __MINGW_TYPEDEF_AW(PMIXERCONTROLDETAILS_LISTTEXT)
   1309   __MINGW_TYPEDEF_AW(LPMIXERCONTROLDETAILS_LISTTEXT)
   1310 
   1311   typedef struct tMIXERCONTROLDETAILS_BOOLEAN {
   1312     LONG fValue;
   1313   } MIXERCONTROLDETAILS_BOOLEAN,*PMIXERCONTROLDETAILS_BOOLEAN,*LPMIXERCONTROLDETAILS_BOOLEAN;
   1314 
   1315   typedef struct tMIXERCONTROLDETAILS_SIGNED {
   1316     LONG lValue;
   1317   } MIXERCONTROLDETAILS_SIGNED,*PMIXERCONTROLDETAILS_SIGNED,*LPMIXERCONTROLDETAILS_SIGNED;
   1318 
   1319   typedef struct tMIXERCONTROLDETAILS_UNSIGNED {
   1320     DWORD dwValue;
   1321   } MIXERCONTROLDETAILS_UNSIGNED,*PMIXERCONTROLDETAILS_UNSIGNED,*LPMIXERCONTROLDETAILS_UNSIGNED;
   1322 
   1323   WINMMAPI MMRESULT WINAPI mixerGetControlDetailsA(HMIXEROBJ hmxobj,LPMIXERCONTROLDETAILS pmxcd,DWORD fdwDetails);
   1324   WINMMAPI MMRESULT WINAPI mixerGetControlDetailsW(HMIXEROBJ hmxobj,LPMIXERCONTROLDETAILS pmxcd,DWORD fdwDetails);
   1325 
   1326 #define mixerGetControlDetails __MINGW_NAME_AW(mixerGetControlDetails)
   1327 
   1328 #define MIXER_GETCONTROLDETAILSF_VALUE __MSABI_LONG(0x00000000)
   1329 #define MIXER_GETCONTROLDETAILSF_LISTTEXT __MSABI_LONG(0x00000001)
   1330 
   1331 #define MIXER_GETCONTROLDETAILSF_QUERYMASK __MSABI_LONG(0x0000000F)
   1332 
   1333   WINMMAPI MMRESULT WINAPI mixerSetControlDetails(HMIXEROBJ hmxobj,LPMIXERCONTROLDETAILS pmxcd,DWORD fdwDetails);
   1334 
   1335 #define MIXER_SETCONTROLDETAILSF_VALUE __MSABI_LONG(0x00000000)
   1336 #define MIXER_SETCONTROLDETAILSF_CUSTOM __MSABI_LONG(0x00000001)
   1337 
   1338 #define MIXER_SETCONTROLDETAILSF_QUERYMASK __MSABI_LONG(0x0000000F)
   1339 #endif
   1340 
   1341 #ifndef MMNOTIMER
   1342 
   1343 #define TIMERR_NOERROR (0)
   1344 #define TIMERR_NOCANDO (TIMERR_BASE+1)
   1345 #define TIMERR_STRUCT (TIMERR_BASE+33)
   1346 
   1347   typedef void (CALLBACK TIMECALLBACK)(UINT uTimerID,UINT uMsg,DWORD_PTR dwUser,DWORD_PTR dw1,DWORD_PTR dw2);
   1348   typedef TIMECALLBACK *LPTIMECALLBACK;
   1349 
   1350 #define TIME_ONESHOT 0x0000
   1351 #define TIME_PERIODIC 0x0001
   1352 
   1353 #define TIME_CALLBACK_FUNCTION 0x0000
   1354 #define TIME_CALLBACK_EVENT_SET 0x0010
   1355 #define TIME_CALLBACK_EVENT_PULSE 0x0020
   1356 #define TIME_KILL_SYNCHRONOUS 0x0100
   1357 
   1358   typedef struct timecaps_tag {
   1359     UINT wPeriodMin;
   1360     UINT wPeriodMax;
   1361   } TIMECAPS,*PTIMECAPS,NEAR *NPTIMECAPS,*LPTIMECAPS;
   1362 
   1363   WINMMAPI MMRESULT WINAPI timeGetSystemTime(LPMMTIME pmmt,UINT cbmmt);
   1364   WINMMAPI DWORD WINAPI timeGetTime(void);
   1365   WINMMAPI MMRESULT WINAPI timeSetEvent(UINT uDelay,UINT uResolution,LPTIMECALLBACK fptc,DWORD_PTR dwUser,UINT fuEvent);
   1366   WINMMAPI MMRESULT WINAPI timeKillEvent(UINT uTimerID);
   1367   WINMMAPI MMRESULT WINAPI timeGetDevCaps(LPTIMECAPS ptc,UINT cbtc);
   1368   WINMMAPI MMRESULT WINAPI timeBeginPeriod(UINT uPeriod);
   1369   WINMMAPI MMRESULT WINAPI timeEndPeriod(UINT uPeriod);
   1370 #endif
   1371 
   1372 #ifndef MMNOJOY
   1373 
   1374 #define JOYERR_NOERROR (0)
   1375 #define JOYERR_PARMS (JOYERR_BASE+5)
   1376 #define JOYERR_NOCANDO (JOYERR_BASE+6)
   1377 #define JOYERR_UNPLUGGED (JOYERR_BASE+7)
   1378 
   1379 #define JOY_BUTTON1 0x0001
   1380 #define JOY_BUTTON2 0x0002
   1381 #define JOY_BUTTON3 0x0004
   1382 #define JOY_BUTTON4 0x0008
   1383 #define JOY_BUTTON1CHG 0x0100
   1384 #define JOY_BUTTON2CHG 0x0200
   1385 #define JOY_BUTTON3CHG 0x0400
   1386 #define JOY_BUTTON4CHG 0x0800
   1387 
   1388 #define JOY_BUTTON5 __MSABI_LONG(0x00000010)
   1389 #define JOY_BUTTON6 __MSABI_LONG(0x00000020)
   1390 #define JOY_BUTTON7 __MSABI_LONG(0x00000040)
   1391 #define JOY_BUTTON8 __MSABI_LONG(0x00000080)
   1392 #define JOY_BUTTON9 __MSABI_LONG(0x00000100)
   1393 #define JOY_BUTTON10 __MSABI_LONG(0x00000200)
   1394 #define JOY_BUTTON11 __MSABI_LONG(0x00000400)
   1395 #define JOY_BUTTON12 __MSABI_LONG(0x00000800)
   1396 #define JOY_BUTTON13 __MSABI_LONG(0x00001000)
   1397 #define JOY_BUTTON14 __MSABI_LONG(0x00002000)
   1398 #define JOY_BUTTON15 __MSABI_LONG(0x00004000)
   1399 #define JOY_BUTTON16 __MSABI_LONG(0x00008000)
   1400 #define JOY_BUTTON17 __MSABI_LONG(0x00010000)
   1401 #define JOY_BUTTON18 __MSABI_LONG(0x00020000)
   1402 #define JOY_BUTTON19 __MSABI_LONG(0x00040000)
   1403 #define JOY_BUTTON20 __MSABI_LONG(0x00080000)
   1404 #define JOY_BUTTON21 __MSABI_LONG(0x00100000)
   1405 #define JOY_BUTTON22 __MSABI_LONG(0x00200000)
   1406 #define JOY_BUTTON23 __MSABI_LONG(0x00400000)
   1407 #define JOY_BUTTON24 __MSABI_LONG(0x00800000)
   1408 #define JOY_BUTTON25 __MSABI_LONG(0x01000000)
   1409 #define JOY_BUTTON26 __MSABI_LONG(0x02000000)
   1410 #define JOY_BUTTON27 __MSABI_LONG(0x04000000)
   1411 #define JOY_BUTTON28 __MSABI_LONG(0x08000000)
   1412 #define JOY_BUTTON29 __MSABI_LONG(0x10000000)
   1413 #define JOY_BUTTON30 __MSABI_LONG(0x20000000)
   1414 #define JOY_BUTTON31 __MSABI_LONG(0x40000000)
   1415 #define JOY_BUTTON32 __MSABI_LONG(0x80000000)
   1416 
   1417 #define JOY_POVCENTERED (WORD) -1
   1418 #define JOY_POVFORWARD 0
   1419 #define JOY_POVRIGHT 9000
   1420 #define JOY_POVBACKWARD 18000
   1421 #define JOY_POVLEFT 27000
   1422 
   1423 #define JOY_RETURNX __MSABI_LONG(0x00000001)
   1424 #define JOY_RETURNY __MSABI_LONG(0x00000002)
   1425 #define JOY_RETURNZ __MSABI_LONG(0x00000004)
   1426 #define JOY_RETURNR __MSABI_LONG(0x00000008)
   1427 #define JOY_RETURNU __MSABI_LONG(0x00000010)
   1428 #define JOY_RETURNV __MSABI_LONG(0x00000020)
   1429 #define JOY_RETURNPOV __MSABI_LONG(0x00000040)
   1430 #define JOY_RETURNBUTTONS __MSABI_LONG(0x00000080)
   1431 #define JOY_RETURNRAWDATA __MSABI_LONG(0x00000100)
   1432 #define JOY_RETURNPOVCTS __MSABI_LONG(0x00000200)
   1433 #define JOY_RETURNCENTERED __MSABI_LONG(0x00000400)
   1434 #define JOY_USEDEADZONE __MSABI_LONG(0x00000800)
   1435 #define JOY_RETURNALL (JOY_RETURNX | JOY_RETURNY | JOY_RETURNZ | JOY_RETURNR | JOY_RETURNU | JOY_RETURNV | JOY_RETURNPOV | JOY_RETURNBUTTONS)
   1436 #define JOY_CAL_READALWAYS __MSABI_LONG(0x00010000)
   1437 #define JOY_CAL_READXYONLY __MSABI_LONG(0x00020000)
   1438 #define JOY_CAL_READ3 __MSABI_LONG(0x00040000)
   1439 #define JOY_CAL_READ4 __MSABI_LONG(0x00080000)
   1440 #define JOY_CAL_READXONLY __MSABI_LONG(0x00100000)
   1441 #define JOY_CAL_READYONLY __MSABI_LONG(0x00200000)
   1442 #define JOY_CAL_READ5 __MSABI_LONG(0x00400000)
   1443 #define JOY_CAL_READ6 __MSABI_LONG(0x00800000)
   1444 #define JOY_CAL_READZONLY __MSABI_LONG(0x01000000)
   1445 #define JOY_CAL_READRONLY __MSABI_LONG(0x02000000)
   1446 #define JOY_CAL_READUONLY __MSABI_LONG(0x04000000)
   1447 #define JOY_CAL_READVONLY __MSABI_LONG(0x08000000)
   1448 
   1449 #define JOYSTICKID1 0
   1450 #define JOYSTICKID2 1
   1451 
   1452 #define JOYCAPS_HASZ 0x0001
   1453 #define JOYCAPS_HASR 0x0002
   1454 #define JOYCAPS_HASU 0x0004
   1455 #define JOYCAPS_HASV 0x0008
   1456 #define JOYCAPS_HASPOV 0x0010
   1457 #define JOYCAPS_POV4DIR 0x0020
   1458 #define JOYCAPS_POVCTS 0x0040
   1459 
   1460   typedef struct tagJOYCAPSA {
   1461     WORD wMid;
   1462     WORD wPid;
   1463     CHAR szPname[MAXPNAMELEN];
   1464     UINT wXmin;
   1465     UINT wXmax;
   1466     UINT wYmin;
   1467     UINT wYmax;
   1468     UINT wZmin;
   1469     UINT wZmax;
   1470     UINT wNumButtons;
   1471     UINT wPeriodMin;
   1472     UINT wPeriodMax;
   1473     UINT wRmin;
   1474     UINT wRmax;
   1475     UINT wUmin;
   1476     UINT wUmax;
   1477     UINT wVmin;
   1478     UINT wVmax;
   1479     UINT wCaps;
   1480     UINT wMaxAxes;
   1481     UINT wNumAxes;
   1482     UINT wMaxButtons;
   1483     CHAR szRegKey[MAXPNAMELEN];
   1484     CHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME];
   1485   } JOYCAPSA,*PJOYCAPSA,*NPJOYCAPSA,*LPJOYCAPSA;
   1486 
   1487   typedef struct tagJOYCAPSW {
   1488     WORD wMid;
   1489     WORD wPid;
   1490     WCHAR szPname[MAXPNAMELEN];
   1491     UINT wXmin;
   1492     UINT wXmax;
   1493     UINT wYmin;
   1494     UINT wYmax;
   1495     UINT wZmin;
   1496     UINT wZmax;
   1497     UINT wNumButtons;
   1498     UINT wPeriodMin;
   1499     UINT wPeriodMax;
   1500     UINT wRmin;
   1501     UINT wRmax;
   1502     UINT wUmin;
   1503     UINT wUmax;
   1504     UINT wVmin;
   1505     UINT wVmax;
   1506     UINT wCaps;
   1507     UINT wMaxAxes;
   1508     UINT wNumAxes;
   1509     UINT wMaxButtons;
   1510     WCHAR szRegKey[MAXPNAMELEN];
   1511     WCHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME];
   1512   } JOYCAPSW,*PJOYCAPSW,*NPJOYCAPSW,*LPJOYCAPSW;
   1513 
   1514   __MINGW_TYPEDEF_AW(JOYCAPS)
   1515   __MINGW_TYPEDEF_AW(PJOYCAPS)
   1516   __MINGW_TYPEDEF_AW(NPJOYCAPS)
   1517   __MINGW_TYPEDEF_AW(LPJOYCAPS)
   1518 
   1519   typedef struct tagJOYCAPS2A {
   1520     WORD wMid;
   1521     WORD wPid;
   1522     CHAR szPname[MAXPNAMELEN];
   1523     UINT wXmin;
   1524     UINT wXmax;
   1525     UINT wYmin;
   1526     UINT wYmax;
   1527     UINT wZmin;
   1528     UINT wZmax;
   1529     UINT wNumButtons;
   1530     UINT wPeriodMin;
   1531     UINT wPeriodMax;
   1532     UINT wRmin;
   1533     UINT wRmax;
   1534     UINT wUmin;
   1535     UINT wUmax;
   1536     UINT wVmin;
   1537     UINT wVmax;
   1538     UINT wCaps;
   1539     UINT wMaxAxes;
   1540     UINT wNumAxes;
   1541     UINT wMaxButtons;
   1542     CHAR szRegKey[MAXPNAMELEN];
   1543     CHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME];
   1544     GUID ManufacturerGuid;
   1545     GUID ProductGuid;
   1546     GUID NameGuid;
   1547   } JOYCAPS2A,*PJOYCAPS2A,*NPJOYCAPS2A,*LPJOYCAPS2A;
   1548 
   1549   typedef struct tagJOYCAPS2W {
   1550     WORD wMid;
   1551     WORD wPid;
   1552     WCHAR szPname[MAXPNAMELEN];
   1553     UINT wXmin;
   1554     UINT wXmax;
   1555     UINT wYmin;
   1556     UINT wYmax;
   1557     UINT wZmin;
   1558     UINT wZmax;
   1559     UINT wNumButtons;
   1560     UINT wPeriodMin;
   1561     UINT wPeriodMax;
   1562     UINT wRmin;
   1563     UINT wRmax;
   1564     UINT wUmin;
   1565     UINT wUmax;
   1566     UINT wVmin;
   1567     UINT wVmax;
   1568     UINT wCaps;
   1569     UINT wMaxAxes;
   1570     UINT wNumAxes;
   1571     UINT wMaxButtons;
   1572     WCHAR szRegKey[MAXPNAMELEN];
   1573     WCHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME];
   1574     GUID ManufacturerGuid;
   1575     GUID ProductGuid;
   1576     GUID NameGuid;
   1577   } JOYCAPS2W,*PJOYCAPS2W,*NPJOYCAPS2W,*LPJOYCAPS2W;
   1578 
   1579   __MINGW_TYPEDEF_AW(JOYCAPS2)
   1580   __MINGW_TYPEDEF_AW(PJOYCAPS2)
   1581   __MINGW_TYPEDEF_AW(NPJOYCAPS2)
   1582   __MINGW_TYPEDEF_AW(LPJOYCAPS2)
   1583 
   1584   typedef struct joyinfo_tag {
   1585     UINT wXpos;
   1586     UINT wYpos;
   1587     UINT wZpos;
   1588     UINT wButtons;
   1589   } JOYINFO,*PJOYINFO,NEAR *NPJOYINFO,*LPJOYINFO;
   1590 
   1591   typedef struct joyinfoex_tag {
   1592     DWORD dwSize;
   1593     DWORD dwFlags;
   1594     DWORD dwXpos;
   1595     DWORD dwYpos;
   1596     DWORD dwZpos;
   1597     DWORD dwRpos;
   1598     DWORD dwUpos;
   1599     DWORD dwVpos;
   1600     DWORD dwButtons;
   1601     DWORD dwButtonNumber;
   1602     DWORD dwPOV;
   1603     DWORD dwReserved1;
   1604     DWORD dwReserved2;
   1605   } JOYINFOEX,*PJOYINFOEX,NEAR *NPJOYINFOEX,*LPJOYINFOEX;
   1606 
   1607   WINMMAPI UINT WINAPI joyGetNumDevs(void);
   1608   WINMMAPI MMRESULT WINAPI joyGetDevCapsA(UINT_PTR uJoyID,LPJOYCAPSA pjc,UINT cbjc);
   1609   WINMMAPI MMRESULT WINAPI joyGetDevCapsW(UINT_PTR uJoyID,LPJOYCAPSW pjc,UINT cbjc);
   1610 
   1611 #define joyGetDevCaps __MINGW_NAME_AW(joyGetDevCaps)
   1612 
   1613   WINMMAPI MMRESULT WINAPI joyGetPos(UINT uJoyID,LPJOYINFO pji);
   1614   WINMMAPI MMRESULT WINAPI joyGetPosEx(UINT uJoyID,LPJOYINFOEX pji);
   1615   WINMMAPI MMRESULT WINAPI joyGetThreshold(UINT uJoyID,LPUINT puThreshold);
   1616   WINMMAPI MMRESULT WINAPI joyReleaseCapture(UINT uJoyID);
   1617   WINMMAPI MMRESULT WINAPI joySetCapture(HWND hwnd,UINT uJoyID,UINT uPeriod,WINBOOL fChanged);
   1618   WINMMAPI MMRESULT WINAPI joySetThreshold(UINT uJoyID,UINT uThreshold);
   1619 #endif
   1620 
   1621 #ifndef MMNOMMIO
   1622 
   1623 #define MMIOERR_BASE 256
   1624 #define MMIOERR_FILENOTFOUND (MMIOERR_BASE + 1)
   1625 #define MMIOERR_OUTOFMEMORY (MMIOERR_BASE + 2)
   1626 #define MMIOERR_CANNOTOPEN (MMIOERR_BASE + 3)
   1627 #define MMIOERR_CANNOTCLOSE (MMIOERR_BASE + 4)
   1628 #define MMIOERR_CANNOTREAD (MMIOERR_BASE + 5)
   1629 #define MMIOERR_CANNOTWRITE (MMIOERR_BASE + 6)
   1630 #define MMIOERR_CANNOTSEEK (MMIOERR_BASE + 7)
   1631 #define MMIOERR_CANNOTEXPAND (MMIOERR_BASE + 8)
   1632 #define MMIOERR_CHUNKNOTFOUND (MMIOERR_BASE + 9)
   1633 #define MMIOERR_UNBUFFERED (MMIOERR_BASE + 10)
   1634 #define MMIOERR_PATHNOTFOUND (MMIOERR_BASE + 11)
   1635 #define MMIOERR_ACCESSDENIED (MMIOERR_BASE + 12)
   1636 #define MMIOERR_SHARINGVIOLATION (MMIOERR_BASE + 13)
   1637 #define MMIOERR_NETWORKERROR (MMIOERR_BASE + 14)
   1638 #define MMIOERR_TOOMANYOPENFILES (MMIOERR_BASE + 15)
   1639 #define MMIOERR_INVALIDFILE (MMIOERR_BASE + 16)
   1640 
   1641 #define CFSEPCHAR '+'
   1642 
   1643   typedef DWORD FOURCC;
   1644   typedef char _huge *HPSTR;
   1645   DECLARE_HANDLE(HMMIO);
   1646   typedef LRESULT (CALLBACK MMIOPROC)(LPSTR lpmmioinfo,UINT uMsg,LPARAM lParam1,LPARAM lParam2);
   1647   typedef MMIOPROC *LPMMIOPROC;
   1648 
   1649   typedef struct _MMIOINFO {
   1650     DWORD dwFlags;
   1651     FOURCC fccIOProc;
   1652     LPMMIOPROC pIOProc;
   1653     UINT wErrorRet;
   1654     HTASK htask;
   1655     LONG cchBuffer;
   1656     HPSTR pchBuffer;
   1657     HPSTR pchNext;
   1658     HPSTR pchEndRead;
   1659     HPSTR pchEndWrite;
   1660     LONG lBufOffset;
   1661     LONG lDiskOffset;
   1662     DWORD adwInfo[3];
   1663     DWORD dwReserved1;
   1664     DWORD dwReserved2;
   1665     HMMIO hmmio;
   1666   } MMIOINFO,*PMMIOINFO,NEAR *NPMMIOINFO,*LPMMIOINFO;
   1667 
   1668   typedef const MMIOINFO *LPCMMIOINFO;
   1669 
   1670   typedef struct _MMCKINFO {
   1671     FOURCC ckid;
   1672     DWORD cksize;
   1673     FOURCC fccType;
   1674     DWORD dwDataOffset;
   1675     DWORD dwFlags;
   1676   } MMCKINFO,*PMMCKINFO,NEAR *NPMMCKINFO,*LPMMCKINFO;
   1677 
   1678   typedef const MMCKINFO *LPCMMCKINFO;
   1679 
   1680 #define MMIO_RWMODE 0x00000003
   1681 #define MMIO_SHAREMODE 0x00000070
   1682 
   1683 #define MMIO_CREATE 0x00001000
   1684 #define MMIO_PARSE 0x00000100
   1685 #define MMIO_DELETE 0x00000200
   1686 #define MMIO_EXIST 0x00004000
   1687 #define MMIO_ALLOCBUF 0x00010000
   1688 #define MMIO_GETTEMP 0x00020000
   1689 
   1690 #define MMIO_DIRTY 0x10000000
   1691 
   1692 #define MMIO_READ 0x00000000
   1693 #define MMIO_WRITE 0x00000001
   1694 #define MMIO_READWRITE 0x00000002
   1695 
   1696 #define MMIO_COMPAT 0x00000000
   1697 #define MMIO_EXCLUSIVE 0x00000010
   1698 #define MMIO_DENYWRITE 0x00000020
   1699 #define MMIO_DENYREAD 0x00000030
   1700 #define MMIO_DENYNONE 0x00000040
   1701 
   1702 #define MMIO_FHOPEN 0x0010
   1703 #define MMIO_EMPTYBUF 0x0010
   1704 #define MMIO_TOUPPER 0x0010
   1705 #define MMIO_INSTALLPROC 0x00010000
   1706 #define MMIO_GLOBALPROC 0x10000000
   1707 #define MMIO_REMOVEPROC 0x00020000
   1708 #define MMIO_UNICODEPROC 0x01000000
   1709 #define MMIO_FINDPROC 0x00040000
   1710 #define MMIO_FINDCHUNK 0x0010
   1711 #define MMIO_FINDRIFF 0x0020
   1712 #define MMIO_FINDLIST 0x0040
   1713 #define MMIO_CREATERIFF 0x0020
   1714 #define MMIO_CREATELIST 0x0040
   1715 
   1716 #define MMIOM_READ MMIO_READ
   1717 #define MMIOM_WRITE MMIO_WRITE
   1718 #define MMIOM_SEEK 2
   1719 #define MMIOM_OPEN 3
   1720 #define MMIOM_CLOSE 4
   1721 #define MMIOM_WRITEFLUSH 5
   1722 #define MMIOM_RENAME 6
   1723 
   1724 #define MMIOM_USER 0x8000
   1725 
   1726 #define FOURCC_RIFF mmioFOURCC('R','I','F','F')
   1727 #define FOURCC_LIST mmioFOURCC('L','I','S','T')
   1728 
   1729 #define FOURCC_DOS mmioFOURCC('D','O','S',' ')
   1730 #define FOURCC_MEM mmioFOURCC('M','E','M',' ')
   1731 
   1732 #ifndef SEEK_SET
   1733 #define SEEK_SET 0
   1734 #define SEEK_CUR 1
   1735 #define SEEK_END 2
   1736 #endif
   1737 
   1738 #define MMIO_DEFAULTBUFFER 8192
   1739 
   1740 #define mmioFOURCC(ch0,ch1,ch2,ch3) MAKEFOURCC(ch0,ch1,ch2,ch3)
   1741 
   1742   WINMMAPI FOURCC WINAPI mmioStringToFOURCCA(LPCSTR sz,UINT uFlags);
   1743   WINMMAPI FOURCC WINAPI mmioStringToFOURCCW(LPCWSTR sz,UINT uFlags);
   1744 
   1745 #define mmioStringToFOURCC __MINGW_NAME_AW(mmioStringToFOURCC)
   1746 
   1747   WINMMAPI LPMMIOPROC WINAPI mmioInstallIOProcA(FOURCC fccIOProc,LPMMIOPROC pIOProc,DWORD dwFlags);
   1748   WINMMAPI LPMMIOPROC WINAPI mmioInstallIOProcW(FOURCC fccIOProc,LPMMIOPROC pIOProc,DWORD dwFlags);
   1749 
   1750 #define mmioInstallIOProc __MINGW_NAME_AW(mmioInstallIOProc)
   1751 
   1752   WINMMAPI HMMIO WINAPI mmioOpenA(LPSTR pszFileName,LPMMIOINFO pmmioinfo,DWORD fdwOpen);
   1753   WINMMAPI HMMIO WINAPI mmioOpenW(LPWSTR pszFileName,LPMMIOINFO pmmioinfo,DWORD fdwOpen);
   1754 
   1755 #define mmioOpen __MINGW_NAME_AW(mmioOpen)
   1756 
   1757   WINMMAPI MMRESULT WINAPI mmioRenameA(LPCSTR pszFileName,LPCSTR pszNewFileName,LPCMMIOINFO pmmioinfo,DWORD fdwRename);
   1758   WINMMAPI MMRESULT WINAPI mmioRenameW(LPCWSTR pszFileName,LPCWSTR pszNewFileName,LPCMMIOINFO pmmioinfo,DWORD fdwRename);
   1759 
   1760 #define mmioRename __MINGW_NAME_AW(mmioRename)
   1761 
   1762   WINMMAPI MMRESULT WINAPI mmioClose(HMMIO hmmio,UINT fuClose);
   1763   WINMMAPI LONG WINAPI mmioRead(HMMIO hmmio,HPSTR pch,LONG cch);
   1764   WINMMAPI LONG WINAPI mmioWrite(HMMIO hmmio,const char _huge *pch,LONG cch);
   1765   WINMMAPI LONG WINAPI mmioSeek(HMMIO hmmio,LONG lOffset,int iOrigin);
   1766   WINMMAPI MMRESULT WINAPI mmioGetInfo(HMMIO hmmio,LPMMIOINFO pmmioinfo,UINT fuInfo);
   1767   WINMMAPI MMRESULT WINAPI mmioSetInfo(HMMIO hmmio,LPCMMIOINFO pmmioinfo,UINT fuInfo);
   1768   WINMMAPI MMRESULT WINAPI mmioSetBuffer(HMMIO hmmio,LPSTR pchBuffer,LONG cchBuffer,UINT fuBuffer);
   1769   WINMMAPI MMRESULT WINAPI mmioFlush(HMMIO hmmio,UINT fuFlush);
   1770   WINMMAPI MMRESULT WINAPI mmioAdvance(HMMIO hmmio,LPMMIOINFO pmmioinfo,UINT fuAdvance);
   1771   WINMMAPI LRESULT WINAPI mmioSendMessage(HMMIO hmmio,UINT uMsg,LPARAM lParam1,LPARAM lParam2);
   1772   WINMMAPI MMRESULT WINAPI mmioDescend(HMMIO hmmio,LPMMCKINFO pmmcki,const MMCKINFO *pmmckiParent,UINT fuDescend);
   1773   WINMMAPI MMRESULT WINAPI mmioAscend(HMMIO hmmio,LPMMCKINFO pmmcki,UINT fuAscend);
   1774   WINMMAPI MMRESULT WINAPI mmioCreateChunk(HMMIO hmmio,LPMMCKINFO pmmcki,UINT fuCreate);
   1775 #endif
   1776 
   1777 #ifndef MMNOMCI
   1778 
   1779 #ifndef _MCIERROR_
   1780 #define _MCIERROR_
   1781   typedef DWORD MCIERROR;
   1782 #endif
   1783 
   1784 #ifndef _MCIDEVICEID_
   1785 #define _MCIDEVICEID_
   1786   typedef UINT MCIDEVICEID;
   1787 #endif
   1788 
   1789   typedef UINT (CALLBACK *YIELDPROC)(MCIDEVICEID mciId,DWORD dwYieldData);
   1790 
   1791   WINMMAPI MCIERROR WINAPI mciSendCommandA(MCIDEVICEID mciId,UINT uMsg,DWORD_PTR dwParam1,DWORD_PTR dwParam2);
   1792   WINMMAPI MCIERROR WINAPI mciSendCommandW(MCIDEVICEID mciId,UINT uMsg,DWORD_PTR dwParam1,DWORD_PTR dwParam2);
   1793 
   1794 #define mciSendCommand __MINGW_NAME_AW(mciSendCommand)
   1795 
   1796   WINMMAPI MCIERROR WINAPI mciSendStringA(LPCSTR lpstrCommand,LPSTR lpstrReturnString,UINT uReturnLength,HWND hwndCallback);
   1797   WINMMAPI MCIERROR WINAPI mciSendStringW(LPCWSTR lpstrCommand,LPWSTR lpstrReturnString,UINT uReturnLength,HWND hwndCallback);
   1798 
   1799 #define mciSendString __MINGW_NAME_AW(mciSendString)
   1800 
   1801   WINMMAPI MCIDEVICEID WINAPI mciGetDeviceIDA(LPCSTR pszDevice);
   1802   WINMMAPI MCIDEVICEID WINAPI mciGetDeviceIDW(LPCWSTR pszDevice);
   1803 
   1804 #define mciGetDeviceID __MINGW_NAME_AW(mciGetDeviceID)
   1805 
   1806   WINMMAPI MCIDEVICEID WINAPI mciGetDeviceIDFromElementIDA(DWORD dwElementID,LPCSTR lpstrType);
   1807   WINMMAPI MCIDEVICEID WINAPI mciGetDeviceIDFromElementIDW(DWORD dwElementID,LPCWSTR lpstrType);
   1808 
   1809 #define mciGetDeviceIDFromElementID __MINGW_NAME_AW(mciGetDeviceIDFromElementID)
   1810 
   1811   WINMMAPI WINBOOL WINAPI mciGetErrorStringA(MCIERROR mcierr,LPSTR pszText,UINT cchText);
   1812   WINMMAPI WINBOOL WINAPI mciGetErrorStringW(MCIERROR mcierr,LPWSTR pszText,UINT cchText);
   1813 
   1814 #define mciGetErrorString __MINGW_NAME_AW(mciGetErrorString)
   1815 
   1816   WINMMAPI WINBOOL WINAPI mciSetYieldProc(MCIDEVICEID mciId,YIELDPROC fpYieldProc,DWORD dwYieldData);
   1817   WINMMAPI HTASK WINAPI mciGetCreatorTask(MCIDEVICEID mciId);
   1818   WINMMAPI YIELDPROC WINAPI mciGetYieldProc(MCIDEVICEID mciId,LPDWORD pdwYieldData);
   1819 
   1820 #define MCIERR_INVALID_DEVICE_ID (MCIERR_BASE + 1)
   1821 #define MCIERR_UNRECOGNIZED_KEYWORD (MCIERR_BASE + 3)
   1822 #define MCIERR_UNRECOGNIZED_COMMAND (MCIERR_BASE + 5)
   1823 #define MCIERR_HARDWARE (MCIERR_BASE + 6)
   1824 #define MCIERR_INVALID_DEVICE_NAME (MCIERR_BASE + 7)
   1825 #define MCIERR_OUT_OF_MEMORY (MCIERR_BASE + 8)
   1826 #define MCIERR_DEVICE_OPEN (MCIERR_BASE + 9)
   1827 #define MCIERR_CANNOT_LOAD_DRIVER (MCIERR_BASE + 10)
   1828 #define MCIERR_MISSING_COMMAND_STRING (MCIERR_BASE + 11)
   1829 #define MCIERR_PARAM_OVERFLOW (MCIERR_BASE + 12)
   1830 #define MCIERR_MISSING_STRING_ARGUMENT (MCIERR_BASE + 13)
   1831 #define MCIERR_BAD_INTEGER (MCIERR_BASE + 14)
   1832 #define MCIERR_PARSER_INTERNAL (MCIERR_BASE + 15)
   1833 #define MCIERR_DRIVER_INTERNAL (MCIERR_BASE + 16)
   1834 #define MCIERR_MISSING_PARAMETER (MCIERR_BASE + 17)
   1835 #define MCIERR_UNSUPPORTED_FUNCTION (MCIERR_BASE + 18)
   1836 #define MCIERR_FILE_NOT_FOUND (MCIERR_BASE + 19)
   1837 #define MCIERR_DEVICE_NOT_READY (MCIERR_BASE + 20)
   1838 #define MCIERR_INTERNAL (MCIERR_BASE + 21)
   1839 #define MCIERR_DRIVER (MCIERR_BASE + 22)
   1840 #define MCIERR_CANNOT_USE_ALL (MCIERR_BASE + 23)
   1841 #define MCIERR_MULTIPLE (MCIERR_BASE + 24)
   1842 #define MCIERR_EXTENSION_NOT_FOUND (MCIERR_BASE + 25)
   1843 #define MCIERR_OUTOFRANGE (MCIERR_BASE + 26)
   1844 #define MCIERR_FLAGS_NOT_COMPATIBLE (MCIERR_BASE + 28)
   1845 #define MCIERR_FILE_NOT_SAVED (MCIERR_BASE + 30)
   1846 #define MCIERR_DEVICE_TYPE_REQUIRED (MCIERR_BASE + 31)
   1847 #define MCIERR_DEVICE_LOCKED (MCIERR_BASE + 32)
   1848 #define MCIERR_DUPLICATE_ALIAS (MCIERR_BASE + 33)
   1849 #define MCIERR_BAD_CONSTANT (MCIERR_BASE + 34)
   1850 #define MCIERR_MUST_USE_SHAREABLE (MCIERR_BASE + 35)
   1851 #define MCIERR_MISSING_DEVICE_NAME (MCIERR_BASE + 36)
   1852 #define MCIERR_BAD_TIME_FORMAT (MCIERR_BASE + 37)
   1853 #define MCIERR_NO_CLOSING_QUOTE (MCIERR_BASE + 38)
   1854 #define MCIERR_DUPLICATE_FLAGS (MCIERR_BASE + 39)
   1855 #define MCIERR_INVALID_FILE (MCIERR_BASE + 40)
   1856 #define MCIERR_NULL_PARAMETER_BLOCK (MCIERR_BASE + 41)
   1857 #define MCIERR_UNNAMED_RESOURCE (MCIERR_BASE + 42)
   1858 #define MCIERR_NEW_REQUIRES_ALIAS (MCIERR_BASE + 43)
   1859 #define MCIERR_NOTIFY_ON_AUTO_OPEN (MCIERR_BASE + 44)
   1860 #define MCIERR_NO_ELEMENT_ALLOWED (MCIERR_BASE + 45)
   1861 #define MCIERR_NONAPPLICABLE_FUNCTION (MCIERR_BASE + 46)
   1862 #define MCIERR_ILLEGAL_FOR_AUTO_OPEN (MCIERR_BASE + 47)
   1863 #define MCIERR_FILENAME_REQUIRED (MCIERR_BASE + 48)
   1864 #define MCIERR_EXTRA_CHARACTERS (MCIERR_BASE + 49)
   1865 #define MCIERR_DEVICE_NOT_INSTALLED (MCIERR_BASE + 50)
   1866 #define MCIERR_GET_CD (MCIERR_BASE + 51)
   1867 #define MCIERR_SET_CD (MCIERR_BASE + 52)
   1868 #define MCIERR_SET_DRIVE (MCIERR_BASE + 53)
   1869 #define MCIERR_DEVICE_LENGTH (MCIERR_BASE + 54)
   1870 #define MCIERR_DEVICE_ORD_LENGTH (MCIERR_BASE + 55)
   1871 #define MCIERR_NO_INTEGER (MCIERR_BASE + 56)
   1872 #define MCIERR_WAVE_OUTPUTSINUSE (MCIERR_BASE + 64)
   1873 #define MCIERR_WAVE_SETOUTPUTINUSE (MCIERR_BASE + 65)
   1874 #define MCIERR_WAVE_INPUTSINUSE (MCIERR_BASE + 66)
   1875 #define MCIERR_WAVE_SETINPUTINUSE (MCIERR_BASE + 67)
   1876 #define MCIERR_WAVE_OUTPUTUNSPECIFIED (MCIERR_BASE + 68)
   1877 #define MCIERR_WAVE_INPUTUNSPECIFIED (MCIERR_BASE + 69)
   1878 #define MCIERR_WAVE_OUTPUTSUNSUITABLE (MCIERR_BASE + 70)
   1879 #define MCIERR_WAVE_SETOUTPUTUNSUITABLE (MCIERR_BASE + 71)
   1880 #define MCIERR_WAVE_INPUTSUNSUITABLE (MCIERR_BASE + 72)
   1881 #define MCIERR_WAVE_SETINPUTUNSUITABLE (MCIERR_BASE + 73)
   1882 #define MCIERR_SEQ_DIV_INCOMPATIBLE (MCIERR_BASE + 80)
   1883 #define MCIERR_SEQ_PORT_INUSE (MCIERR_BASE + 81)
   1884 #define MCIERR_SEQ_PORT_NONEXISTENT (MCIERR_BASE + 82)
   1885 #define MCIERR_SEQ_PORT_MAPNODEVICE (MCIERR_BASE + 83)
   1886 #define MCIERR_SEQ_PORT_MISCERROR (MCIERR_BASE + 84)
   1887 #define MCIERR_SEQ_TIMER (MCIERR_BASE + 85)
   1888 #define MCIERR_SEQ_PORTUNSPECIFIED (MCIERR_BASE + 86)
   1889 #define MCIERR_SEQ_NOMIDIPRESENT (MCIERR_BASE + 87)
   1890 #define MCIERR_NO_WINDOW (MCIERR_BASE + 90)
   1891 #define MCIERR_CREATEWINDOW (MCIERR_BASE + 91)
   1892 #define MCIERR_FILE_READ (MCIERR_BASE + 92)
   1893 #define MCIERR_FILE_WRITE (MCIERR_BASE + 93)
   1894 #define MCIERR_NO_IDENTITY (MCIERR_BASE + 94)
   1895 #define MCIERR_CUSTOM_DRIVER_BASE (MCIERR_BASE + 256)
   1896 
   1897 #define MCI_FIRST DRV_MCI_FIRST
   1898 
   1899 #define MCI_OPEN 0x0803
   1900 #define MCI_CLOSE 0x0804
   1901 #define MCI_ESCAPE 0x0805
   1902 #define MCI_PLAY 0x0806
   1903 #define MCI_SEEK 0x0807
   1904 #define MCI_STOP 0x0808
   1905 #define MCI_PAUSE 0x0809
   1906 #define MCI_INFO 0x080A
   1907 #define MCI_GETDEVCAPS 0x080B
   1908 #define MCI_SPIN 0x080C
   1909 #define MCI_SET 0x080D
   1910 #define MCI_STEP 0x080E
   1911 #define MCI_RECORD 0x080F
   1912 #define MCI_SYSINFO 0x0810
   1913 #define MCI_BREAK 0x0811
   1914 #define MCI_SAVE 0x0813
   1915 #define MCI_STATUS 0x0814
   1916 #define MCI_CUE 0x0830
   1917 #define MCI_REALIZE 0x0840
   1918 #define MCI_WINDOW 0x0841
   1919 #define MCI_PUT 0x0842
   1920 #define MCI_WHERE 0x0843
   1921 #define MCI_FREEZE 0x0844
   1922 #define MCI_UNFREEZE 0x0845
   1923 #define MCI_LOAD 0x0850
   1924 #define MCI_CUT 0x0851
   1925 #define MCI_COPY 0x0852
   1926 #define MCI_PASTE 0x0853
   1927 #define MCI_UPDATE 0x0854
   1928 #define MCI_RESUME 0x0855
   1929 #define MCI_DELETE 0x0856
   1930 
   1931 #define MCI_USER_MESSAGES (DRV_MCI_FIRST + 0x400)
   1932 #define MCI_LAST 0x0FFF
   1933 
   1934 #define MCI_ALL_DEVICE_ID ((MCIDEVICEID)-1)
   1935 
   1936 #define MCI_DEVTYPE_VCR 513
   1937 #define MCI_DEVTYPE_VIDEODISC 514
   1938 #define MCI_DEVTYPE_OVERLAY 515
   1939 #define MCI_DEVTYPE_CD_AUDIO 516
   1940 #define MCI_DEVTYPE_DAT 517
   1941 #define MCI_DEVTYPE_SCANNER 518
   1942 #define MCI_DEVTYPE_ANIMATION 519
   1943 #define MCI_DEVTYPE_DIGITAL_VIDEO 520
   1944 #define MCI_DEVTYPE_OTHER 521
   1945 #define MCI_DEVTYPE_WAVEFORM_AUDIO 522
   1946 #define MCI_DEVTYPE_SEQUENCER 523
   1947 
   1948 #define MCI_DEVTYPE_FIRST MCI_DEVTYPE_VCR
   1949 #define MCI_DEVTYPE_LAST MCI_DEVTYPE_SEQUENCER
   1950 
   1951 #define MCI_DEVTYPE_FIRST_USER 0x1000
   1952 
   1953 #define MCI_MODE_NOT_READY (MCI_STRING_OFFSET + 12)
   1954 #define MCI_MODE_STOP (MCI_STRING_OFFSET + 13)
   1955 #define MCI_MODE_PLAY (MCI_STRING_OFFSET + 14)
   1956 #define MCI_MODE_RECORD (MCI_STRING_OFFSET + 15)
   1957 #define MCI_MODE_SEEK (MCI_STRING_OFFSET + 16)
   1958 #define MCI_MODE_PAUSE (MCI_STRING_OFFSET + 17)
   1959 #define MCI_MODE_OPEN (MCI_STRING_OFFSET + 18)
   1960 
   1961 #define MCI_FORMAT_MILLISECONDS 0
   1962 #define MCI_FORMAT_HMS 1
   1963 #define MCI_FORMAT_MSF 2
   1964 #define MCI_FORMAT_FRAMES 3
   1965 #define MCI_FORMAT_SMPTE_24 4
   1966 #define MCI_FORMAT_SMPTE_25 5
   1967 #define MCI_FORMAT_SMPTE_30 6
   1968 #define MCI_FORMAT_SMPTE_30DROP 7
   1969 #define MCI_FORMAT_BYTES 8
   1970 #define MCI_FORMAT_SAMPLES 9
   1971 #define MCI_FORMAT_TMSF 10
   1972 
   1973 #define MCI_MSF_MINUTE(msf) ((BYTE)(msf))
   1974 #define MCI_MSF_SECOND(msf) ((BYTE)(((WORD)(msf)) >> 8))
   1975 #define MCI_MSF_FRAME(msf) ((BYTE)((msf)>>16))
   1976 
   1977 #define MCI_MAKE_MSF(m,s,f) ((DWORD)(((BYTE)(m) | ((WORD)(s)<<8)) | (((DWORD)(BYTE)(f))<<16)))
   1978 
   1979 #define MCI_TMSF_TRACK(tmsf) ((BYTE)(tmsf))
   1980 #define MCI_TMSF_MINUTE(tmsf) ((BYTE)(((WORD)(tmsf)) >> 8))
   1981 #define MCI_TMSF_SECOND(tmsf) ((BYTE)((tmsf)>>16))
   1982 #define MCI_TMSF_FRAME(tmsf) ((BYTE)((tmsf)>>24))
   1983 
   1984 #define MCI_MAKE_TMSF(t,m,s,f) ((DWORD)(((BYTE)(t) | ((WORD)(m)<<8)) | (((DWORD)(BYTE)(s) | ((WORD)(f)<<8))<<16)))
   1985 
   1986 #define MCI_HMS_HOUR(hms) ((BYTE)(hms))
   1987 #define MCI_HMS_MINUTE(hms) ((BYTE)(((WORD)(hms)) >> 8))
   1988 #define MCI_HMS_SECOND(hms) ((BYTE)((hms)>>16))
   1989 
   1990 #define MCI_MAKE_HMS(h,m,s) ((DWORD)(((BYTE)(h) | ((WORD)(m)<<8)) | (((DWORD)(BYTE)(s))<<16)))
   1991 
   1992 #define MCI_NOTIFY_SUCCESSFUL 0x0001
   1993 #define MCI_NOTIFY_SUPERSEDED 0x0002
   1994 #define MCI_NOTIFY_ABORTED 0x0004
   1995 #define MCI_NOTIFY_FAILURE 0x0008
   1996 
   1997 #define MCI_NOTIFY __MSABI_LONG(0x00000001)
   1998 #define MCI_WAIT __MSABI_LONG(0x00000002)
   1999 #define MCI_FROM __MSABI_LONG(0x00000004)
   2000 #define MCI_TO __MSABI_LONG(0x00000008)
   2001 #define MCI_TRACK __MSABI_LONG(0x00000010)
   2002 
   2003 #define MCI_OPEN_SHAREABLE __MSABI_LONG(0x00000100)
   2004 #define MCI_OPEN_ELEMENT __MSABI_LONG(0x00000200)
   2005 #define MCI_OPEN_ALIAS __MSABI_LONG(0x00000400)
   2006 #define MCI_OPEN_ELEMENT_ID __MSABI_LONG(0x00000800)
   2007 #define MCI_OPEN_TYPE_ID __MSABI_LONG(0x00001000)
   2008 #define MCI_OPEN_TYPE __MSABI_LONG(0x00002000)
   2009 
   2010 #define MCI_SEEK_TO_START __MSABI_LONG(0x00000100)
   2011 #define MCI_SEEK_TO_END __MSABI_LONG(0x00000200)
   2012 
   2013 #define MCI_STATUS_ITEM __MSABI_LONG(0x00000100)
   2014 #define MCI_STATUS_START __MSABI_LONG(0x00000200)
   2015 
   2016 #define MCI_STATUS_LENGTH __MSABI_LONG(0x00000001)
   2017 #define MCI_STATUS_POSITION __MSABI_LONG(0x00000002)
   2018 #define MCI_STATUS_NUMBER_OF_TRACKS __MSABI_LONG(0x00000003)
   2019 #define MCI_STATUS_MODE __MSABI_LONG(0x00000004)
   2020 #define MCI_STATUS_MEDIA_PRESENT __MSABI_LONG(0x00000005)
   2021 #define MCI_STATUS_TIME_FORMAT __MSABI_LONG(0x00000006)
   2022 #define MCI_STATUS_READY __MSABI_LONG(0x00000007)
   2023 #define MCI_STATUS_CURRENT_TRACK __MSABI_LONG(0x00000008)
   2024 
   2025 #define MCI_INFO_PRODUCT __MSABI_LONG(0x00000100)
   2026 #define MCI_INFO_FILE __MSABI_LONG(0x00000200)
   2027 #define MCI_INFO_MEDIA_UPC __MSABI_LONG(0x00000400)
   2028 #define MCI_INFO_MEDIA_IDENTITY __MSABI_LONG(0x00000800)
   2029 #define MCI_INFO_NAME __MSABI_LONG(0x00001000)
   2030 #define MCI_INFO_COPYRIGHT __MSABI_LONG(0x00002000)
   2031 
   2032 #define MCI_GETDEVCAPS_ITEM __MSABI_LONG(0x00000100)
   2033 
   2034 #define MCI_GETDEVCAPS_CAN_RECORD __MSABI_LONG(0x00000001)
   2035 #define MCI_GETDEVCAPS_HAS_AUDIO __MSABI_LONG(0x00000002)
   2036 #define MCI_GETDEVCAPS_HAS_VIDEO __MSABI_LONG(0x00000003)
   2037 #define MCI_GETDEVCAPS_DEVICE_TYPE __MSABI_LONG(0x00000004)
   2038 #define MCI_GETDEVCAPS_USES_FILES __MSABI_LONG(0x00000005)
   2039 #define MCI_GETDEVCAPS_COMPOUND_DEVICE __MSABI_LONG(0x00000006)
   2040 #define MCI_GETDEVCAPS_CAN_EJECT __MSABI_LONG(0x00000007)
   2041 #define MCI_GETDEVCAPS_CAN_PLAY __MSABI_LONG(0x00000008)
   2042 #define MCI_GETDEVCAPS_CAN_SAVE __MSABI_LONG(0x00000009)
   2043 
   2044 #define MCI_SYSINFO_QUANTITY __MSABI_LONG(0x00000100)
   2045 #define MCI_SYSINFO_OPEN __MSABI_LONG(0x00000200)
   2046 #define MCI_SYSINFO_NAME __MSABI_LONG(0x00000400)
   2047 #define MCI_SYSINFO_INSTALLNAME __MSABI_LONG(0x00000800)
   2048 
   2049 #define MCI_SET_DOOR_OPEN __MSABI_LONG(0x00000100)
   2050 #define MCI_SET_DOOR_CLOSED __MSABI_LONG(0x00000200)
   2051 #define MCI_SET_TIME_FORMAT __MSABI_LONG(0x00000400)
   2052 #define MCI_SET_AUDIO __MSABI_LONG(0x00000800)
   2053 #define MCI_SET_VIDEO __MSABI_LONG(0x00001000)
   2054 #define MCI_SET_ON __MSABI_LONG(0x00002000)
   2055 #define MCI_SET_OFF __MSABI_LONG(0x00004000)
   2056 
   2057 #define MCI_SET_AUDIO_ALL __MSABI_LONG(0x00000000)
   2058 #define MCI_SET_AUDIO_LEFT __MSABI_LONG(0x00000001)
   2059 #define MCI_SET_AUDIO_RIGHT __MSABI_LONG(0x00000002)
   2060 
   2061 #define MCI_BREAK_KEY __MSABI_LONG(0x00000100)
   2062 #define MCI_BREAK_HWND __MSABI_LONG(0x00000200)
   2063 #define MCI_BREAK_OFF __MSABI_LONG(0x00000400)
   2064 
   2065 #define MCI_RECORD_INSERT __MSABI_LONG(0x00000100)
   2066 #define MCI_RECORD_OVERWRITE __MSABI_LONG(0x00000200)
   2067 
   2068 #define MCI_SAVE_FILE __MSABI_LONG(0x00000100)
   2069 
   2070 #define MCI_LOAD_FILE __MSABI_LONG(0x00000100)
   2071 
   2072   typedef struct tagMCI_GENERIC_PARMS {
   2073     DWORD_PTR dwCallback;
   2074   } MCI_GENERIC_PARMS,*PMCI_GENERIC_PARMS,*LPMCI_GENERIC_PARMS;
   2075 
   2076   typedef struct tagMCI_OPEN_PARMSA {
   2077     DWORD_PTR dwCallback;
   2078     MCIDEVICEID wDeviceID;
   2079     LPCSTR lpstrDeviceType;
   2080     LPCSTR lpstrElementName;
   2081     LPCSTR lpstrAlias;
   2082   } MCI_OPEN_PARMSA,*PMCI_OPEN_PARMSA,*LPMCI_OPEN_PARMSA;
   2083 
   2084   typedef struct tagMCI_OPEN_PARMSW {
   2085     DWORD_PTR dwCallback;
   2086     MCIDEVICEID wDeviceID;
   2087     LPCWSTR lpstrDeviceType;
   2088     LPCWSTR lpstrElementName;
   2089     LPCWSTR lpstrAlias;
   2090   } MCI_OPEN_PARMSW,*PMCI_OPEN_PARMSW,*LPMCI_OPEN_PARMSW;
   2091 
   2092   __MINGW_TYPEDEF_AW(MCI_OPEN_PARMS)
   2093   __MINGW_TYPEDEF_AW(PMCI_OPEN_PARMS)
   2094   __MINGW_TYPEDEF_AW(LPMCI_OPEN_PARMS)
   2095 
   2096   typedef struct tagMCI_PLAY_PARMS {
   2097     DWORD_PTR dwCallback;
   2098     DWORD dwFrom;
   2099     DWORD dwTo;
   2100   } MCI_PLAY_PARMS,*PMCI_PLAY_PARMS,*LPMCI_PLAY_PARMS;
   2101 
   2102   typedef struct tagMCI_SEEK_PARMS {
   2103     DWORD_PTR dwCallback;
   2104     DWORD dwTo;
   2105   } MCI_SEEK_PARMS,*PMCI_SEEK_PARMS,*LPMCI_SEEK_PARMS;
   2106 
   2107   typedef struct tagMCI_STATUS_PARMS {
   2108     DWORD_PTR dwCallback;
   2109     DWORD_PTR dwReturn;
   2110     DWORD dwItem;
   2111     DWORD dwTrack;
   2112   } MCI_STATUS_PARMS,*PMCI_STATUS_PARMS,*LPMCI_STATUS_PARMS;
   2113 
   2114   typedef struct tagMCI_INFO_PARMSA {
   2115     DWORD_PTR dwCallback;
   2116     LPSTR lpstrReturn;
   2117     DWORD dwRetSize;
   2118   } MCI_INFO_PARMSA,*LPMCI_INFO_PARMSA;
   2119   typedef struct tagMCI_INFO_PARMSW {
   2120     DWORD_PTR dwCallback;
   2121     LPWSTR lpstrReturn;
   2122     DWORD dwRetSize;
   2123   } MCI_INFO_PARMSW,*LPMCI_INFO_PARMSW;
   2124 
   2125   __MINGW_TYPEDEF_AW(MCI_INFO_PARMS)
   2126   __MINGW_TYPEDEF_AW(LPMCI_INFO_PARMS)
   2127 
   2128   typedef struct tagMCI_GETDEVCAPS_PARMS {
   2129     DWORD_PTR dwCallback;
   2130     DWORD dwReturn;
   2131     DWORD dwItem;
   2132   } MCI_GETDEVCAPS_PARMS,*PMCI_GETDEVCAPS_PARMS,*LPMCI_GETDEVCAPS_PARMS;
   2133 
   2134   typedef struct tagMCI_SYSINFO_PARMSA {
   2135     DWORD_PTR dwCallback;
   2136     LPSTR lpstrReturn;
   2137     DWORD dwRetSize;
   2138     DWORD dwNumber;
   2139     UINT wDeviceType;
   2140   } MCI_SYSINFO_PARMSA,*PMCI_SYSINFO_PARMSA,*LPMCI_SYSINFO_PARMSA;
   2141 
   2142   typedef struct tagMCI_SYSINFO_PARMSW {
   2143     DWORD_PTR dwCallback;
   2144     LPWSTR lpstrReturn;
   2145     DWORD dwRetSize;
   2146     DWORD dwNumber;
   2147     UINT wDeviceType;
   2148   } MCI_SYSINFO_PARMSW,*PMCI_SYSINFO_PARMSW,*LPMCI_SYSINFO_PARMSW;
   2149 
   2150   __MINGW_TYPEDEF_AW(MCI_SYSINFO_PARMS)
   2151   __MINGW_TYPEDEF_AW(PMCI_SYSINFO_PARMS)
   2152   __MINGW_TYPEDEF_AW(LPMCI_SYSINFO_PARMS)
   2153 
   2154   typedef struct tagMCI_SET_PARMS {
   2155     DWORD_PTR dwCallback;
   2156     DWORD dwTimeFormat;
   2157     DWORD dwAudio;
   2158   } MCI_SET_PARMS,*PMCI_SET_PARMS,*LPMCI_SET_PARMS;
   2159 
   2160   typedef struct tagMCI_BREAK_PARMS {
   2161     DWORD_PTR dwCallback;
   2162     int nVirtKey;
   2163     HWND hwndBreak;
   2164   } MCI_BREAK_PARMS,*PMCI_BREAK_PARMS,*LPMCI_BREAK_PARMS;
   2165 
   2166   typedef struct tagMCI_SAVE_PARMSA {
   2167     DWORD_PTR dwCallback;
   2168     LPCSTR lpfilename;
   2169   } MCI_SAVE_PARMSA,*PMCI_SAVE_PARMSA,*LPMCI_SAVE_PARMSA;
   2170 
   2171   typedef struct tagMCI_SAVE_PARMSW {
   2172     DWORD_PTR dwCallback;
   2173     LPCWSTR lpfilename;
   2174   } MCI_SAVE_PARMSW,*PMCI_SAVE_PARMSW,*LPMCI_SAVE_PARMSW;
   2175 
   2176   __MINGW_TYPEDEF_AW(MCI_SAVE_PARMS)
   2177   __MINGW_TYPEDEF_AW(PMCI_SAVE_PARMS)
   2178   __MINGW_TYPEDEF_AW(LPMCI_SAVE_PARMS)
   2179 
   2180   typedef struct tagMCI_LOAD_PARMSA {
   2181     DWORD_PTR dwCallback;
   2182     LPCSTR lpfilename;
   2183   } MCI_LOAD_PARMSA,*PMCI_LOAD_PARMSA,*LPMCI_LOAD_PARMSA;
   2184 
   2185   typedef struct tagMCI_LOAD_PARMSW {
   2186     DWORD_PTR dwCallback;
   2187     LPCWSTR lpfilename;
   2188   } MCI_LOAD_PARMSW,*PMCI_LOAD_PARMSW,*LPMCI_LOAD_PARMSW;
   2189 
   2190   __MINGW_TYPEDEF_AW(MCI_LOAD_PARMS)
   2191   __MINGW_TYPEDEF_AW(PMCI_LOAD_PARMS)
   2192   __MINGW_TYPEDEF_AW(LPMCI_LOAD_PARMS)
   2193 
   2194   typedef struct tagMCI_RECORD_PARMS {
   2195     DWORD_PTR dwCallback;
   2196     DWORD dwFrom;
   2197     DWORD dwTo;
   2198   } MCI_RECORD_PARMS,*LPMCI_RECORD_PARMS;
   2199 
   2200 #define MCI_VD_MODE_PARK (MCI_VD_OFFSET + 1)
   2201 
   2202 #define MCI_VD_MEDIA_CLV (MCI_VD_OFFSET + 2)
   2203 #define MCI_VD_MEDIA_CAV (MCI_VD_OFFSET + 3)
   2204 #define MCI_VD_MEDIA_OTHER (MCI_VD_OFFSET + 4)
   2205 
   2206 #define MCI_VD_FORMAT_TRACK 0x4001
   2207 
   2208 #define MCI_VD_PLAY_REVERSE __MSABI_LONG(0x00010000)
   2209 #define MCI_VD_PLAY_FAST __MSABI_LONG(0x00020000)
   2210 #define MCI_VD_PLAY_SPEED __MSABI_LONG(0x00040000)
   2211 #define MCI_VD_PLAY_SCAN __MSABI_LONG(0x00080000)
   2212 #define MCI_VD_PLAY_SLOW __MSABI_LONG(0x00100000)
   2213 
   2214 #define MCI_VD_SEEK_REVERSE __MSABI_LONG(0x00010000)
   2215 
   2216 #define MCI_VD_STATUS_SPEED __MSABI_LONG(0x00004002)
   2217 #define MCI_VD_STATUS_FORWARD __MSABI_LONG(0x00004003)
   2218 #define MCI_VD_STATUS_MEDIA_TYPE __MSABI_LONG(0x00004004)
   2219 #define MCI_VD_STATUS_SIDE __MSABI_LONG(0x00004005)
   2220 #define MCI_VD_STATUS_DISC_SIZE __MSABI_LONG(0x00004006)
   2221 
   2222 #define MCI_VD_GETDEVCAPS_CLV __MSABI_LONG(0x00010000)
   2223 #define MCI_VD_GETDEVCAPS_CAV __MSABI_LONG(0x00020000)
   2224 
   2225 #define MCI_VD_SPIN_UP __MSABI_LONG(0x00010000)
   2226 #define MCI_VD_SPIN_DOWN __MSABI_LONG(0x00020000)
   2227 
   2228 #define MCI_VD_GETDEVCAPS_CAN_REVERSE __MSABI_LONG(0x00004002)
   2229 #define MCI_VD_GETDEVCAPS_FAST_RATE __MSABI_LONG(0x00004003)
   2230 #define MCI_VD_GETDEVCAPS_SLOW_RATE __MSABI_LONG(0x00004004)
   2231 #define MCI_VD_GETDEVCAPS_NORMAL_RATE __MSABI_LONG(0x00004005)
   2232 
   2233 #define MCI_VD_STEP_FRAMES __MSABI_LONG(0x00010000)
   2234 #define MCI_VD_STEP_REVERSE __MSABI_LONG(0x00020000)
   2235 
   2236 #define MCI_VD_ESCAPE_STRING __MSABI_LONG(0x00000100)
   2237 
   2238   typedef struct tagMCI_VD_PLAY_PARMS {
   2239     DWORD_PTR dwCallback;
   2240     DWORD dwFrom;
   2241     DWORD dwTo;
   2242     DWORD dwSpeed;
   2243   } MCI_VD_PLAY_PARMS,*PMCI_VD_PLAY_PARMS,*LPMCI_VD_PLAY_PARMS;
   2244 
   2245   typedef struct tagMCI_VD_STEP_PARMS {
   2246     DWORD_PTR dwCallback;
   2247     DWORD dwFrames;
   2248   } MCI_VD_STEP_PARMS,*PMCI_VD_STEP_PARMS,*LPMCI_VD_STEP_PARMS;
   2249 
   2250   typedef struct tagMCI_VD_ESCAPE_PARMSA {
   2251     DWORD_PTR dwCallback;
   2252     LPCSTR lpstrCommand;
   2253   } MCI_VD_ESCAPE_PARMSA,*PMCI_VD_ESCAPE_PARMSA,*LPMCI_VD_ESCAPE_PARMSA;
   2254 
   2255   typedef struct tagMCI_VD_ESCAPE_PARMSW {
   2256     DWORD_PTR dwCallback;
   2257     LPCWSTR lpstrCommand;
   2258   } MCI_VD_ESCAPE_PARMSW,*PMCI_VD_ESCAPE_PARMSW,*LPMCI_VD_ESCAPE_PARMSW;
   2259 
   2260   __MINGW_TYPEDEF_AW(MCI_VD_ESCAPE_PARMS)
   2261   __MINGW_TYPEDEF_AW(PMCI_VD_ESCAPE_PARMS)
   2262   __MINGW_TYPEDEF_AW(LPMCI_VD_ESCAPE_PARMS)
   2263 
   2264 #define MCI_CDA_STATUS_TYPE_TRACK __MSABI_LONG(0x00004001)
   2265 #define MCI_CDA_TRACK_AUDIO (MCI_CD_OFFSET + 0)
   2266 #define MCI_CDA_TRACK_OTHER (MCI_CD_OFFSET + 1)
   2267 
   2268 #define MCI_WAVE_PCM (MCI_WAVE_OFFSET + 0)
   2269 #define MCI_WAVE_MAPPER (MCI_WAVE_OFFSET + 1)
   2270 
   2271 #define MCI_WAVE_OPEN_BUFFER __MSABI_LONG(0x00010000)
   2272 
   2273 #define MCI_WAVE_SET_FORMATTAG __MSABI_LONG(0x00010000)
   2274 #define MCI_WAVE_SET_CHANNELS __MSABI_LONG(0x00020000)
   2275 #define MCI_WAVE_SET_SAMPLESPERSEC __MSABI_LONG(0x00040000)
   2276 #define MCI_WAVE_SET_AVGBYTESPERSEC __MSABI_LONG(0x00080000)
   2277 #define MCI_WAVE_SET_BLOCKALIGN __MSABI_LONG(0x00100000)
   2278 #define MCI_WAVE_SET_BITSPERSAMPLE __MSABI_LONG(0x00200000)
   2279 
   2280 #define MCI_WAVE_INPUT __MSABI_LONG(0x00400000)
   2281 #define MCI_WAVE_OUTPUT __MSABI_LONG(0x00800000)
   2282 
   2283 #define MCI_WAVE_STATUS_FORMATTAG __MSABI_LONG(0x00004001)
   2284 #define MCI_WAVE_STATUS_CHANNELS __MSABI_LONG(0x00004002)
   2285 #define MCI_WAVE_STATUS_SAMPLESPERSEC __MSABI_LONG(0x00004003)
   2286 #define MCI_WAVE_STATUS_AVGBYTESPERSEC __MSABI_LONG(0x00004004)
   2287 #define MCI_WAVE_STATUS_BLOCKALIGN __MSABI_LONG(0x00004005)
   2288 #define MCI_WAVE_STATUS_BITSPERSAMPLE __MSABI_LONG(0x00004006)
   2289 #define MCI_WAVE_STATUS_LEVEL __MSABI_LONG(0x00004007)
   2290 
   2291 #define MCI_WAVE_SET_ANYINPUT __MSABI_LONG(0x04000000)
   2292 #define MCI_WAVE_SET_ANYOUTPUT __MSABI_LONG(0x08000000)
   2293 
   2294 #define MCI_WAVE_GETDEVCAPS_INPUTS __MSABI_LONG(0x00004001)
   2295 #define MCI_WAVE_GETDEVCAPS_OUTPUTS __MSABI_LONG(0x00004002)
   2296 
   2297   typedef struct tagMCI_WAVE_OPEN_PARMSA {
   2298     DWORD_PTR dwCallback;
   2299     MCIDEVICEID wDeviceID;
   2300     LPCSTR lpstrDeviceType;
   2301     LPCSTR lpstrElementName;
   2302     LPCSTR lpstrAlias;
   2303     DWORD dwBufferSeconds;
   2304   } MCI_WAVE_OPEN_PARMSA,*PMCI_WAVE_OPEN_PARMSA,*LPMCI_WAVE_OPEN_PARMSA;
   2305 
   2306   typedef struct tagMCI_WAVE_OPEN_PARMSW {
   2307     DWORD_PTR dwCallback;
   2308     MCIDEVICEID wDeviceID;
   2309     LPCWSTR lpstrDeviceType;
   2310     LPCWSTR lpstrElementName;
   2311     LPCWSTR lpstrAlias;
   2312     DWORD dwBufferSeconds;
   2313   } MCI_WAVE_OPEN_PARMSW,*PMCI_WAVE_OPEN_PARMSW,*LPMCI_WAVE_OPEN_PARMSW;
   2314 
   2315   __MINGW_TYPEDEF_AW(MCI_WAVE_OPEN_PARMS)
   2316   __MINGW_TYPEDEF_AW(PMCI_WAVE_OPEN_PARMS)
   2317   __MINGW_TYPEDEF_AW(LPMCI_WAVE_OPEN_PARMS)
   2318 
   2319   typedef struct tagMCI_WAVE_DELETE_PARMS {
   2320     DWORD_PTR dwCallback;
   2321     DWORD dwFrom;
   2322     DWORD dwTo;
   2323   } MCI_WAVE_DELETE_PARMS,*PMCI_WAVE_DELETE_PARMS,*LPMCI_WAVE_DELETE_PARMS;
   2324 
   2325   typedef struct tagMCI_WAVE_SET_PARMS {
   2326     DWORD_PTR dwCallback;
   2327     DWORD dwTimeFormat;
   2328     DWORD dwAudio;
   2329     UINT wInput;
   2330     UINT wOutput;
   2331     WORD wFormatTag;
   2332     WORD wReserved2;
   2333     WORD nChannels;
   2334     WORD wReserved3;
   2335     DWORD nSamplesPerSec;
   2336     DWORD nAvgBytesPerSec;
   2337     WORD nBlockAlign;
   2338     WORD wReserved4;
   2339     WORD wBitsPerSample;
   2340     WORD wReserved5;
   2341   } MCI_WAVE_SET_PARMS,*PMCI_WAVE_SET_PARMS,*LPMCI_WAVE_SET_PARMS;
   2342 
   2343 #define MCI_SEQ_DIV_PPQN (0 + MCI_SEQ_OFFSET)
   2344 #define MCI_SEQ_DIV_SMPTE_24 (1 + MCI_SEQ_OFFSET)
   2345 #define MCI_SEQ_DIV_SMPTE_25 (2 + MCI_SEQ_OFFSET)
   2346 #define MCI_SEQ_DIV_SMPTE_30DROP (3 + MCI_SEQ_OFFSET)
   2347 #define MCI_SEQ_DIV_SMPTE_30 (4 + MCI_SEQ_OFFSET)
   2348 
   2349 #define MCI_SEQ_FORMAT_SONGPTR 0x4001
   2350 #define MCI_SEQ_FILE 0x4002
   2351 #define MCI_SEQ_MIDI 0x4003
   2352 #define MCI_SEQ_SMPTE 0x4004
   2353 #define MCI_SEQ_NONE 65533
   2354 #define MCI_SEQ_MAPPER 65535
   2355 
   2356 #define MCI_SEQ_STATUS_TEMPO __MSABI_LONG(0x00004002)
   2357 #define MCI_SEQ_STATUS_PORT __MSABI_LONG(0x00004003)
   2358 #define MCI_SEQ_STATUS_SLAVE __MSABI_LONG(0x00004007)
   2359 #define MCI_SEQ_STATUS_MASTER __MSABI_LONG(0x00004008)
   2360 #define MCI_SEQ_STATUS_OFFSET __MSABI_LONG(0x00004009)
   2361 #define MCI_SEQ_STATUS_DIVTYPE __MSABI_LONG(0x0000400A)
   2362 #define MCI_SEQ_STATUS_NAME __MSABI_LONG(0x0000400B)
   2363 #define MCI_SEQ_STATUS_COPYRIGHT __MSABI_LONG(0x0000400C)
   2364 
   2365 #define MCI_SEQ_SET_TEMPO __MSABI_LONG(0x00010000)
   2366 #define MCI_SEQ_SET_PORT __MSABI_LONG(0x00020000)
   2367 #define MCI_SEQ_SET_SLAVE __MSABI_LONG(0x00040000)
   2368 #define MCI_SEQ_SET_MASTER __MSABI_LONG(0x00080000)
   2369 #define MCI_SEQ_SET_OFFSET __MSABI_LONG(0x01000000)
   2370 
   2371   typedef struct tagMCI_SEQ_SET_PARMS {
   2372     DWORD_PTR dwCallback;
   2373     DWORD dwTimeFormat;
   2374     DWORD dwAudio;
   2375     DWORD dwTempo;
   2376     DWORD dwPort;
   2377     DWORD dwSlave;
   2378     DWORD dwMaster;
   2379     DWORD dwOffset;
   2380   } MCI_SEQ_SET_PARMS,*PMCI_SEQ_SET_PARMS,*LPMCI_SEQ_SET_PARMS;
   2381 
   2382 #define MCI_ANIM_OPEN_WS __MSABI_LONG(0x00010000)
   2383 #define MCI_ANIM_OPEN_PARENT __MSABI_LONG(0x00020000)
   2384 #define MCI_ANIM_OPEN_NOSTATIC __MSABI_LONG(0x00040000)
   2385 
   2386 #define MCI_ANIM_PLAY_SPEED __MSABI_LONG(0x00010000)
   2387 #define MCI_ANIM_PLAY_REVERSE __MSABI_LONG(0x00020000)
   2388 #define MCI_ANIM_PLAY_FAST __MSABI_LONG(0x00040000)
   2389 #define MCI_ANIM_PLAY_SLOW __MSABI_LONG(0x00080000)
   2390 #define MCI_ANIM_PLAY_SCAN __MSABI_LONG(0x00100000)
   2391 
   2392 #define MCI_ANIM_STEP_REVERSE __MSABI_LONG(0x00010000)
   2393 #define MCI_ANIM_STEP_FRAMES __MSABI_LONG(0x00020000)
   2394 
   2395 #define MCI_ANIM_STATUS_SPEED __MSABI_LONG(0x00004001)
   2396 #define MCI_ANIM_STATUS_FORWARD __MSABI_LONG(0x00004002)
   2397 #define MCI_ANIM_STATUS_HWND __MSABI_LONG(0x00004003)
   2398 #define MCI_ANIM_STATUS_HPAL __MSABI_LONG(0x00004004)
   2399 #define MCI_ANIM_STATUS_STRETCH __MSABI_LONG(0x00004005)
   2400 
   2401 #define MCI_ANIM_INFO_TEXT __MSABI_LONG(0x00010000)
   2402 
   2403 #define MCI_ANIM_GETDEVCAPS_CAN_REVERSE __MSABI_LONG(0x00004001)
   2404 #define MCI_ANIM_GETDEVCAPS_FAST_RATE __MSABI_LONG(0x00004002)
   2405 #define MCI_ANIM_GETDEVCAPS_SLOW_RATE __MSABI_LONG(0x00004003)
   2406 #define MCI_ANIM_GETDEVCAPS_NORMAL_RATE __MSABI_LONG(0x00004004)
   2407 #define MCI_ANIM_GETDEVCAPS_PALETTES __MSABI_LONG(0x00004006)
   2408 #define MCI_ANIM_GETDEVCAPS_CAN_STRETCH __MSABI_LONG(0x00004007)
   2409 #define MCI_ANIM_GETDEVCAPS_MAX_WINDOWS __MSABI_LONG(0x00004008)
   2410 
   2411 #define MCI_ANIM_REALIZE_NORM __MSABI_LONG(0x00010000)
   2412 #define MCI_ANIM_REALIZE_BKGD __MSABI_LONG(0x00020000)
   2413 
   2414 #define MCI_ANIM_WINDOW_HWND __MSABI_LONG(0x00010000)
   2415 #define MCI_ANIM_WINDOW_STATE __MSABI_LONG(0x00040000)
   2416 #define MCI_ANIM_WINDOW_TEXT __MSABI_LONG(0x00080000)
   2417 #define MCI_ANIM_WINDOW_ENABLE_STRETCH __MSABI_LONG(0x00100000)
   2418 #define MCI_ANIM_WINDOW_DISABLE_STRETCH __MSABI_LONG(0x00200000)
   2419 
   2420 #define MCI_ANIM_WINDOW_DEFAULT __MSABI_LONG(0x00000000)
   2421 
   2422 #define MCI_ANIM_RECT __MSABI_LONG(0x00010000)
   2423 #define MCI_ANIM_PUT_SOURCE __MSABI_LONG(0x00020000)
   2424 #define MCI_ANIM_PUT_DESTINATION __MSABI_LONG(0x00040000)
   2425 
   2426 #define MCI_ANIM_WHERE_SOURCE __MSABI_LONG(0x00020000)
   2427 #define MCI_ANIM_WHERE_DESTINATION __MSABI_LONG(0x00040000)
   2428 
   2429 #define MCI_ANIM_UPDATE_HDC __MSABI_LONG(0x00020000)
   2430 
   2431   typedef struct tagMCI_ANIM_OPEN_PARMSA {
   2432     DWORD_PTR dwCallback;
   2433     MCIDEVICEID wDeviceID;
   2434     LPCSTR lpstrDeviceType;
   2435     LPCSTR lpstrElementName;
   2436     LPCSTR lpstrAlias;
   2437     DWORD dwStyle;
   2438     HWND hWndParent;
   2439   } MCI_ANIM_OPEN_PARMSA,*PMCI_ANIM_OPEN_PARMSA,*LPMCI_ANIM_OPEN_PARMSA;
   2440 
   2441   typedef struct tagMCI_ANIM_OPEN_PARMSW {
   2442     DWORD_PTR dwCallback;
   2443     MCIDEVICEID wDeviceID;
   2444     LPCWSTR lpstrDeviceType;
   2445     LPCWSTR lpstrElementName;
   2446     LPCWSTR lpstrAlias;
   2447     DWORD dwStyle;
   2448     HWND hWndParent;
   2449   } MCI_ANIM_OPEN_PARMSW,*PMCI_ANIM_OPEN_PARMSW,*LPMCI_ANIM_OPEN_PARMSW;
   2450 
   2451   __MINGW_TYPEDEF_AW(MCI_ANIM_OPEN_PARMS)
   2452   __MINGW_TYPEDEF_AW(PMCI_ANIM_OPEN_PARMS)
   2453   __MINGW_TYPEDEF_AW(LPMCI_ANIM_OPEN_PARMS)
   2454 
   2455   typedef struct tagMCI_ANIM_PLAY_PARMS {
   2456     DWORD_PTR dwCallback;
   2457     DWORD dwFrom;
   2458     DWORD dwTo;
   2459     DWORD dwSpeed;
   2460   } MCI_ANIM_PLAY_PARMS,*PMCI_ANIM_PLAY_PARMS,*LPMCI_ANIM_PLAY_PARMS;
   2461 
   2462   typedef struct tagMCI_ANIM_STEP_PARMS {
   2463     DWORD_PTR dwCallback;
   2464     DWORD dwFrames;
   2465   } MCI_ANIM_STEP_PARMS,*PMCI_ANIM_STEP_PARMS,*LPMCI_ANIM_STEP_PARMS;
   2466 
   2467   typedef struct tagMCI_ANIM_WINDOW_PARMSA {
   2468     DWORD_PTR dwCallback;
   2469     HWND hWnd;
   2470     UINT nCmdShow;
   2471     LPCSTR lpstrText;
   2472   } MCI_ANIM_WINDOW_PARMSA,*PMCI_ANIM_WINDOW_PARMSA,*LPMCI_ANIM_WINDOW_PARMSA;
   2473 
   2474   typedef struct tagMCI_ANIM_WINDOW_PARMSW {
   2475     DWORD_PTR dwCallback;
   2476     HWND hWnd;
   2477     UINT nCmdShow;
   2478     LPCWSTR lpstrText;
   2479   } MCI_ANIM_WINDOW_PARMSW,*PMCI_ANIM_WINDOW_PARMSW,*LPMCI_ANIM_WINDOW_PARMSW;
   2480 
   2481   __MINGW_TYPEDEF_AW(MCI_ANIM_WINDOW_PARMS)
   2482   __MINGW_TYPEDEF_AW(PMCI_ANIM_WINDOW_PARMS)
   2483   __MINGW_TYPEDEF_AW(LPMCI_ANIM_WINDOW_PARMS)
   2484 
   2485   typedef struct tagMCI_ANIM_RECT_PARMS {
   2486     DWORD_PTR dwCallback;
   2487 #ifdef MCI_USE_OFFEXT
   2488     POINT ptOffset;
   2489     POINT ptExtent;
   2490 #else
   2491     RECT rc;
   2492 #endif
   2493   } MCI_ANIM_RECT_PARMS;
   2494 
   2495   typedef MCI_ANIM_RECT_PARMS *PMCI_ANIM_RECT_PARMS;
   2496   typedef MCI_ANIM_RECT_PARMS *LPMCI_ANIM_RECT_PARMS;
   2497 
   2498   typedef struct tagMCI_ANIM_UPDATE_PARMS {
   2499     DWORD_PTR dwCallback;
   2500     RECT rc;
   2501     HDC hDC;
   2502   } MCI_ANIM_UPDATE_PARMS,*PMCI_ANIM_UPDATE_PARMS,*LPMCI_ANIM_UPDATE_PARMS;
   2503 
   2504 #define MCI_OVLY_OPEN_WS __MSABI_LONG(0x00010000)
   2505 #define MCI_OVLY_OPEN_PARENT __MSABI_LONG(0x00020000)
   2506 
   2507 #define MCI_OVLY_STATUS_HWND __MSABI_LONG(0x00004001)
   2508 #define MCI_OVLY_STATUS_STRETCH __MSABI_LONG(0x00004002)
   2509 
   2510 #define MCI_OVLY_INFO_TEXT __MSABI_LONG(0x00010000)
   2511 
   2512 #define MCI_OVLY_GETDEVCAPS_CAN_STRETCH __MSABI_LONG(0x00004001)
   2513 #define MCI_OVLY_GETDEVCAPS_CAN_FREEZE __MSABI_LONG(0x00004002)
   2514 #define MCI_OVLY_GETDEVCAPS_MAX_WINDOWS __MSABI_LONG(0x00004003)
   2515 
   2516 #define MCI_OVLY_WINDOW_HWND __MSABI_LONG(0x00010000)
   2517 #define MCI_OVLY_WINDOW_STATE __MSABI_LONG(0x00040000)
   2518 #define MCI_OVLY_WINDOW_TEXT __MSABI_LONG(0x00080000)
   2519 #define MCI_OVLY_WINDOW_ENABLE_STRETCH __MSABI_LONG(0x00100000)
   2520 #define MCI_OVLY_WINDOW_DISABLE_STRETCH __MSABI_LONG(0x00200000)
   2521 
   2522 #define MCI_OVLY_WINDOW_DEFAULT __MSABI_LONG(0x00000000)
   2523 
   2524 #define MCI_OVLY_RECT __MSABI_LONG(0x00010000)
   2525 #define MCI_OVLY_PUT_SOURCE __MSABI_LONG(0x00020000)
   2526 #define MCI_OVLY_PUT_DESTINATION __MSABI_LONG(0x00040000)
   2527 #define MCI_OVLY_PUT_FRAME __MSABI_LONG(0x00080000)
   2528 #define MCI_OVLY_PUT_VIDEO __MSABI_LONG(0x00100000)
   2529 
   2530 #define MCI_OVLY_WHERE_SOURCE __MSABI_LONG(0x00020000)
   2531 #define MCI_OVLY_WHERE_DESTINATION __MSABI_LONG(0x00040000)
   2532 #define MCI_OVLY_WHERE_FRAME __MSABI_LONG(0x00080000)
   2533 #define MCI_OVLY_WHERE_VIDEO __MSABI_LONG(0x00100000)
   2534 
   2535   typedef struct tagMCI_OVLY_OPEN_PARMSA {
   2536     DWORD_PTR dwCallback;
   2537     MCIDEVICEID wDeviceID;
   2538     LPCSTR lpstrDeviceType;
   2539     LPCSTR lpstrElementName;
   2540     LPCSTR lpstrAlias;
   2541     DWORD dwStyle;
   2542     HWND hWndParent;
   2543   } MCI_OVLY_OPEN_PARMSA,*PMCI_OVLY_OPEN_PARMSA,*LPMCI_OVLY_OPEN_PARMSA;
   2544 
   2545   typedef struct tagMCI_OVLY_OPEN_PARMSW {
   2546     DWORD_PTR dwCallback;
   2547     MCIDEVICEID wDeviceID;
   2548     LPCWSTR lpstrDeviceType;
   2549     LPCWSTR lpstrElementName;
   2550     LPCWSTR lpstrAlias;
   2551     DWORD dwStyle;
   2552     HWND hWndParent;
   2553   } MCI_OVLY_OPEN_PARMSW,*PMCI_OVLY_OPEN_PARMSW,*LPMCI_OVLY_OPEN_PARMSW;
   2554 
   2555   __MINGW_TYPEDEF_AW(MCI_OVLY_OPEN_PARMS)
   2556   __MINGW_TYPEDEF_AW(PMCI_OVLY_OPEN_PARMS)
   2557   __MINGW_TYPEDEF_AW(LPMCI_OVLY_OPEN_PARMS)
   2558 
   2559   typedef struct tagMCI_OVLY_WINDOW_PARMSA {
   2560     DWORD_PTR dwCallback;
   2561     HWND hWnd;
   2562     UINT nCmdShow;
   2563     LPCSTR lpstrText;
   2564   } MCI_OVLY_WINDOW_PARMSA,*PMCI_OVLY_WINDOW_PARMSA,*LPMCI_OVLY_WINDOW_PARMSA;
   2565 
   2566   typedef struct tagMCI_OVLY_WINDOW_PARMSW {
   2567     DWORD_PTR dwCallback;
   2568     HWND hWnd;
   2569     UINT nCmdShow;
   2570     LPCWSTR lpstrText;
   2571   } MCI_OVLY_WINDOW_PARMSW,*PMCI_OVLY_WINDOW_PARMSW,*LPMCI_OVLY_WINDOW_PARMSW;
   2572 
   2573   __MINGW_TYPEDEF_AW(MCI_OVLY_WINDOW_PARMS)
   2574   __MINGW_TYPEDEF_AW(PMCI_OVLY_WINDOW_PARMS)
   2575   __MINGW_TYPEDEF_AW(LPMCI_OVLY_WINDOW_PARMS)
   2576 
   2577   typedef struct tagMCI_OVLY_RECT_PARMS {
   2578     DWORD_PTR dwCallback;
   2579 #ifdef MCI_USE_OFFEXT
   2580     POINT ptOffset;
   2581     POINT ptExtent;
   2582 #else
   2583     RECT rc;
   2584 #endif
   2585   } MCI_OVLY_RECT_PARMS,*PMCI_OVLY_RECT_PARMS,*LPMCI_OVLY_RECT_PARMS;
   2586 
   2587   typedef struct tagMCI_OVLY_SAVE_PARMSA {
   2588     DWORD_PTR dwCallback;
   2589     LPCSTR lpfilename;
   2590     RECT rc;
   2591   } MCI_OVLY_SAVE_PARMSA,*PMCI_OVLY_SAVE_PARMSA,*LPMCI_OVLY_SAVE_PARMSA;
   2592 
   2593   typedef struct tagMCI_OVLY_SAVE_PARMSW {
   2594     DWORD_PTR dwCallback;
   2595     LPCWSTR lpfilename;
   2596     RECT rc;
   2597   } MCI_OVLY_SAVE_PARMSW,*PMCI_OVLY_SAVE_PARMSW,*LPMCI_OVLY_SAVE_PARMSW;
   2598 
   2599   __MINGW_TYPEDEF_AW(MCI_OVLY_SAVE_PARMS)
   2600   __MINGW_TYPEDEF_AW(PMCI_OVLY_SAVE_PARMS)
   2601   __MINGW_TYPEDEF_AW(LPMCI_OVLY_SAVE_PARMS)
   2602 
   2603   typedef struct tagMCI_OVLY_LOAD_PARMSA {
   2604     DWORD_PTR dwCallback;
   2605     LPCSTR lpfilename;
   2606     RECT rc;
   2607   } MCI_OVLY_LOAD_PARMSA,*PMCI_OVLY_LOAD_PARMSA,*LPMCI_OVLY_LOAD_PARMSA;
   2608 
   2609   typedef struct tagMCI_OVLY_LOAD_PARMSW {
   2610     DWORD_PTR dwCallback;
   2611     LPCWSTR lpfilename;
   2612     RECT rc;
   2613   } MCI_OVLY_LOAD_PARMSW,*PMCI_OVLY_LOAD_PARMSW,*LPMCI_OVLY_LOAD_PARMSW;
   2614 
   2615   __MINGW_TYPEDEF_AW(MCI_OVLY_LOAD_PARMS)
   2616   __MINGW_TYPEDEF_AW(PMCI_OVLY_LOAD_PARMS)
   2617   __MINGW_TYPEDEF_AW(LPMCI_OVLY_LOAD_PARMS)
   2618 #endif
   2619 
   2620 #ifndef NEWTRANSPARENT
   2621 #define NEWTRANSPARENT 3
   2622 #define QUERYROPSUPPORT 40
   2623 #endif
   2624 
   2625 #define SELECTDIB 41
   2626 #define DIBINDEX(n) MAKELONG((n),0x10FF)
   2627 
   2628 #ifndef SC_SCREENSAVE
   2629 #define SC_SCREENSAVE 0xF140
   2630 #endif
   2631 
   2632 #ifdef __cplusplus
   2633 }
   2634 #endif
   2635 
   2636 #include <poppack.h>
   2637 #endif
   2638