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