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