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