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
13extern "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