2 * MMSYSTEM - Multimedia Wine Extension ... :-)
4 * Copyright (C) the Wine project
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 #ifndef __WINE_MMSYSTEM_H
22 #define __WINE_MMSYSTEM_H
30 typedef LPSTR HPSTR; /* a huge version of LPSTR */
31 typedef LPCSTR HPCSTR; /* a huge version of LPCSTR */
34 DECLARE_HANDLE(HDRVR);
35 DECLARE_HANDLE(HWAVE);
36 DECLARE_HANDLE(HWAVEIN);
37 DECLARE_HANDLE(HWAVEOUT);
38 DECLARE_HANDLE(HMIDI);
39 DECLARE_HANDLE(HMIDIIN);
40 DECLARE_HANDLE(HMIDIOUT);
41 DECLARE_HANDLE(HMIDISTRM);
42 DECLARE_HANDLE(HMIXER);
43 DECLARE_HANDLE(HMIXEROBJ);
44 DECLARE_HANDLE(HMMIO);
46 typedef HMIDI *LPHMIDI;
47 typedef HMIDIIN *LPHMIDIIN;
48 typedef HMIDIOUT *LPHMIDIOUT;
49 typedef HMIDISTRM *LPHMIDISTRM;
50 typedef HMIXER *LPHMIXER;
51 typedef HMIXEROBJ *LPHMIXEROBJ;
52 typedef HWAVEIN *LPHWAVEIN;
53 typedef HWAVEOUT *LPHWAVEOUT;
57 typedef LRESULT (CALLBACK *DRIVERPROC)(DWORD,HDRVR,UINT,LPARAM,LPARAM);
59 #define MAXWAVEDRIVERS 10
60 #define MAXMIDIDRIVERS 10
61 #define MAXAUXDRIVERS 10
62 #define MAXMCIDRIVERS 32
63 #define MAXMIXERDRIVERS 10
65 #define MAXPNAMELEN 32 /* max product name length (including NULL) */
66 #define MAXERRORLENGTH 128 /* max error text length (including NULL) */
67 #define MAX_JOYSTICKOEMVXDNAME 260
69 typedef WORD VERSION; /* major (high byte), minor (low byte) */
73 typedef DWORD MCIERROR;
75 typedef UINT MMVERSION;
78 typedef UINT MCIDEVICEID;
80 typedef UINT MMRESULT;
104 #define TIME_MS 0x0001 /* time in milliseconds */
105 #define TIME_SAMPLES 0x0002 /* number of wave samples */
106 #define TIME_BYTES 0x0004 /* current byte offset */
107 #define TIME_SMPTE 0x0008 /* SMPTE time */
108 #define TIME_MIDI 0x0010 /* MIDI time */
109 #define TIME_TICKS 0x0020 /* MIDI ticks */
111 #define MM_JOY1MOVE 0x3A0 /* joystick */
112 #define MM_JOY2MOVE 0x3A1
113 #define MM_JOY1ZMOVE 0x3A2
114 #define MM_JOY2ZMOVE 0x3A3
115 #define MM_JOY1BUTTONDOWN 0x3B5
116 #define MM_JOY2BUTTONDOWN 0x3B6
117 #define MM_JOY1BUTTONUP 0x3B7
118 #define MM_JOY2BUTTONUP 0x3B8
120 #define MM_MCINOTIFY 0x3B9 /* MCI */
122 #define MM_WOM_OPEN 0x3BB /* waveform output */
123 #define MM_WOM_CLOSE 0x3BC
124 #define MM_WOM_DONE 0x3BD
126 #define MM_WIM_OPEN 0x3BE /* waveform input */
127 #define MM_WIM_CLOSE 0x3BF
128 #define MM_WIM_DATA 0x3C0
130 #define MM_MIM_OPEN 0x3C1 /* MIDI input */
131 #define MM_MIM_CLOSE 0x3C2
132 #define MM_MIM_DATA 0x3C3
133 #define MM_MIM_LONGDATA 0x3C4
134 #define MM_MIM_ERROR 0x3C5
135 #define MM_MIM_LONGERROR 0x3C6
137 #define MM_MOM_OPEN 0x3C7 /* MIDI output */
138 #define MM_MOM_CLOSE 0x3C8
139 #define MM_MOM_DONE 0x3C9
140 #define MM_MOM_POSITIONCB 0x3CA
142 #define MM_MIM_MOREDATA 0x3CC
144 #define MM_MIXM_LINE_CHANGE 0x3D0
145 #define MM_MIXM_CONTROL_CHANGE 0x3D1
147 #define MMSYSERR_BASE 0
148 #define WAVERR_BASE 32
149 #define MIDIERR_BASE 64
150 #define TIMERR_BASE 96
151 #define JOYERR_BASE 160
152 #define MCIERR_BASE 256
154 #define MCI_STRING_OFFSET 512
155 #define MCI_VD_OFFSET 1024
156 #define MCI_CD_OFFSET 1088
157 #define MCI_WAVE_OFFSET 1152
158 #define MCI_SEQ_OFFSET 1216
160 #define MMSYSERR_NOERROR 0 /* no error */
161 #define MMSYSERR_ERROR (MMSYSERR_BASE + 1) /* unspecified error */
162 #define MMSYSERR_BADDEVICEID (MMSYSERR_BASE + 2) /* device ID out of range */
163 #define MMSYSERR_NOTENABLED (MMSYSERR_BASE + 3) /* driver failed enable */
164 #define MMSYSERR_ALLOCATED (MMSYSERR_BASE + 4) /* device already allocated */
165 #define MMSYSERR_INVALHANDLE (MMSYSERR_BASE + 5) /* device handle is invalid */
166 #define MMSYSERR_NODRIVER (MMSYSERR_BASE + 6) /* no device driver present */
167 #define MMSYSERR_NOMEM (MMSYSERR_BASE + 7) /* memory allocation error */
168 #define MMSYSERR_NOTSUPPORTED (MMSYSERR_BASE + 8) /* function isn't supported */
169 #define MMSYSERR_BADERRNUM (MMSYSERR_BASE + 9) /* error value out of range */
170 #define MMSYSERR_INVALFLAG (MMSYSERR_BASE + 10) /* invalid flag passed */
171 #define MMSYSERR_INVALPARAM (MMSYSERR_BASE + 11) /* invalid parameter passed */
172 #define MMSYSERR_LASTERROR (MMSYSERR_BASE + 11) /* last error in range */
174 #define CALLBACK_TYPEMASK 0x00070000l /* callback type mask */
175 #define CALLBACK_NULL 0x00000000l /* no callback */
176 #define CALLBACK_WINDOW 0x00010000l /* dwCallback is a HWND */
177 #define CALLBACK_TASK 0x00020000l /* dwCallback is a HTASK */
178 #define CALLBACK_THREAD (CALLBACK_TASK) /* dwCallback is a thread ID */
179 #define CALLBACK_FUNCTION 0x00030000l /* dwCallback is a FARPROC */
180 #define CALLBACK_EVENT 0x00050000l /* dwCallback is an EVENT Handler */
182 #define DRV_LOAD 0x0001
183 #define DRV_ENABLE 0x0002
184 #define DRV_OPEN 0x0003
185 #define DRV_CLOSE 0x0004
186 #define DRV_DISABLE 0x0005
187 #define DRV_FREE 0x0006
188 #define DRV_CONFIGURE 0x0007
189 #define DRV_QUERYCONFIGURE 0x0008
190 #define DRV_INSTALL 0x0009
191 #define DRV_REMOVE 0x000A
192 #define DRV_EXITSESSION 0x000B
193 #define DRV_EXITAPPLICATION 0x000C
194 #define DRV_POWER 0x000F
196 #define DRV_RESERVED 0x0800
197 #define DRV_USER 0x4000
199 #define DRVCNF_CANCEL 0x0000
200 #define DRVCNF_OK 0x0001
201 #define DRVCNF_RESTART 0x0002
203 #define DRVEA_NORMALEXIT 0x0001
204 #define DRVEA_ABNORMALEXIT 0x0002
206 #define DRV_SUCCESS 0x0001
207 #define DRV_FAILURE 0x0000
209 #define GND_FIRSTINSTANCEONLY 0x00000001
211 #define GND_FORWARD 0x00000000
212 #define GND_REVERSE 0x00000002
216 LPCWSTR lpszDCISectionName;
217 LPCWSTR lpszDCIAliasName;
218 } DRVCONFIGINFO, *LPDRVCONFIGINFO;
221 LRESULT WINAPI DefDriverProc(DWORD dwDriverIdentifier, HDRVR hdrvr,
222 UINT Msg, LPARAM lParam1, LPARAM lParam2);
223 /* this sounds odd, but it's the way it is. OpenDriverA even disapeared
226 HDRVR WINAPI OpenDriverA(LPCSTR szDriverName, LPCSTR szSectionName,
228 HDRVR WINAPI OpenDriver(LPCWSTR szDriverName, LPCWSTR szSectionName,
230 LRESULT WINAPI CloseDriver(HDRVR hDriver, LPARAM lParam1, LPARAM lParam2);
231 LRESULT WINAPI SendDriverMessage(HDRVR hDriver, UINT message,
232 LPARAM lParam1, LPARAM lParam2);
233 HMODULE WINAPI GetDriverModuleHandle(HDRVR hDriver);
235 DWORD WINAPI GetDriverFlags(HDRVR hDriver);
237 /* this call (GetDriverFlags) is not documented, nor the flags returned.
238 * here are Wine only definitions
240 #define WINE_GDF_EXIST 0x80000000
241 #define WINE_GDF_16BIT 0x10000000
244 typedef void (CALLBACK *LPDRVCALLBACK) (HDRVR h, UINT uMessage, DWORD dwUser, DWORD dw1, DWORD dw2);
246 #define MM_MICROSOFT 1 /* Microsoft Corp. */
248 #define MM_MIDI_MAPPER 1 /* MIDI Mapper */
249 #define MM_WAVE_MAPPER 2 /* Wave Mapper */
251 #define MM_SNDBLST_MIDIOUT 3 /* Sound Blaster MIDI output port */
252 #define MM_SNDBLST_MIDIIN 4 /* Sound Blaster MIDI input port */
253 #define MM_SNDBLST_SYNTH 5 /* Sound Blaster internal synthesizer */
254 #define MM_SNDBLST_WAVEOUT 6 /* Sound Blaster waveform output */
255 #define MM_SNDBLST_WAVEIN 7 /* Sound Blaster waveform input */
257 #define MM_ADLIB 9 /* Ad Lib-compatible synthesizer */
259 #define MM_MPU401_MIDIOUT 10 /* MPU401-compatible MIDI output port */
260 #define MM_MPU401_MIDIIN 11 /* MPU401-compatible MIDI input port */
262 #define MM_PC_JOYSTICK 12 /* Joystick adapter */
265 UINT WINAPI mmsystemGetVersion(void);
266 BOOL WINAPI sndPlaySoundA(LPCSTR lpszSound, UINT fuSound);
267 BOOL WINAPI sndPlaySoundW(LPCWSTR lpszSound, UINT fuSound);
268 #define sndPlaySound WINELIB_NAME_AW(sndPlaySound)
269 BOOL WINAPI PlaySoundA(LPCSTR pszSound, HMODULE hmod, DWORD fdwSound);
270 BOOL WINAPI PlaySoundW(LPCWSTR pszSound, HMODULE hmod, DWORD fdwSound);
271 #define PlaySound WINELIB_NAME_AW(PlaySound)
273 #define SND_SYNC 0x0000 /* play synchronously (default) */
274 #define SND_ASYNC 0x0001 /* play asynchronously */
275 #define SND_NODEFAULT 0x0002 /* don't use default sound */
276 #define SND_MEMORY 0x0004 /* lpszSoundName points to a memory file */
277 #define SND_LOOP 0x0008 /* loop the sound until next sndPlaySound */
278 #define SND_NOSTOP 0x0010 /* don't stop any currently playing sound */
280 #define SND_NOWAIT 0x00002000L /* don't wait if the driver is busy */
281 #define SND_ALIAS 0x00010000L /* name is a registry alias */
282 #define SND_ALIAS_ID 0x00110000L /* alias is a predefined ID */
283 #define SND_FILENAME 0x00020000L /* name is file name */
284 #define SND_RESOURCE 0x00040004L /* name is resource name or atom */
285 #define SND_PURGE 0x00000040L /* purge all sounds */
286 #define SND_APPLICATION 0x00000080L /* look for application specific association */
288 /* waveform audio error return values */
289 #define WAVERR_BADFORMAT (WAVERR_BASE + 0) /* unsupported wave format */
290 #define WAVERR_STILLPLAYING (WAVERR_BASE + 1) /* still something playing */
291 #define WAVERR_UNPREPARED (WAVERR_BASE + 2) /* header not prepared */
292 #define WAVERR_SYNC (WAVERR_BASE + 3) /* device is synchronous */
293 #define WAVERR_LASTERROR (WAVERR_BASE + 3) /* last error in range */
295 typedef LPDRVCALLBACK LPWAVECALLBACK;
297 #define WOM_OPEN MM_WOM_OPEN
298 #define WOM_CLOSE MM_WOM_CLOSE
299 #define WOM_DONE MM_WOM_DONE
300 #define WIM_OPEN MM_WIM_OPEN
301 #define WIM_CLOSE MM_WIM_CLOSE
302 #define WIM_DATA MM_WIM_DATA
304 #define WAVE_MAPPER (-1)
306 #define WAVE_FORMAT_QUERY 0x0001
307 #define WAVE_ALLOWSYNC 0x0002
308 #define WAVE_MAPPED 0x0004
309 #define WAVE_FORMAT_DIRECT 0x0008
310 #define WAVE_FORMAT_DIRECT_QUERY (WAVE_FORMAT_QUERY | WAVE_FORMAT_DIRECT)
312 #define WAVE_DIRECTSOUND 0x0080
315 typedef struct wavehdr_tag {
316 LPSTR lpData; /* pointer to locked data buffer */
317 DWORD dwBufferLength; /* length of data buffer */
318 DWORD dwBytesRecorded;/* used for input only */
319 DWORD dwUser; /* for client's use */
320 DWORD dwFlags; /* assorted flags (see defines) */
321 DWORD dwLoops; /* loop control counter */
323 struct wavehdr_tag *lpNext; /* reserved for driver */
324 DWORD reserved; /* reserved for driver */
325 } WAVEHDR, *PWAVEHDR, *NPWAVEHDR, *LPWAVEHDR;
327 #define WHDR_DONE 0x00000001 /* done bit */
328 #define WHDR_PREPARED 0x00000002 /* set if this header has been prepared */
329 #define WHDR_BEGINLOOP 0x00000004 /* loop start block */
330 #define WHDR_ENDLOOP 0x00000008 /* loop end block */
331 #define WHDR_INQUEUE 0x00000010 /* reserved for driver */
334 WORD wMid; /* manufacturer ID */
335 WORD wPid; /* product ID */
336 MMVERSION vDriverVersion; /* version of the driver */
337 CHAR szPname[MAXPNAMELEN]; /* product name (0 terminated string) */
338 DWORD dwFormats; /* formats supported */
339 WORD wChannels; /* number of sources supported */
340 WORD wReserved1; /* padding */
341 DWORD dwSupport; /* functionality supported by driver */
342 } WAVEOUTCAPSA, *LPWAVEOUTCAPSA;
345 WORD wMid; /* manufacturer ID */
346 WORD wPid; /* product ID */
347 MMVERSION vDriverVersion; /* version of the driver */
348 WCHAR szPname[MAXPNAMELEN]; /* product name (0 terminated string) */
349 DWORD dwFormats; /* formats supported */
350 WORD wChannels; /* number of sources supported */
351 WORD wReserved1; /* padding */
352 DWORD dwSupport; /* functionality supported by driver */
353 } WAVEOUTCAPSW, *LPWAVEOUTCAPSW;
354 DECL_WINELIB_TYPE_AW(WAVEOUTCAPS)
355 DECL_WINELIB_TYPE_AW(LPWAVEOUTCAPS)
357 #define WAVECAPS_PITCH 0x0001 /* supports pitch control */
358 #define WAVECAPS_PLAYBACKRATE 0x0002 /* supports playback rate control */
359 #define WAVECAPS_VOLUME 0x0004 /* supports volume control */
360 #define WAVECAPS_LRVOLUME 0x0008 /* separate left-right volume control */
361 #define WAVECAPS_SYNC 0x0010 /* driver is synchrounous and playing is blocking */
362 #define WAVECAPS_SAMPLEACCURATE 0x0020 /* position is sample accurate */
363 #define WAVECAPS_DIRECTSOUND 0x0040 /* ? */
366 WORD wMid; /* manufacturer ID */
367 WORD wPid; /* product ID */
368 MMVERSION vDriverVersion; /* version of the driver */
369 CHAR szPname[MAXPNAMELEN]; /* product name (0 terminated string) */
370 DWORD dwFormats; /* formats supported */
371 WORD wChannels; /* number of channels supported */
373 } WAVEINCAPSA, *LPWAVEINCAPSA;
375 WORD wMid; /* manufacturer ID */
376 WORD wPid; /* product ID */
377 MMVERSION vDriverVersion; /* version of the driver */
378 WCHAR szPname[MAXPNAMELEN]; /* product name (0 terminated string) */
379 DWORD dwFormats; /* formats supported */
380 WORD wChannels; /* number of channels supported */
382 } WAVEINCAPSW, *LPWAVEINCAPSW;
383 DECL_WINELIB_TYPE_AW(WAVEINCAPS)
384 DECL_WINELIB_TYPE_AW(LPWAVEINCAPS)
386 #define WAVE_INVALIDFORMAT 0x00000000 /* invalid format */
387 #define WAVE_FORMAT_1M08 0x00000001 /* 11.025 kHz, Mono, 8-bit */
388 #define WAVE_FORMAT_1S08 0x00000002 /* 11.025 kHz, Stereo, 8-bit */
389 #define WAVE_FORMAT_1M16 0x00000004 /* 11.025 kHz, Mono, 16-bit */
390 #define WAVE_FORMAT_1S16 0x00000008 /* 11.025 kHz, Stereo, 16-bit */
391 #define WAVE_FORMAT_2M08 0x00000010 /* 22.05 kHz, Mono, 8-bit */
392 #define WAVE_FORMAT_2S08 0x00000020 /* 22.05 kHz, Stereo, 8-bit */
393 #define WAVE_FORMAT_2M16 0x00000040 /* 22.05 kHz, Mono, 16-bit */
394 #define WAVE_FORMAT_2S16 0x00000080 /* 22.05 kHz, Stereo, 16-bit */
395 #define WAVE_FORMAT_4M08 0x00000100 /* 44.1 kHz, Mono, 8-bit */
396 #define WAVE_FORMAT_4S08 0x00000200 /* 44.1 kHz, Stereo, 8-bit */
397 #define WAVE_FORMAT_4M16 0x00000400 /* 44.1 kHz, Mono, 16-bit */
398 #define WAVE_FORMAT_4S16 0x00000800 /* 44.1 kHz, Stereo, 16-bit */
399 #define WAVE_FORMAT_48M08 0x00001000 /* 48 kHz, Mono, 8-bit */
400 #define WAVE_FORMAT_48S08 0x00002000 /* 48 kHz, Stereo, 8-bit */
401 #define WAVE_FORMAT_48M16 0x00004000 /* 48 kHz, Mono, 16-bit */
402 #define WAVE_FORMAT_48S16 0x00008000 /* 48 kHz, Stereo, 16-bit */
403 #define WAVE_FORMAT_96M08 0x00010000 /* 96 kHz, Mono, 8-bit */
404 #define WAVE_FORMAT_96S08 0x00020000 /* 96 kHz, Stereo, 8-bit */
405 #define WAVE_FORMAT_96M16 0x00040000 /* 96 kHz, Mono, 16-bit */
406 #define WAVE_FORMAT_96S16 0x00080000 /* 96 kHz, Stereo, 16-bit */
408 /* General format structure common to all formats, same for Win16 and Win32 */
410 WORD wFormatTag; /* format type */
411 WORD nChannels; /* number of channels */
412 DWORD nSamplesPerSec; /* sample rate */
413 DWORD nAvgBytesPerSec;/* for buffer estimation */
414 WORD nBlockAlign; /* block size of data */
415 } WAVEFORMAT, *LPWAVEFORMAT;
417 #define WAVE_FORMAT_PCM 1
422 } PCMWAVEFORMAT, *LPPCMWAVEFORMAT;
424 #ifndef _WAVEFORMATEX_
425 #define _WAVEFORMATEX_
426 /* dito same for Win16 / Win32 */
428 WORD wFormatTag; /* format type */
429 WORD nChannels; /* number of channels (i.e. mono, stereo...) */
430 DWORD nSamplesPerSec; /* sample rate */
431 DWORD nAvgBytesPerSec;/* for buffer estimation */
432 WORD nBlockAlign; /* block size of data */
433 WORD wBitsPerSample; /* number of bits per sample of mono data */
434 WORD cbSize; /* the count in bytes of the size of */
435 /* extra information (after cbSize) */
436 } WAVEFORMATEX, *LPWAVEFORMATEX, *NPWAVEFORMATEX, *PWAVEFORMATEX;
439 UINT WINAPI waveOutGetNumDevs(void);
440 UINT WINAPI waveOutGetDevCapsA(UINT,LPWAVEOUTCAPSA,UINT);
441 UINT WINAPI waveOutGetDevCapsW(UINT,LPWAVEOUTCAPSW,UINT);
442 #define waveOutGetDevCaps WINELIB_NAME_AW(waveOutGetDevCaps)
443 UINT WINAPI waveOutGetVolume(HWAVEOUT,DWORD*);
444 UINT WINAPI waveOutSetVolume(HWAVEOUT,DWORD);
445 UINT WINAPI waveOutGetErrorTextA(UINT,LPSTR,UINT);
446 UINT WINAPI waveOutGetErrorTextW(UINT,LPWSTR,UINT);
447 #define waveOutGetErrorText WINELIB_NAME_AW(waveOutGetErrorText)
448 UINT WINAPI waveOutOpen(HWAVEOUT*,UINT,const LPWAVEFORMATEX,DWORD,DWORD,DWORD);
449 UINT WINAPI waveOutClose(HWAVEOUT);
450 UINT WINAPI waveOutPrepareHeader(HWAVEOUT,WAVEHDR*,UINT);
451 UINT WINAPI waveOutUnprepareHeader(HWAVEOUT,WAVEHDR*,UINT);
452 UINT WINAPI waveOutWrite(HWAVEOUT,WAVEHDR*,UINT);
453 UINT WINAPI waveOutPause(HWAVEOUT);
454 UINT WINAPI waveOutRestart(HWAVEOUT);
455 UINT WINAPI waveOutReset(HWAVEOUT);
456 UINT WINAPI waveOutBreakLoop(HWAVEOUT);
457 UINT WINAPI waveOutGetPosition(HWAVEOUT,LPMMTIME,UINT);
458 UINT WINAPI waveOutGetPitch(HWAVEOUT,DWORD*);
459 UINT WINAPI waveOutSetPitch(HWAVEOUT,DWORD);
460 UINT WINAPI waveOutGetPlaybackRate(HWAVEOUT,DWORD*);
461 UINT WINAPI waveOutSetPlaybackRate(HWAVEOUT,DWORD);
462 UINT WINAPI waveOutGetID(HWAVEOUT,UINT*);
463 DWORD WINAPI waveOutMessage(HWAVEOUT,UINT,DWORD,DWORD);
464 UINT WINAPI waveInGetNumDevs(void);
465 UINT WINAPI waveInGetDevCapsA(UINT,LPWAVEINCAPSA,UINT);
466 UINT WINAPI waveInGetDevCapsW(UINT,LPWAVEINCAPSW,UINT);
467 #define waveInGetDevCaps WINELIB_NAME_AW(waveInGetDevCaps)
468 UINT WINAPI waveInGetErrorTextA(UINT,LPSTR,UINT);
469 UINT WINAPI waveInGetErrorTextW(UINT,LPWSTR,UINT);
470 #define waveInGetErrorText WINELIB_NAME_AW(waveInGetErrorText)
471 UINT WINAPI waveInOpen(HWAVEIN*,UINT,const LPWAVEFORMATEX,DWORD,DWORD,DWORD);
472 UINT WINAPI waveInClose(HWAVEIN);
473 UINT WINAPI waveInPrepareHeader(HWAVEIN,WAVEHDR*,UINT);
474 UINT WINAPI waveInUnprepareHeader(HWAVEIN,WAVEHDR*,UINT);
475 UINT WINAPI waveInAddBuffer(HWAVEIN,WAVEHDR*,UINT);
476 UINT WINAPI waveInStart(HWAVEIN);
477 UINT WINAPI waveInStop(HWAVEIN);
478 UINT WINAPI waveInReset(HWAVEIN);
479 UINT WINAPI waveInGetPosition(HWAVEIN,LPMMTIME,UINT);
480 UINT WINAPI waveInGetID(HWAVEIN,UINT*);
481 DWORD WINAPI waveInMessage(HWAVEIN,UINT,DWORD,DWORD);
483 #define MIDIERR_UNPREPARED (MIDIERR_BASE + 0) /* header not prepared */
484 #define MIDIERR_STILLPLAYING (MIDIERR_BASE + 1) /* still something playing */
485 #define MIDIERR_NOMAP (MIDIERR_BASE + 2) /* no current map */
486 #define MIDIERR_NOTREADY (MIDIERR_BASE + 3) /* hardware is still busy */
487 #define MIDIERR_NODEVICE (MIDIERR_BASE + 4) /* port no longer connected */
488 #define MIDIERR_INVALIDSETUP (MIDIERR_BASE + 5) /* invalid setup */
489 #define MIDIERR_LASTERROR (MIDIERR_BASE + 5) /* last error in range */
491 typedef LPDRVCALLBACK LPMIDICALLBACK;
492 #define MIDIPATCHSIZE 128
493 typedef WORD PATCHARRAY[MIDIPATCHSIZE];
494 typedef WORD *LPPATCHARRAY;
495 typedef WORD KEYARRAY[MIDIPATCHSIZE];
496 typedef WORD *LPKEYARRAY;
498 #define MIM_OPEN MM_MIM_OPEN
499 #define MIM_CLOSE MM_MIM_CLOSE
500 #define MIM_DATA MM_MIM_DATA
501 #define MIM_LONGDATA MM_MIM_LONGDATA
502 #define MIM_ERROR MM_MIM_ERROR
503 #define MIM_LONGERROR MM_MIM_LONGERROR
504 #define MIM_MOREDATA MM_MIM_MOREDATA
506 #define MOM_OPEN MM_MOM_OPEN
507 #define MOM_CLOSE MM_MOM_CLOSE
508 #define MOM_DONE MM_MOM_DONE
509 #define MOM_POSITIONCB MM_MOM_POSITIONCB
511 /* device ID for MIDI mapper */
513 #define MIDIMAPPER (-1)
514 #define MIDI_MAPPER (-1)
516 /* Only on Win95 and up */
517 #define MIDI_IO_STATUS 0x00000020L
519 /* flags for wFlags parm of
520 midiOutCachePatches(),
521 midiOutCacheDrumPatches() */
522 #define MIDI_CACHE_ALL 1
523 #define MIDI_CACHE_BESTFIT 2
524 #define MIDI_CACHE_QUERY 3
525 #define MIDI_UNCACHE 4
528 WORD wMid; /* manufacturer ID */
529 WORD wPid; /* product ID */
530 MMVERSION vDriverVersion; /* version of the driver */
531 CHAR szPname[MAXPNAMELEN];/* product name (NULL terminated string) */
532 WORD wTechnology; /* type of device */
533 WORD wVoices; /* # of voices (internal synth only) */
534 WORD wNotes; /* max # of notes (internal synth only) */
535 WORD wChannelMask; /* channels used (internal synth only) */
536 DWORD dwSupport; /* functionality supported by driver */
537 } MIDIOUTCAPSA, *LPMIDIOUTCAPSA;
540 WORD wMid; /* manufacturer ID */
541 WORD wPid; /* product ID */
542 MMVERSION vDriverVersion; /* version of the driver */
543 WCHAR szPname[MAXPNAMELEN];/* product name (NULL terminated string) */
544 WORD wTechnology; /* type of device */
545 WORD wVoices; /* # of voices (internal synth only) */
546 WORD wNotes; /* max # of notes (internal synth only) */
547 WORD wChannelMask; /* channels used (internal synth only) */
548 DWORD dwSupport; /* functionality supported by driver */
549 } MIDIOUTCAPSW, *LPMIDIOUTCAPSW;
551 DECL_WINELIB_TYPE_AW(MIDIOUTCAPS)
552 DECL_WINELIB_TYPE_AW(LPMIDIOUTCAPS)
554 #define MOD_MIDIPORT 1 /* output port */
555 #define MOD_SYNTH 2 /* generic internal synth */
556 #define MOD_SQSYNTH 3 /* square wave internal synth */
557 #define MOD_FMSYNTH 4 /* FM internal synth */
558 #define MOD_MAPPER 5 /* MIDI mapper */
560 #define MIDICAPS_VOLUME 0x0001 /* supports volume control */
561 #define MIDICAPS_LRVOLUME 0x0002 /* separate left-right volume control */
562 #define MIDICAPS_CACHE 0x0004
563 #define MIDICAPS_STREAM 0x0008 /* capable of supporting stream buffer */
566 WORD wMid; /* manufacturer ID */
567 WORD wPid; /* product ID */
568 MMVERSION vDriverVersion; /* version of the driver */
569 CHAR szPname[MAXPNAMELEN];/* product name (NULL terminated string) */
570 DWORD dwSupport; /* included in win95 and higher */
571 } MIDIINCAPSA, *LPMIDIINCAPSA;
574 WORD wMid; /* manufacturer ID */
575 WORD wPid; /* product ID */
576 MMVERSION vDriverVersion; /* version of the driver */
577 WCHAR szPname[MAXPNAMELEN];/* product name (NULL terminated string) */
578 DWORD dwSupport; /* included in win95 and higher */
579 } MIDIINCAPSW, *LPMIDIINCAPSW;
581 DECL_WINELIB_TYPE_AW(MIDIINCAPS)
582 DECL_WINELIB_TYPE_AW(LPMIDIINCAPS)
584 /* It seems that Win32 has a slightly different structure than Win 16.
587 typedef struct midihdr_tag {
588 LPSTR lpData; /* pointer to locked data block */
589 DWORD dwBufferLength; /* length of data in data block */
590 DWORD dwBytesRecorded;/* used for input only */
591 DWORD_PTR dwUser; /* for client's use */
592 DWORD dwFlags; /* assorted flags (see defines) */
593 struct midihdr_tag *lpNext; /* reserved for driver */
594 DWORD reserved; /* reserved for driver */
595 DWORD dwOffset; /* offset of playback in case of
597 DWORD_PTR dwReserved[8]; /* reserved for driver */
598 } MIDIHDR, *LPMIDIHDR;
600 #define MHDR_DONE 0x00000001 /* done bit */
601 #define MHDR_PREPARED 0x00000002 /* set if header prepared */
602 #define MHDR_INQUEUE 0x00000004 /* reserved for driver */
603 #define MHDR_ISSTRM 0x00000008 /* data is sent by Stream functions */
608 } MIDIPROPTEMPO, *LPMIDIPROPTEMPO;
613 } MIDIPROPTIMEDIV, *LPMIDIPROPTIMEDIV;
615 #define MIDIPROP_GET 0x40000000
616 #define MIDIPROP_SET 0x80000000
617 #define MIDIPROP_TEMPO 0x00000002
618 #define MIDIPROP_TIMEDIV 0x00000001
621 DWORD dwDeltaTime; /* Time, in MIDI ticks, between the previous
622 * event and the current event. */
623 DWORD dwStreamID; /* Reserved; must be zero. */
624 DWORD dwEvent; /* event => see MEVT_XXX macros */
625 DWORD dwParms[1]; /* extra pmts to dwEvent if F_LONG is set */
626 } MIDIEVENT, *LPMIDIEVENT;
628 #define MEVT_EVENTTYPE(x) ((BYTE) (((x)>>24)&0xFF))
629 #define MEVT_EVENTPARM(x) ((DWORD) ((x)&0x00FFFFFFL))
631 #define MEVT_F_CALLBACK 0x40000000l
632 #define MEVT_F_LONG 0x80000000l
633 #define MEVT_F_SHORT 0x00000000l
634 #define MEVT_COMMENT ((BYTE)0x82)
635 #define MEVT_LONGMSG ((BYTE)0x80)
636 #define MEVT_NOP ((BYTE)0x02)
637 #define MEVT_SHORTMSG ((BYTE)0x00)
638 #define MEVT_TEMPO ((BYTE)0x01)
639 #define MEVT_VERSION ((BYTE)0x84)
641 UINT WINAPI midiOutGetNumDevs(void);
642 UINT WINAPI midiOutGetDevCapsA(UINT,LPMIDIOUTCAPSA,UINT);
643 UINT WINAPI midiOutGetDevCapsW(UINT,LPMIDIOUTCAPSW,UINT);
644 #define midiOutGetDevCaps WINELIB_NAME_AW(midiOutGetDevCaps)
645 UINT WINAPI midiOutGetVolume(HMIDIOUT,DWORD*);
646 UINT WINAPI midiOutSetVolume(HMIDIOUT,DWORD);
647 UINT WINAPI midiOutGetErrorTextA(UINT,LPSTR,UINT);
648 UINT WINAPI midiOutGetErrorTextW(UINT,LPWSTR,UINT);
649 #define midiOutGetErrorText WINELIB_NAME_AW(midiOutGetErrorText)
650 UINT WINAPI midiOutOpen(HMIDIOUT*,UINT,DWORD,DWORD,DWORD);
651 UINT WINAPI midiOutClose(HMIDIOUT);
652 UINT WINAPI midiOutPrepareHeader(HMIDIOUT,MIDIHDR*,UINT);
653 UINT WINAPI midiOutUnprepareHeader(HMIDIOUT,MIDIHDR*,UINT);
654 UINT WINAPI midiOutShortMsg(HMIDIOUT,DWORD);
655 UINT WINAPI midiOutLongMsg(HMIDIOUT,MIDIHDR*,UINT);
656 UINT WINAPI midiOutReset(HMIDIOUT);
657 UINT WINAPI midiOutCachePatches(HMIDIOUT,UINT,WORD*,UINT);
658 UINT WINAPI midiOutCacheDrumPatches(HMIDIOUT,UINT,WORD*,UINT);
659 UINT WINAPI midiOutGetID(HMIDIOUT,UINT*);
660 DWORD WINAPI midiOutMessage(HMIDIOUT,UINT,DWORD,DWORD);
662 UINT WINAPI midiInGetNumDevs(void);
663 UINT WINAPI midiInGetDevCapsA(UINT,LPMIDIINCAPSA,UINT);
664 UINT WINAPI midiInGetDevCapsW(UINT,LPMIDIINCAPSW,UINT);
665 #define midiInGetDevCaps WINELIB_NAME_AW(midiInGetDevCaps)
666 UINT WINAPI midiInGetErrorTextA(UINT,LPSTR,UINT);
667 UINT WINAPI midiInGetErrorTextW(UINT,LPWSTR,UINT);
668 #define midiInGetErrorText WINELIB_NAME_AW(midiInGetErrorText)
669 UINT WINAPI midiInOpen(HMIDIIN*,UINT,DWORD,DWORD,DWORD);
670 UINT WINAPI midiInClose(HMIDIIN);
671 UINT WINAPI midiInPrepareHeader(HMIDIIN,MIDIHDR*,UINT);
672 UINT WINAPI midiInUnprepareHeader(HMIDIIN,MIDIHDR*,UINT);
673 UINT WINAPI midiInAddBuffer(HMIDIIN,MIDIHDR*,UINT);
674 UINT WINAPI midiInStart(HMIDIIN);
675 UINT WINAPI midiInStop(HMIDIIN);
676 UINT WINAPI midiInReset(HMIDIIN);
677 UINT WINAPI midiInGetID(HMIDIIN,UINT*);
678 DWORD WINAPI midiInMessage(HMIDIIN,UINT,DWORD,DWORD);
679 MMRESULT WINAPI midiStreamClose(HMIDISTRM hms);
680 MMRESULT WINAPI midiStreamOpen(HMIDISTRM* phms, LPUINT uDeviceID, DWORD cMidi,
681 DWORD dwCallback, DWORD dwInstance, DWORD fdwOpen);
682 MMRESULT WINAPI midiStreamOut(HMIDISTRM hms, LPMIDIHDR lpMidiHdr, UINT cbMidiHdr);
683 MMRESULT WINAPI midiStreamPause(HMIDISTRM hms);
684 MMRESULT WINAPI midiStreamPosition(HMIDISTRM hms, LPMMTIME lpmmt, UINT cbmmt);
685 MMRESULT WINAPI midiStreamProperty(HMIDISTRM hms, LPBYTE lpPropData, DWORD dwProperty);
686 MMRESULT WINAPI midiStreamRestart(HMIDISTRM hms);
687 MMRESULT WINAPI midiStreamStop(HMIDISTRM hms);
689 #define AUX_MAPPER (-1)
692 WORD wMid; /* manufacturer ID */
693 WORD wPid; /* product ID */
694 MMVERSION vDriverVersion; /* version of the driver */
695 CHAR szPname[MAXPNAMELEN]; /* product name (NULL terminated string) */
696 WORD wTechnology; /* type of device */
697 WORD wReserved1; /* padding */
698 DWORD dwSupport; /* functionality supported by driver */
699 } AUXCAPSA, *LPAUXCAPSA;
702 WORD wMid; /* manufacturer ID */
703 WORD wPid; /* product ID */
704 MMVERSION vDriverVersion; /* version of the driver */
705 WCHAR szPname[MAXPNAMELEN]; /* product name (NULL terminated string) */
706 WORD wTechnology; /* type of device */
707 WORD wReserved1; /* padding */
708 DWORD dwSupport; /* functionality supported by driver */
709 } AUXCAPSW, *LPAUXCAPSW;
711 DECL_WINELIB_TYPE_AW(AUXCAPS)
712 DECL_WINELIB_TYPE_AW(LPAUXCAPS)
714 #define AUXCAPS_CDAUDIO 1 /* audio from internal CD-ROM drive */
715 #define AUXCAPS_AUXIN 2 /* audio from auxiliary input jacks */
717 #define AUXCAPS_VOLUME 0x0001 /* supports volume control */
718 #define AUXCAPS_LRVOLUME 0x0002 /* separate left-right volume control */
720 UINT WINAPI auxGetNumDevs(void);
721 UINT WINAPI auxGetDevCapsA(UINT,LPAUXCAPSA,UINT);
722 UINT WINAPI auxGetDevCapsW(UINT,LPAUXCAPSW,UINT);
723 #define auxGetDevCaps WINELIB_NAME_AW(auxGetDevCaps)
724 UINT WINAPI auxSetVolume(UINT,DWORD);
725 UINT WINAPI auxGetVolume(UINT,LPDWORD);
726 DWORD WINAPI auxOutMessage(UINT,UINT,DWORD,DWORD);
728 #define TIMERR_NOERROR (0) /* no error */
729 #define TIMERR_NOCANDO (TIMERR_BASE+1) /* request not completed */
730 #define TIMERR_STRUCT (TIMERR_BASE+33) /* time struct size */
732 typedef void (CALLBACK *LPTIMECALLBACK)(UINT uTimerID, UINT uMessage, DWORD dwUser, DWORD dw1, DWORD dw2);
734 #define TIME_ONESHOT 0x0000 /* program timer for single event */
735 #define TIME_PERIODIC 0x0001 /* program for continuous periodic event */
736 #define TIME_CALLBACK_FUNCTION 0x0000 /* callback is function */
737 #define TIME_CALLBACK_EVENT_SET 0x0010 /* callback is event - use SetEvent */
738 #define TIME_CALLBACK_EVENT_PULSE 0x0020 /* callback is event - use PulseEvent */
739 #define TIME_KILL_SYNCHRONOUS 0x0100
744 } TIMECAPS, *LPTIMECAPS;
747 MMRESULT WINAPI timeGetSystemTime(LPMMTIME,UINT);
748 DWORD WINAPI timeGetTime(void); /* same for win32/win16 */
749 MMRESULT WINAPI timeSetEvent(UINT,UINT,LPTIMECALLBACK,DWORD,UINT);
750 MMRESULT WINAPI timeKillEvent(UINT);
751 MMRESULT WINAPI timeGetDevCaps(LPTIMECAPS,UINT);
752 MMRESULT WINAPI timeBeginPeriod(UINT);
753 MMRESULT WINAPI timeEndPeriod(UINT);
755 #define JOYERR_NOERROR (0) /* no error */
756 #define JOYERR_PARMS (JOYERR_BASE+5) /* bad parameters */
757 #define JOYERR_NOCANDO (JOYERR_BASE+6) /* request not completed */
758 #define JOYERR_UNPLUGGED (JOYERR_BASE+7) /* joystick is unplugged */
760 /* JOYINFO, JOYINFOEX, MM_JOY* */
761 #define JOY_BUTTON1 0x0001
762 #define JOY_BUTTON2 0x0002
763 #define JOY_BUTTON3 0x0004
764 #define JOY_BUTTON4 0x0008
765 #define JOY_BUTTON1CHG 0x0100
766 #define JOY_BUTTON2CHG 0x0200
767 #define JOY_BUTTON3CHG 0x0400
768 #define JOY_BUTTON4CHG 0x0800
770 #define JOYSTICKID1 0
771 #define JOYSTICKID2 1
774 #define JOYCAPS_HASZ 0x0001
775 #define JOYCAPS_HASR 0x0002
776 #define JOYCAPS_HASU 0x0004
777 #define JOYCAPS_HASV 0x0008
778 #define JOYCAPS_HASPOV 0x0010
779 #define JOYCAPS_POV4DIR 0x0020
780 #define JOYCAPS_POVCTS 0x0040
782 /* JOYINFOEX stuff */
783 #define JOY_POVCENTERED (WORD) -1
784 #define JOY_POVFORWARD 0
785 #define JOY_POVRIGHT 9000
786 #define JOY_POVBACKWARD 18000
787 #define JOY_POVLEFT 27000
789 #define JOY_RETURNX 0x00000001
790 #define JOY_RETURNY 0x00000002
791 #define JOY_RETURNZ 0x00000004
792 #define JOY_RETURNR 0x00000008
793 #define JOY_RETURNU 0x00000010
794 #define JOY_RETURNV 0x00000020
795 #define JOY_RETURNPOV 0x00000040
796 #define JOY_RETURNBUTTONS 0x00000080
797 #define JOY_RETURNRAWDATA 0x00000100
798 #define JOY_RETURNPOVCTS 0x00000200
799 #define JOY_RETURNCENTERED 0x00000400
800 #define JOY_USEDEADZONE 0x00000800
801 #define JOY_RETURNALL (JOY_RETURNX | JOY_RETURNY | JOY_RETURNZ | \
802 JOY_RETURNR | JOY_RETURNU | JOY_RETURNV | \
803 JOY_RETURNPOV | JOY_RETURNBUTTONS)
804 #define JOY_CAL_READALWAYS 0x00010000
805 #define JOY_CAL_READXYONLY 0x00020000
806 #define JOY_CAL_READ3 0x00040000
807 #define JOY_CAL_READ4 0x00080000
808 #define JOY_CAL_READXONLY 0x00100000
809 #define JOY_CAL_READYONLY 0x00200000
810 #define JOY_CAL_READ5 0x00400000
811 #define JOY_CAL_READ6 0x00800000
812 #define JOY_CAL_READZONLY 0x01000000
813 #define JOY_CAL_READRONLY 0x02000000
814 #define JOY_CAL_READUONLY 0x04000000
815 #define JOY_CAL_READVONLY 0x08000000
820 CHAR szPname[MAXPNAMELEN];
840 CHAR szRegKey[MAXPNAMELEN];
841 CHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME];
842 } JOYCAPSA, *LPJOYCAPSA;
847 WCHAR szPname[MAXPNAMELEN];
867 WCHAR szRegKey[MAXPNAMELEN];
868 WCHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME];
869 } JOYCAPSW, *LPJOYCAPSW;
870 DECL_WINELIB_TYPE_AW(JOYCAPS)
871 DECL_WINELIB_TYPE_AW(LPJOYCAPS)
878 } JOYINFO, *LPJOYINFO;
881 DWORD dwSize; /* size of structure */
882 DWORD dwFlags; /* flags to indicate what to return */
883 DWORD dwXpos; /* x position */
884 DWORD dwYpos; /* y position */
885 DWORD dwZpos; /* z position */
886 DWORD dwRpos; /* rudder/4th axis position */
887 DWORD dwUpos; /* 5th axis position */
888 DWORD dwVpos; /* 6th axis position */
889 DWORD dwButtons; /* button states */
890 DWORD dwButtonNumber; /* current button number pressed */
891 DWORD dwPOV; /* point of view state */
892 DWORD dwReserved1; /* reserved for communication between winmm & driver */
893 DWORD dwReserved2; /* reserved for future expansion */
894 } JOYINFOEX,*LPJOYINFOEX;
897 MMRESULT WINAPI joyGetDevCapsA(UINT,LPJOYCAPSA,UINT);
898 MMRESULT WINAPI joyGetDevCapsW(UINT,LPJOYCAPSW,UINT);
899 #define joyGetDevCaps WINELIB_NAME_AW(joyGetDevCaps)
900 UINT WINAPI joyGetNumDevs(void);
901 MMRESULT WINAPI joyGetPos(UINT,LPJOYINFO);
902 MMRESULT WINAPI joyGetPosEx(UINT,LPJOYINFOEX);
903 MMRESULT WINAPI joyGetThreshold(UINT,UINT*);
904 MMRESULT WINAPI joyReleaseCapture(UINT);
905 MMRESULT WINAPI joySetCapture(HWND,UINT,UINT,BOOL);
906 MMRESULT WINAPI joySetThreshold(UINT,UINT);
908 #define MIXERR_BASE 1024
909 #define MIXERR_INVALLINE (MIXERR_BASE + 0)
910 #define MIXERR_INVALCONTROL (MIXERR_BASE + 1)
911 #define MIXERR_INVALVALUE (MIXERR_BASE + 2)
912 #define MIXERR_LASTERROR (MIXERR_BASE + 2)
917 MMVERSION vDriverVersion;
918 CHAR szPname[MAXPNAMELEN];
921 } MIXERCAPSA,*LPMIXERCAPSA;
926 MMVERSION vDriverVersion;
927 WCHAR szPname[MAXPNAMELEN];
930 } MIXERCAPSW,*LPMIXERCAPSW;
932 DECL_WINELIB_TYPE_AW(MIXERCAPS)
933 DECL_WINELIB_TYPE_AW(LPMIXERCAPS)
935 #define MIXER_SHORT_NAME_CHARS 16
936 #define MIXER_LONG_NAME_CHARS 64
938 /* MIXERLINE.fdwLine */
939 #define MIXERLINE_LINEF_ACTIVE 0x00000001
940 #define MIXERLINE_LINEF_DISCONNECTED 0x00008000
941 #define MIXERLINE_LINEF_SOURCE 0x80000000
944 #define MIXER_OBJECTF_HANDLE 0x80000000L
945 #define MIXER_OBJECTF_MIXER 0x00000000L
946 #define MIXER_OBJECTF_HMIXER (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIXER)
947 #define MIXER_OBJECTF_WAVEOUT 0x10000000L
948 #define MIXER_OBJECTF_HWAVEOUT (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEOUT)
949 #define MIXER_OBJECTF_WAVEIN 0x20000000L
950 #define MIXER_OBJECTF_HWAVEIN (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEIN)
951 #define MIXER_OBJECTF_MIDIOUT 0x30000000L
952 #define MIXER_OBJECTF_HMIDIOUT (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIOUT)
953 #define MIXER_OBJECTF_MIDIIN 0x40000000L
954 #define MIXER_OBJECTF_HMIDIIN (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIIN)
955 #define MIXER_OBJECTF_AUX 0x50000000L
957 /* MIXERLINE.dwComponentType */
958 /* component types for destinations and sources */
959 #define MIXERLINE_COMPONENTTYPE_DST_FIRST 0x00000000L
960 #define MIXERLINE_COMPONENTTYPE_DST_UNDEFINED (MIXERLINE_COMPONENTTYPE_DST_FIRST + 0)
961 #define MIXERLINE_COMPONENTTYPE_DST_DIGITAL (MIXERLINE_COMPONENTTYPE_DST_FIRST + 1)
962 #define MIXERLINE_COMPONENTTYPE_DST_LINE (MIXERLINE_COMPONENTTYPE_DST_FIRST + 2)
963 #define MIXERLINE_COMPONENTTYPE_DST_MONITOR (MIXERLINE_COMPONENTTYPE_DST_FIRST + 3)
964 #define MIXERLINE_COMPONENTTYPE_DST_SPEAKERS (MIXERLINE_COMPONENTTYPE_DST_FIRST + 4)
965 #define MIXERLINE_COMPONENTTYPE_DST_HEADPHONES (MIXERLINE_COMPONENTTYPE_DST_FIRST + 5)
966 #define MIXERLINE_COMPONENTTYPE_DST_TELEPHONE (MIXERLINE_COMPONENTTYPE_DST_FIRST + 6)
967 #define MIXERLINE_COMPONENTTYPE_DST_WAVEIN (MIXERLINE_COMPONENTTYPE_DST_FIRST + 7)
968 #define MIXERLINE_COMPONENTTYPE_DST_VOICEIN (MIXERLINE_COMPONENTTYPE_DST_FIRST + 8)
969 #define MIXERLINE_COMPONENTTYPE_DST_LAST (MIXERLINE_COMPONENTTYPE_DST_FIRST + 8)
971 #define MIXERLINE_COMPONENTTYPE_SRC_FIRST 0x00001000L
972 #define MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 0)
973 #define MIXERLINE_COMPONENTTYPE_SRC_DIGITAL (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 1)
974 #define MIXERLINE_COMPONENTTYPE_SRC_LINE (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 2)
975 #define MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 3)
976 #define MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 4)
977 #define MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 5)
978 #define MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 6)
979 #define MIXERLINE_COMPONENTTYPE_SRC_PCSPEAKER (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 7)
980 #define MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 8)
981 #define MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 9)
982 #define MIXERLINE_COMPONENTTYPE_SRC_ANALOG (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 10)
983 #define MIXERLINE_COMPONENTTYPE_SRC_LAST (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 10)
985 /* MIXERLINE.Target.dwType */
986 #define MIXERLINE_TARGETTYPE_UNDEFINED 0
987 #define MIXERLINE_TARGETTYPE_WAVEOUT 1
988 #define MIXERLINE_TARGETTYPE_WAVEIN 2
989 #define MIXERLINE_TARGETTYPE_MIDIOUT 3
990 #define MIXERLINE_TARGETTYPE_MIDIIN 4
991 #define MIXERLINE_TARGETTYPE_AUX 5
1000 DWORD dwComponentType;
1004 CHAR szShortName[MIXER_SHORT_NAME_CHARS];
1005 CHAR szName[MIXER_LONG_NAME_CHARS];
1011 MMVERSION vDriverVersion;
1012 CHAR szPname[MAXPNAMELEN];
1014 } MIXERLINEA, *LPMIXERLINEA;
1018 DWORD dwDestination;
1023 DWORD dwComponentType;
1027 WCHAR szShortName[MIXER_SHORT_NAME_CHARS];
1028 WCHAR szName[MIXER_LONG_NAME_CHARS];
1034 MMVERSION vDriverVersion;
1035 WCHAR szPname[MAXPNAMELEN];
1037 } MIXERLINEW, *LPMIXERLINEW;
1039 DECL_WINELIB_TYPE_AW(MIXERLINE)
1040 DECL_WINELIB_TYPE_AW(LPMIXERLINE)
1042 /* MIXERCONTROL.fdwControl */
1043 #define MIXERCONTROL_CONTROLF_UNIFORM 0x00000001L
1044 #define MIXERCONTROL_CONTROLF_MULTIPLE 0x00000002L
1045 #define MIXERCONTROL_CONTROLF_DISABLED 0x80000000L
1047 /* MIXERCONTROL_CONTROLTYPE_xxx building block defines */
1048 #define MIXERCONTROL_CT_CLASS_MASK 0xF0000000L
1049 #define MIXERCONTROL_CT_CLASS_CUSTOM 0x00000000L
1050 #define MIXERCONTROL_CT_CLASS_METER 0x10000000L
1051 #define MIXERCONTROL_CT_CLASS_SWITCH 0x20000000L
1052 #define MIXERCONTROL_CT_CLASS_NUMBER 0x30000000L
1053 #define MIXERCONTROL_CT_CLASS_SLIDER 0x40000000L
1054 #define MIXERCONTROL_CT_CLASS_FADER 0x50000000L
1055 #define MIXERCONTROL_CT_CLASS_TIME 0x60000000L
1056 #define MIXERCONTROL_CT_CLASS_LIST 0x70000000L
1058 #define MIXERCONTROL_CT_SUBCLASS_MASK 0x0F000000L
1060 #define MIXERCONTROL_CT_SC_SWITCH_BOOLEAN 0x00000000L
1061 #define MIXERCONTROL_CT_SC_SWITCH_BUTTON 0x01000000L
1063 #define MIXERCONTROL_CT_SC_METER_POLLED 0x00000000L
1065 #define MIXERCONTROL_CT_SC_TIME_MICROSECS 0x00000000L
1066 #define MIXERCONTROL_CT_SC_TIME_MILLISECS 0x01000000L
1068 #define MIXERCONTROL_CT_SC_LIST_SINGLE 0x00000000L
1069 #define MIXERCONTROL_CT_SC_LIST_MULTIPLE 0x01000000L
1071 #define MIXERCONTROL_CT_UNITS_MASK 0x00FF0000L
1072 #define MIXERCONTROL_CT_UNITS_CUSTOM 0x00000000L
1073 #define MIXERCONTROL_CT_UNITS_BOOLEAN 0x00010000L
1074 #define MIXERCONTROL_CT_UNITS_SIGNED 0x00020000L
1075 #define MIXERCONTROL_CT_UNITS_UNSIGNED 0x00030000L
1076 #define MIXERCONTROL_CT_UNITS_DECIBELS 0x00040000L /* in 10ths */
1077 #define MIXERCONTROL_CT_UNITS_PERCENT 0x00050000L /* in 10ths */
1079 /* Commonly used control types for specifying MIXERCONTROL.dwControlType */
1080 #define MIXERCONTROL_CONTROLTYPE_CUSTOM (MIXERCONTROL_CT_CLASS_CUSTOM | MIXERCONTROL_CT_UNITS_CUSTOM)
1081 #define MIXERCONTROL_CONTROLTYPE_BOOLEANMETER (MIXERCONTROL_CT_CLASS_METER | MIXERCONTROL_CT_SC_METER_POLLED | MIXERCONTROL_CT_UNITS_BOOLEAN)
1082 #define MIXERCONTROL_CONTROLTYPE_SIGNEDMETER (MIXERCONTROL_CT_CLASS_METER | MIXERCONTROL_CT_SC_METER_POLLED | MIXERCONTROL_CT_UNITS_SIGNED)
1083 #define MIXERCONTROL_CONTROLTYPE_PEAKMETER (MIXERCONTROL_CONTROLTYPE_SIGNEDMETER + 1)
1084 #define MIXERCONTROL_CONTROLTYPE_UNSIGNEDMETER (MIXERCONTROL_CT_CLASS_METER | MIXERCONTROL_CT_SC_METER_POLLED | MIXERCONTROL_CT_UNITS_UNSIGNED)
1085 #define MIXERCONTROL_CONTROLTYPE_BOOLEAN (MIXERCONTROL_CT_CLASS_SWITCH | MIXERCONTROL_CT_SC_SWITCH_BOOLEAN | MIXERCONTROL_CT_UNITS_BOOLEAN)
1086 #define MIXERCONTROL_CONTROLTYPE_ONOFF (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 1)
1087 #define MIXERCONTROL_CONTROLTYPE_MUTE (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 2)
1088 #define MIXERCONTROL_CONTROLTYPE_MONO (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 3)
1089 #define MIXERCONTROL_CONTROLTYPE_LOUDNESS (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 4)
1090 #define MIXERCONTROL_CONTROLTYPE_STEREOENH (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 5)
1091 #define MIXERCONTROL_CONTROLTYPE_BUTTON (MIXERCONTROL_CT_CLASS_SWITCH | MIXERCONTROL_CT_SC_SWITCH_BUTTON | MIXERCONTROL_CT_UNITS_BOOLEAN)
1092 #define MIXERCONTROL_CONTROLTYPE_DECIBELS (MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_DECIBELS)
1093 #define MIXERCONTROL_CONTROLTYPE_SIGNED (MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_SIGNED)
1094 #define MIXERCONTROL_CONTROLTYPE_UNSIGNED (MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_UNSIGNED)
1095 #define MIXERCONTROL_CONTROLTYPE_PERCENT (MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_PERCENT)
1096 #define MIXERCONTROL_CONTROLTYPE_SLIDER (MIXERCONTROL_CT_CLASS_SLIDER | MIXERCONTROL_CT_UNITS_SIGNED)
1097 #define MIXERCONTROL_CONTROLTYPE_PAN (MIXERCONTROL_CONTROLTYPE_SLIDER + 1)
1098 #define MIXERCONTROL_CONTROLTYPE_QSOUNDPAN (MIXERCONTROL_CONTROLTYPE_SLIDER + 2)
1099 #define MIXERCONTROL_CONTROLTYPE_FADER (MIXERCONTROL_CT_CLASS_FADER | MIXERCONTROL_CT_UNITS_UNSIGNED)
1100 #define MIXERCONTROL_CONTROLTYPE_VOLUME (MIXERCONTROL_CONTROLTYPE_FADER + 1)
1101 #define MIXERCONTROL_CONTROLTYPE_BASS (MIXERCONTROL_CONTROLTYPE_FADER + 2)
1102 #define MIXERCONTROL_CONTROLTYPE_TREBLE (MIXERCONTROL_CONTROLTYPE_FADER + 3)
1103 #define MIXERCONTROL_CONTROLTYPE_EQUALIZER (MIXERCONTROL_CONTROLTYPE_FADER + 4)
1104 #define MIXERCONTROL_CONTROLTYPE_SINGLESELECT (MIXERCONTROL_CT_CLASS_LIST | MIXERCONTROL_CT_SC_LIST_SINGLE | MIXERCONTROL_CT_UNITS_BOOLEAN)
1105 #define MIXERCONTROL_CONTROLTYPE_MUX (MIXERCONTROL_CONTROLTYPE_SINGLESELECT + 1)
1106 #define MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT (MIXERCONTROL_CT_CLASS_LIST | MIXERCONTROL_CT_SC_LIST_MULTIPLE | MIXERCONTROL_CT_UNITS_BOOLEAN)
1107 #define MIXERCONTROL_CONTROLTYPE_MIXER (MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT + 1)
1108 #define MIXERCONTROL_CONTROLTYPE_MICROTIME (MIXERCONTROL_CT_CLASS_TIME | MIXERCONTROL_CT_SC_TIME_MICROSECS | MIXERCONTROL_CT_UNITS_UNSIGNED)
1109 #define MIXERCONTROL_CONTROLTYPE_MILLITIME (MIXERCONTROL_CT_CLASS_TIME | MIXERCONTROL_CT_SC_TIME_MILLISECS | MIXERCONTROL_CT_UNITS_UNSIGNED)
1115 DWORD dwControlType;
1117 DWORD cMultipleItems;
1118 CHAR szShortName[MIXER_SHORT_NAME_CHARS];
1119 CHAR szName[MIXER_LONG_NAME_CHARS];
1129 DWORD dwReserved[6];
1134 DWORD dwReserved[6];
1136 } MIXERCONTROLA, *LPMIXERCONTROLA;
1141 DWORD dwControlType;
1143 DWORD cMultipleItems;
1144 WCHAR szShortName[MIXER_SHORT_NAME_CHARS];
1145 WCHAR szName[MIXER_LONG_NAME_CHARS];
1155 DWORD dwReserved[6];
1160 DWORD dwReserved[6];
1162 } MIXERCONTROLW, *LPMIXERCONTROLW;
1164 DECL_WINELIB_TYPE_AW(MIXERCONTROL)
1165 DECL_WINELIB_TYPE_AW(LPMIXERCONTROL)
1172 DWORD dwControlType;
1176 LPMIXERCONTROLA pamxctrl;
1177 } MIXERLINECONTROLSA, *LPMIXERLINECONTROLSA;
1184 DWORD dwControlType;
1188 LPMIXERCONTROLW pamxctrl;
1189 } MIXERLINECONTROLSW, *LPMIXERLINECONTROLSW;
1191 DECL_WINELIB_TYPE_AW(MIXERLINECONTROLS)
1192 DECL_WINELIB_TYPE_AW(LPMIXERLINECONTROLS)
1200 DWORD cMultipleItems;
1204 } MIXERCONTROLDETAILS,*LPMIXERCONTROLDETAILS;
1209 CHAR szName[MIXER_LONG_NAME_CHARS];
1210 } MIXERCONTROLDETAILS_LISTTEXTA,*LPMIXERCONTROLDETAILS_LISTTEXTA;
1215 WCHAR szName[MIXER_LONG_NAME_CHARS];
1216 } MIXERCONTROLDETAILS_LISTTEXTW,*LPMIXERCONTROLDETAILS_LISTTEXTW;
1218 DECL_WINELIB_TYPE_AW(MIXERCONTROLDETAILS_LISTTEXT)
1219 DECL_WINELIB_TYPE_AW(LPMIXERCONTROLDETAILS_LISTTEXT)
1221 /* MIXER_GETCONTROLDETAILSF_VALUE */
1224 } MIXERCONTROLDETAILS_BOOLEAN,*LPMIXERCONTROLDETAILS_BOOLEAN;
1228 } MIXERCONTROLDETAILS_SIGNED,*LPMIXERCONTROLDETAILS_SIGNED;
1232 } MIXERCONTROLDETAILS_UNSIGNED,*LPMIXERCONTROLDETAILS_UNSIGNED;
1234 /* bits passed to mixerGetLineInfo.fdwInfo */
1235 #define MIXER_GETLINEINFOF_DESTINATION 0x00000000L
1236 #define MIXER_GETLINEINFOF_SOURCE 0x00000001L
1237 #define MIXER_GETLINEINFOF_LINEID 0x00000002L
1238 #define MIXER_GETLINEINFOF_COMPONENTTYPE 0x00000003L
1239 #define MIXER_GETLINEINFOF_TARGETTYPE 0x00000004L
1240 #define MIXER_GETLINEINFOF_QUERYMASK 0x0000000FL
1242 /* bitmask passed to mixerGetLineControl */
1243 #define MIXER_GETLINECONTROLSF_ALL 0x00000000L
1244 #define MIXER_GETLINECONTROLSF_ONEBYID 0x00000001L
1245 #define MIXER_GETLINECONTROLSF_ONEBYTYPE 0x00000002L
1246 #define MIXER_GETLINECONTROLSF_QUERYMASK 0x0000000FL
1248 /* bitmask passed to mixerGetControlDetails */
1249 #define MIXER_GETCONTROLDETAILSF_VALUE 0x00000000L
1250 #define MIXER_GETCONTROLDETAILSF_LISTTEXT 0x00000001L
1251 #define MIXER_GETCONTROLDETAILSF_QUERYMASK 0x0000000FL
1253 /* bitmask passed to mixerSetControlDetails */
1254 #define MIXER_SETCONTROLDETAILSF_VALUE 0x00000000L
1255 #define MIXER_SETCONTROLDETAILSF_CUSTOM 0x00000001L
1256 #define MIXER_SETCONTROLDETAILSF_QUERYMASK 0x0000000FL
1258 UINT WINAPI mixerGetNumDevs(void);
1259 UINT WINAPI mixerOpen(LPHMIXER,UINT,DWORD,DWORD,DWORD);
1260 UINT WINAPI mixerClose(HMIXER);
1261 UINT WINAPI mixerMessage(HMIXER,UINT,DWORD,DWORD);
1262 UINT WINAPI mixerGetDevCapsA(UINT,LPMIXERCAPSA,UINT);
1263 UINT WINAPI mixerGetDevCapsW(UINT,LPMIXERCAPSW,UINT);
1264 #define mixerGetDevCaps WINELIB_NAME_AW(mixerGetDevCaps)
1265 UINT WINAPI mixerGetLineInfoA(HMIXEROBJ,LPMIXERLINEA,DWORD);
1266 UINT WINAPI mixerGetLineInfoW(HMIXEROBJ,LPMIXERLINEW,DWORD);
1267 #define mixerGetLineInfo WINELIB_NAME_AW(mixerGetLineInfo)
1268 UINT WINAPI mixerGetID(HMIXEROBJ,LPUINT,DWORD);
1269 UINT WINAPI mixerGetLineControlsA(HMIXEROBJ,LPMIXERLINECONTROLSA,DWORD);
1270 UINT WINAPI mixerGetLineControlsW(HMIXEROBJ,LPMIXERLINECONTROLSW,DWORD);
1271 #define mixerGetLineControls WINELIB_NAME_AW(mixerGetLineControls)
1272 UINT WINAPI mixerGetControlDetailsA(HMIXEROBJ,LPMIXERCONTROLDETAILS,DWORD);
1273 UINT WINAPI mixerGetControlDetailsW(HMIXEROBJ,LPMIXERCONTROLDETAILS,DWORD);
1274 #define mixerGetControlDetails WINELIB_NAME_AW(mixerGetControlDetails)
1275 UINT WINAPI mixerSetControlDetails(HMIXEROBJ,LPMIXERCONTROLDETAILS,DWORD);
1277 #define MMIOERR_BASE 256
1278 #define MMIOERR_FILENOTFOUND (MMIOERR_BASE + 1) /* file not found */
1279 #define MMIOERR_OUTOFMEMORY (MMIOERR_BASE + 2) /* out of memory */
1280 #define MMIOERR_CANNOTOPEN (MMIOERR_BASE + 3) /* cannot open */
1281 #define MMIOERR_CANNOTCLOSE (MMIOERR_BASE + 4) /* cannot close */
1282 #define MMIOERR_CANNOTREAD (MMIOERR_BASE + 5) /* cannot read */
1283 #define MMIOERR_CANNOTWRITE (MMIOERR_BASE + 6) /* cannot write */
1284 #define MMIOERR_CANNOTSEEK (MMIOERR_BASE + 7) /* cannot seek */
1285 #define MMIOERR_CANNOTEXPAND (MMIOERR_BASE + 8) /* cannot expand file */
1286 #define MMIOERR_CHUNKNOTFOUND (MMIOERR_BASE + 9) /* chunk not found */
1287 #define MMIOERR_UNBUFFERED (MMIOERR_BASE + 10) /* file is unbuffered */
1289 #define CFSEPCHAR '+' /* compound file name separator char. */
1291 typedef DWORD FOURCC; /* a four character code */
1292 typedef LRESULT (CALLBACK *LPMMIOPROC) (LPSTR lpmmioinfo, UINT uMessage,
1293 LPARAM lParam1, LPARAM lParam2);
1301 /* fields maintained by MMIO functions during buffered I/O */
1308 /* fields maintained by I/O procedure */
1311 /* other fields maintained by MMIO */
1315 } MMIOINFO, *PMMIOINFO, *LPMMIOINFO;
1318 typedef struct _MMCKINFO
1320 FOURCC ckid; /* chunk ID */
1321 DWORD cksize; /* chunk size */
1322 FOURCC fccType; /* form type or list type */
1323 DWORD dwDataOffset; /* offset of data portion of chunk */
1324 DWORD dwFlags; /* flags used by MMIO functions */
1325 } MMCKINFO, *LPMMCKINFO;
1327 #define MMIO_RWMODE 0x00000003 /* open file for reading/writing/both */
1328 #define MMIO_SHAREMODE 0x00000070 /* file sharing mode number */
1330 #define MMIO_CREATE 0x00001000 /* create new file (or truncate file) */
1331 #define MMIO_PARSE 0x00000100 /* parse new file returning path */
1332 #define MMIO_DELETE 0x00000200 /* create new file (or truncate file) */
1333 #define MMIO_EXIST 0x00004000 /* checks for existence of file */
1334 #define MMIO_ALLOCBUF 0x00010000 /* mmioOpen() should allocate a buffer */
1335 #define MMIO_GETTEMP 0x00020000 /* mmioOpen() should retrieve temp name */
1337 #define MMIO_DIRTY 0x10000000 /* I/O buffer is dirty */
1339 #define MMIO_READ 0x00000000 /* open file for reading only */
1340 #define MMIO_WRITE 0x00000001 /* open file for writing only */
1341 #define MMIO_READWRITE 0x00000002 /* open file for reading and writing */
1343 #define MMIO_COMPAT 0x00000000 /* compatibility mode */
1344 #define MMIO_EXCLUSIVE 0x00000010 /* exclusive-access mode */
1345 #define MMIO_DENYWRITE 0x00000020 /* deny writing to other processes */
1346 #define MMIO_DENYREAD 0x00000030 /* deny reading to other processes */
1347 #define MMIO_DENYNONE 0x00000040 /* deny nothing to other processes */
1349 #define MMIO_FHOPEN 0x0010 /* mmioClose: keep file handle open */
1350 #define MMIO_EMPTYBUF 0x0010 /* mmioFlush: empty the I/O buffer */
1351 #define MMIO_TOUPPER 0x0010 /* mmioStringToFOURCC: to u-case */
1352 #define MMIO_INSTALLPROC 0x00010000 /* mmioInstallIOProc: install MMIOProc */
1353 #define MMIO_GLOBALPROC 0x10000000 /* mmioInstallIOProc: install globally */
1354 #define MMIO_REMOVEPROC 0x00020000 /* mmioInstallIOProc: remove MMIOProc */
1355 #define MMIO_FINDPROC 0x00040000 /* mmioInstallIOProc: find an MMIOProc */
1356 #define MMIO_FINDCHUNK 0x0010 /* mmioDescend: find a chunk by ID */
1357 #define MMIO_FINDRIFF 0x0020 /* mmioDescend: find a LIST chunk */
1358 #define MMIO_FINDLIST 0x0040 /* mmioDescend: find a RIFF chunk */
1359 #define MMIO_CREATERIFF 0x0020 /* mmioCreateChunk: make a LIST chunk */
1360 #define MMIO_CREATELIST 0x0040 /* mmioCreateChunk: make a RIFF chunk */
1366 #endif /* SEEK_SET */
1368 #define MMIOM_READ MMIO_READ /* read */
1369 #define MMIOM_WRITE MMIO_WRITE /* write */
1370 #define MMIOM_SEEK 2 /* seek to a new position in file */
1371 #define MMIOM_OPEN 3 /* open file */
1372 #define MMIOM_CLOSE 4 /* close file */
1373 #define MMIOM_WRITEFLUSH 5 /* write and flush */
1375 #define MMIOM_RENAME 6 /* rename specified file */
1377 #define MMIOM_USER 0x8000 /* beginning of user-defined messages */
1379 #define FOURCC_RIFF mmioFOURCC('R', 'I', 'F', 'F')
1380 #define FOURCC_LIST mmioFOURCC('L', 'I', 'S', 'T')
1382 #define FOURCC_DOS mmioFOURCC('D', 'O', 'S', ' ')
1383 #define FOURCC_MEM mmioFOURCC('M', 'E', 'M', ' ')
1385 #define MMIO_DEFAULTBUFFER 8192 /* default buffer size */
1387 #define mmioFOURCC( ch0, ch1, ch2, ch3 ) \
1388 ( (DWORD)(BYTE)(ch0) | ( (DWORD)(BYTE)(ch1) << 8 ) | \
1389 ( (DWORD)(BYTE)(ch2) << 16 ) | ( (DWORD)(BYTE)(ch3) << 24 ) )
1391 LPMMIOPROC WINAPI mmioInstallIOProcA(FOURCC,LPMMIOPROC,DWORD);
1392 LPMMIOPROC WINAPI mmioInstallIOProcW(FOURCC,LPMMIOPROC,DWORD);
1393 #define mmioInstallIOProc WINELIB_NAME_AW(mmioInstallIOProc)
1395 FOURCC WINAPI mmioStringToFOURCCA(LPCSTR,UINT);
1396 FOURCC WINAPI mmioStringToFOURCCW(LPCWSTR,UINT);
1397 #define mmioStringToFOURCC WINELIB_NAME_AW(mmioStringToFOURCC)
1398 HMMIO WINAPI mmioOpenA(LPSTR,MMIOINFO*,DWORD);
1399 HMMIO WINAPI mmioOpenW(LPWSTR,MMIOINFO*,DWORD);
1400 #define mmioOpen WINELIB_NAME_AW(mmioOpen)
1402 MMRESULT WINAPI mmioRenameA(LPCSTR szFileName, LPCSTR szNewFileName,
1403 MMIOINFO * lpmmioinfo, DWORD dwRenameFlags);
1404 MMRESULT WINAPI mmioRenameW(LPCWSTR szFileName, LPCWSTR szNewFileName,
1405 MMIOINFO * lpmmioinfo, DWORD dwRenameFlags);
1406 #define mmioRename WINELIB_NAME_AW(mmioRename)
1408 MMRESULT WINAPI mmioClose(HMMIO,UINT);
1409 LONG WINAPI mmioRead(HMMIO,HPSTR,LONG);
1410 LONG WINAPI mmioWrite(HMMIO,HPCSTR,LONG);
1411 LONG WINAPI mmioSeek(HMMIO,LONG,INT);
1412 MMRESULT WINAPI mmioGetInfo(HMMIO,MMIOINFO*,UINT);
1413 MMRESULT WINAPI mmioSetInfo(HMMIO,const MMIOINFO*,UINT);
1414 MMRESULT WINAPI mmioSetBuffer(HMMIO,LPSTR,LONG,UINT);
1415 MMRESULT WINAPI mmioFlush(HMMIO,UINT);
1416 MMRESULT WINAPI mmioAdvance(HMMIO,MMIOINFO*,UINT);
1417 LRESULT WINAPI mmioSendMessage(HMMIO,UINT,LPARAM,LPARAM);
1418 MMRESULT WINAPI mmioDescend(HMMIO,MMCKINFO*,const MMCKINFO*,UINT);
1419 MMRESULT WINAPI mmioAscend(HMMIO,MMCKINFO*,UINT);
1420 MMRESULT WINAPI mmioCreateChunk(HMMIO,MMCKINFO*,UINT);
1422 typedef UINT (CALLBACK *YIELDPROC)(MCIDEVICEID,DWORD);
1424 DWORD WINAPI mciSendCommandA(UINT,UINT,DWORD,DWORD);
1425 DWORD WINAPI mciSendCommandW(UINT,UINT,DWORD,DWORD);
1426 #define mciSendCommand WINELIB_NAME_AW(mciSendCommand)
1427 DWORD WINAPI mciSendStringA(LPCSTR,LPSTR,UINT,HWND);
1428 DWORD WINAPI mciSendStringW(LPCWSTR,LPSTR,UINT,HWND);
1429 #define mciSendString WINELIB_NAME_AW(mciSendString)
1430 UINT WINAPI mciGetDeviceIDA(LPCSTR);
1431 UINT WINAPI mciGetDeviceIDW(LPCWSTR);
1432 #define mciGetDeviceID WINELIB_NAME_AW(mciGetDeviceID)
1433 BOOL WINAPI mciGetErrorStringA(DWORD,LPSTR,UINT);
1434 BOOL WINAPI mciGetErrorStringW(DWORD,LPWSTR,UINT);
1435 #define mciGetErrorString WINELIB_NAME_AW(mciGetErrorString)
1436 BOOL WINAPI mciSetYieldProc(UINT,YIELDPROC,DWORD);
1437 HTASK WINAPI mciGetCreatorTask(UINT);
1438 YIELDPROC WINAPI mciGetYieldProc(UINT,DWORD*);
1440 #define MCIERR_INVALID_DEVICE_ID (MCIERR_BASE + 1)
1441 #define MCIERR_UNRECOGNIZED_KEYWORD (MCIERR_BASE + 3)
1442 #define MCIERR_UNRECOGNIZED_COMMAND (MCIERR_BASE + 5)
1443 #define MCIERR_HARDWARE (MCIERR_BASE + 6)
1444 #define MCIERR_INVALID_DEVICE_NAME (MCIERR_BASE + 7)
1445 #define MCIERR_OUT_OF_MEMORY (MCIERR_BASE + 8)
1446 #define MCIERR_DEVICE_OPEN (MCIERR_BASE + 9)
1447 #define MCIERR_CANNOT_LOAD_DRIVER (MCIERR_BASE + 10)
1448 #define MCIERR_MISSING_COMMAND_STRING (MCIERR_BASE + 11)
1449 #define MCIERR_PARAM_OVERFLOW (MCIERR_BASE + 12)
1450 #define MCIERR_MISSING_STRING_ARGUMENT (MCIERR_BASE + 13)
1451 #define MCIERR_BAD_INTEGER (MCIERR_BASE + 14)
1452 #define MCIERR_PARSER_INTERNAL (MCIERR_BASE + 15)
1453 #define MCIERR_DRIVER_INTERNAL (MCIERR_BASE + 16)
1454 #define MCIERR_MISSING_PARAMETER (MCIERR_BASE + 17)
1455 #define MCIERR_UNSUPPORTED_FUNCTION (MCIERR_BASE + 18)
1456 #define MCIERR_FILE_NOT_FOUND (MCIERR_BASE + 19)
1457 #define MCIERR_DEVICE_NOT_READY (MCIERR_BASE + 20)
1458 #define MCIERR_INTERNAL (MCIERR_BASE + 21)
1459 #define MCIERR_DRIVER (MCIERR_BASE + 22)
1460 #define MCIERR_CANNOT_USE_ALL (MCIERR_BASE + 23)
1461 #define MCIERR_MULTIPLE (MCIERR_BASE + 24)
1462 #define MCIERR_EXTENSION_NOT_FOUND (MCIERR_BASE + 25)
1463 #define MCIERR_OUTOFRANGE (MCIERR_BASE + 26)
1464 #define MCIERR_FLAGS_NOT_COMPATIBLE (MCIERR_BASE + 28)
1465 #define MCIERR_FILE_NOT_SAVED (MCIERR_BASE + 30)
1466 #define MCIERR_DEVICE_TYPE_REQUIRED (MCIERR_BASE + 31)
1467 #define MCIERR_DEVICE_LOCKED (MCIERR_BASE + 32)
1468 #define MCIERR_DUPLICATE_ALIAS (MCIERR_BASE + 33)
1469 #define MCIERR_BAD_CONSTANT (MCIERR_BASE + 34)
1470 #define MCIERR_MUST_USE_SHAREABLE (MCIERR_BASE + 35)
1471 #define MCIERR_MISSING_DEVICE_NAME (MCIERR_BASE + 36)
1472 #define MCIERR_BAD_TIME_FORMAT (MCIERR_BASE + 37)
1473 #define MCIERR_NO_CLOSING_QUOTE (MCIERR_BASE + 38)
1474 #define MCIERR_DUPLICATE_FLAGS (MCIERR_BASE + 39)
1475 #define MCIERR_INVALID_FILE (MCIERR_BASE + 40)
1476 #define MCIERR_NULL_PARAMETER_BLOCK (MCIERR_BASE + 41)
1477 #define MCIERR_UNNAMED_RESOURCE (MCIERR_BASE + 42)
1478 #define MCIERR_NEW_REQUIRES_ALIAS (MCIERR_BASE + 43)
1479 #define MCIERR_NOTIFY_ON_AUTO_OPEN (MCIERR_BASE + 44)
1480 #define MCIERR_NO_ELEMENT_ALLOWED (MCIERR_BASE + 45)
1481 #define MCIERR_NONAPPLICABLE_FUNCTION (MCIERR_BASE + 46)
1482 #define MCIERR_ILLEGAL_FOR_AUTO_OPEN (MCIERR_BASE + 47)
1483 #define MCIERR_FILENAME_REQUIRED (MCIERR_BASE + 48)
1484 #define MCIERR_EXTRA_CHARACTERS (MCIERR_BASE + 49)
1485 #define MCIERR_DEVICE_NOT_INSTALLED (MCIERR_BASE + 50)
1486 #define MCIERR_GET_CD (MCIERR_BASE + 51)
1487 #define MCIERR_SET_CD (MCIERR_BASE + 52)
1488 #define MCIERR_SET_DRIVE (MCIERR_BASE + 53)
1489 #define MCIERR_DEVICE_LENGTH (MCIERR_BASE + 54)
1490 #define MCIERR_DEVICE_ORD_LENGTH (MCIERR_BASE + 55)
1491 #define MCIERR_NO_INTEGER (MCIERR_BASE + 56)
1493 #define MCIERR_WAVE_OUTPUTSINUSE (MCIERR_BASE + 64)
1494 #define MCIERR_WAVE_SETOUTPUTINUSE (MCIERR_BASE + 65)
1495 #define MCIERR_WAVE_INPUTSINUSE (MCIERR_BASE + 66)
1496 #define MCIERR_WAVE_SETINPUTINUSE (MCIERR_BASE + 67)
1497 #define MCIERR_WAVE_OUTPUTUNSPECIFIED (MCIERR_BASE + 68)
1498 #define MCIERR_WAVE_INPUTUNSPECIFIED (MCIERR_BASE + 69)
1499 #define MCIERR_WAVE_OUTPUTSUNSUITABLE (MCIERR_BASE + 70)
1500 #define MCIERR_WAVE_SETOUTPUTUNSUITABLE (MCIERR_BASE + 71)
1501 #define MCIERR_WAVE_INPUTSUNSUITABLE (MCIERR_BASE + 72)
1502 #define MCIERR_WAVE_SETINPUTUNSUITABLE (MCIERR_BASE + 73)
1504 #define MCIERR_SEQ_DIV_INCOMPATIBLE (MCIERR_BASE + 80)
1505 #define MCIERR_SEQ_PORT_INUSE (MCIERR_BASE + 81)
1506 #define MCIERR_SEQ_PORT_NONEXISTENT (MCIERR_BASE + 82)
1507 #define MCIERR_SEQ_PORT_MAPNODEVICE (MCIERR_BASE + 83)
1508 #define MCIERR_SEQ_PORT_MISCERROR (MCIERR_BASE + 84)
1509 #define MCIERR_SEQ_TIMER (MCIERR_BASE + 85)
1510 #define MCIERR_SEQ_PORTUNSPECIFIED (MCIERR_BASE + 86)
1511 #define MCIERR_SEQ_NOMIDIPRESENT (MCIERR_BASE + 87)
1513 #define MCIERR_NO_WINDOW (MCIERR_BASE + 90)
1514 #define MCIERR_CREATEWINDOW (MCIERR_BASE + 91)
1515 #define MCIERR_FILE_READ (MCIERR_BASE + 92)
1516 #define MCIERR_FILE_WRITE (MCIERR_BASE + 93)
1518 #define MCIERR_NO_IDENTITY (MCIERR_BASE + 94)
1520 #define MCIERR_CUSTOM_DRIVER_BASE (MCIERR_BASE + 256)
1522 #define MCI_OPEN_DRIVER 0x0801
1523 #define MCI_CLOSE_DRIVER 0x0802
1524 #define MCI_OPEN 0x0803
1525 #define MCI_CLOSE 0x0804
1526 #define MCI_ESCAPE 0x0805
1527 #define MCI_PLAY 0x0806
1528 #define MCI_SEEK 0x0807
1529 #define MCI_STOP 0x0808
1530 #define MCI_PAUSE 0x0809
1531 #define MCI_INFO 0x080A
1532 #define MCI_GETDEVCAPS 0x080B
1533 #define MCI_SPIN 0x080C
1534 #define MCI_SET 0x080D
1535 #define MCI_STEP 0x080E
1536 #define MCI_RECORD 0x080F
1537 #define MCI_SYSINFO 0x0810
1538 #define MCI_BREAK 0x0811
1539 #define MCI_SOUND 0x0812
1540 #define MCI_SAVE 0x0813
1541 #define MCI_STATUS 0x0814
1542 #define MCI_CUE 0x0830
1543 #define MCI_REALIZE 0x0840
1544 #define MCI_WINDOW 0x0841
1545 #define MCI_PUT 0x0842
1546 #define MCI_WHERE 0x0843
1547 #define MCI_FREEZE 0x0844
1548 #define MCI_UNFREEZE 0x0845
1549 #define MCI_LOAD 0x0850
1550 #define MCI_CUT 0x0851
1551 #define MCI_COPY 0x0852
1552 #define MCI_PASTE 0x0853
1553 #define MCI_UPDATE 0x0854
1554 #define MCI_RESUME 0x0855
1555 #define MCI_DELETE 0x0856
1557 #define MCI_USER_MESSAGES (0x400 + DRV_MCI_FIRST)
1559 #define MCI_ALL_DEVICE_ID 0xFFFF
1561 #define MCI_DEVTYPE_VCR (MCI_STRING_OFFSET + 1)
1562 #define MCI_DEVTYPE_VIDEODISC (MCI_STRING_OFFSET + 2)
1563 #define MCI_DEVTYPE_OVERLAY (MCI_STRING_OFFSET + 3)
1564 #define MCI_DEVTYPE_CD_AUDIO (MCI_STRING_OFFSET + 4)
1565 #define MCI_DEVTYPE_DAT (MCI_STRING_OFFSET + 5)
1566 #define MCI_DEVTYPE_SCANNER (MCI_STRING_OFFSET + 6)
1567 #define MCI_DEVTYPE_ANIMATION (MCI_STRING_OFFSET + 7)
1568 #define MCI_DEVTYPE_DIGITAL_VIDEO (MCI_STRING_OFFSET + 8)
1569 #define MCI_DEVTYPE_OTHER (MCI_STRING_OFFSET + 9)
1570 #define MCI_DEVTYPE_WAVEFORM_AUDIO (MCI_STRING_OFFSET + 10)
1571 #define MCI_DEVTYPE_SEQUENCER (MCI_STRING_OFFSET + 11)
1573 #define MCI_DEVTYPE_FIRST MCI_DEVTYPE_VCR
1574 #define MCI_DEVTYPE_LAST MCI_DEVTYPE_SEQUENCER
1576 #define MCI_MODE_NOT_READY (MCI_STRING_OFFSET + 12)
1577 #define MCI_MODE_STOP (MCI_STRING_OFFSET + 13)
1578 #define MCI_MODE_PLAY (MCI_STRING_OFFSET + 14)
1579 #define MCI_MODE_RECORD (MCI_STRING_OFFSET + 15)
1580 #define MCI_MODE_SEEK (MCI_STRING_OFFSET + 16)
1581 #define MCI_MODE_PAUSE (MCI_STRING_OFFSET + 17)
1582 #define MCI_MODE_OPEN (MCI_STRING_OFFSET + 18)
1584 #define MCI_FORMAT_MILLISECONDS 0
1585 #define MCI_FORMAT_HMS 1
1586 #define MCI_FORMAT_MSF 2
1587 #define MCI_FORMAT_FRAMES 3
1588 #define MCI_FORMAT_SMPTE_24 4
1589 #define MCI_FORMAT_SMPTE_25 5
1590 #define MCI_FORMAT_SMPTE_30 6
1591 #define MCI_FORMAT_SMPTE_30DROP 7
1592 #define MCI_FORMAT_BYTES 8
1593 #define MCI_FORMAT_SAMPLES 9
1594 #define MCI_FORMAT_TMSF 10
1596 #define MCI_MSF_MINUTE(msf) ((BYTE)(msf))
1597 #define MCI_MSF_SECOND(msf) ((BYTE)(((WORD)(msf)) >> 8))
1598 #define MCI_MSF_FRAME(msf) ((BYTE)((msf)>>16))
1600 #define MCI_MAKE_MSF(m, s, f) ((DWORD)(((BYTE)(m) | \
1602 (((DWORD)(BYTE)(f))<<16)))
1604 #define MCI_TMSF_TRACK(tmsf) ((BYTE)(tmsf))
1605 #define MCI_TMSF_MINUTE(tmsf) ((BYTE)(((WORD)(tmsf)) >> 8))
1606 #define MCI_TMSF_SECOND(tmsf) ((BYTE)((tmsf)>>16))
1607 #define MCI_TMSF_FRAME(tmsf) ((BYTE)((tmsf)>>24))
1609 #define MCI_MAKE_TMSF(t, m, s, f) ((DWORD)(((BYTE)(t) | \
1611 (((DWORD)(BYTE)(s) | \
1612 ((WORD)(f)<<8))<<16)))
1614 #define MCI_HMS_HOUR(hms) ((BYTE)(hms))
1615 #define MCI_HMS_MINUTE(hms) ((BYTE)(((WORD)(hms)) >> 8))
1616 #define MCI_HMS_SECOND(hms) ((BYTE)((hms)>>16))
1618 #define MCI_MAKE_HMS(h, m, s) ((DWORD)(((BYTE)(h) | \
1620 (((DWORD)(BYTE)(s))<<16)))
1622 #define MCI_NOTIFY_SUCCESSFUL 0x0001
1623 #define MCI_NOTIFY_SUPERSEDED 0x0002
1624 #define MCI_NOTIFY_ABORTED 0x0004
1625 #define MCI_NOTIFY_FAILURE 0x0008
1627 #define MCI_NOTIFY 0x00000001L
1628 #define MCI_WAIT 0x00000002L
1629 #define MCI_FROM 0x00000004L
1630 #define MCI_TO 0x00000008L
1631 #define MCI_TRACK 0x00000010L
1633 #define MCI_OPEN_SHAREABLE 0x00000100L
1634 #define MCI_OPEN_ELEMENT 0x00000200L
1635 #define MCI_OPEN_ALIAS 0x00000400L
1636 #define MCI_OPEN_ELEMENT_ID 0x00000800L
1637 #define MCI_OPEN_TYPE_ID 0x00001000L
1638 #define MCI_OPEN_TYPE 0x00002000L
1640 #define MCI_SEEK_TO_START 0x00000100L
1641 #define MCI_SEEK_TO_END 0x00000200L
1643 #define MCI_STATUS_ITEM 0x00000100L
1644 #define MCI_STATUS_START 0x00000200L
1646 #define MCI_STATUS_LENGTH 0x00000001L
1647 #define MCI_STATUS_POSITION 0x00000002L
1648 #define MCI_STATUS_NUMBER_OF_TRACKS 0x00000003L
1649 #define MCI_STATUS_MODE 0x00000004L
1650 #define MCI_STATUS_MEDIA_PRESENT 0x00000005L
1651 #define MCI_STATUS_TIME_FORMAT 0x00000006L
1652 #define MCI_STATUS_READY 0x00000007L
1653 #define MCI_STATUS_CURRENT_TRACK 0x00000008L
1655 #define MCI_INFO_PRODUCT 0x00000100L
1656 #define MCI_INFO_FILE 0x00000200L
1657 #define MCI_INFO_MEDIA_UPC 0x00000400L
1658 #define MCI_INFO_MEDIA_IDENTITY 0x00000800L
1659 #define MCI_INFO_NAME 0x00001000L
1660 #define MCI_INFO_COPYRIGHT 0x00002000L
1662 #define MCI_GETDEVCAPS_ITEM 0x00000100L
1664 #define MCI_GETDEVCAPS_CAN_RECORD 0x00000001L
1665 #define MCI_GETDEVCAPS_HAS_AUDIO 0x00000002L
1666 #define MCI_GETDEVCAPS_HAS_VIDEO 0x00000003L
1667 #define MCI_GETDEVCAPS_DEVICE_TYPE 0x00000004L
1668 #define MCI_GETDEVCAPS_USES_FILES 0x00000005L
1669 #define MCI_GETDEVCAPS_COMPOUND_DEVICE 0x00000006L
1670 #define MCI_GETDEVCAPS_CAN_EJECT 0x00000007L
1671 #define MCI_GETDEVCAPS_CAN_PLAY 0x00000008L
1672 #define MCI_GETDEVCAPS_CAN_SAVE 0x00000009L
1674 #define MCI_SYSINFO_QUANTITY 0x00000100L
1675 #define MCI_SYSINFO_OPEN 0x00000200L
1676 #define MCI_SYSINFO_NAME 0x00000400L
1677 #define MCI_SYSINFO_INSTALLNAME 0x00000800L
1679 #define MCI_SET_DOOR_OPEN 0x00000100L
1680 #define MCI_SET_DOOR_CLOSED 0x00000200L
1681 #define MCI_SET_TIME_FORMAT 0x00000400L
1682 #define MCI_SET_AUDIO 0x00000800L
1683 #define MCI_SET_VIDEO 0x00001000L
1684 #define MCI_SET_ON 0x00002000L
1685 #define MCI_SET_OFF 0x00004000L
1687 #define MCI_SET_AUDIO_ALL 0x00000000L
1688 #define MCI_SET_AUDIO_LEFT 0x00000001L
1689 #define MCI_SET_AUDIO_RIGHT 0x00000002L
1691 #define MCI_BREAK_KEY 0x00000100L
1692 #define MCI_BREAK_HWND 0x00000200L
1693 #define MCI_BREAK_OFF 0x00000400L
1695 #define MCI_RECORD_INSERT 0x00000100L
1696 #define MCI_RECORD_OVERWRITE 0x00000200L
1698 #define MCI_SOUND_NAME 0x00000100L
1700 #define MCI_SAVE_FILE 0x00000100L
1702 #define MCI_LOAD_FILE 0x00000100L
1706 } MCI_GENERIC_PARMS, *LPMCI_GENERIC_PARMS;
1710 MCIDEVICEID wDeviceID;
1711 LPSTR lpstrDeviceType;
1712 LPSTR lpstrElementName;
1714 } MCI_OPEN_PARMSA, *LPMCI_OPEN_PARMSA;
1718 MCIDEVICEID wDeviceID;
1719 LPWSTR lpstrDeviceType;
1720 LPWSTR lpstrElementName;
1722 } MCI_OPEN_PARMSW, *LPMCI_OPEN_PARMSW;
1724 DECL_WINELIB_TYPE_AW(MCI_OPEN_PARMS)
1725 DECL_WINELIB_TYPE_AW(LPMCI_OPEN_PARMS)
1731 } MCI_PLAY_PARMS, *LPMCI_PLAY_PARMS;
1736 } MCI_SEEK_PARMS, *LPMCI_SEEK_PARMS;
1743 } MCI_STATUS_PARMS, *LPMCI_STATUS_PARMS;
1749 } MCI_INFO_PARMSA, *LPMCI_INFO_PARMSA;
1755 } MCI_INFO_PARMSW, *LPMCI_INFO_PARMSW;
1757 DECL_WINELIB_TYPE_AW(MCI_INFO_PARMS)
1758 DECL_WINELIB_TYPE_AW(LPMCI_INFO_PARMS)
1764 } MCI_GETDEVCAPS_PARMS, *LPMCI_GETDEVCAPS_PARMS;
1772 } MCI_SYSINFO_PARMSA, *LPMCI_SYSINFO_PARMSA;
1780 } MCI_SYSINFO_PARMSW, *LPMCI_SYSINFO_PARMSW;
1782 DECL_WINELIB_TYPE_AW(MCI_SYSINFO_PARMS)
1783 DECL_WINELIB_TYPE_AW(LPMCI_SYSINFO_PARMS)
1789 } MCI_SET_PARMS, *LPMCI_SET_PARMS;
1795 } MCI_BREAK_PARMS, *LPMCI_BREAK_PARMS;
1800 LPCSTR lpstrSoundName;
1801 } MCI_SOUND_PARMS, *LPMCI_SOUND_PARMS;
1806 } MCI_SAVE_PARMS, *LPMCI_SAVE_PARMS;
1811 } MCI_LOAD_PARMSA, *LPMCI_LOAD_PARMSA;
1816 } MCI_LOAD_PARMSW, *LPMCI_LOAD_PARMSW;
1818 DECL_WINELIB_TYPE_AW(MCI_LOAD_PARMS)
1819 DECL_WINELIB_TYPE_AW(LPMCI_LOAD_PARMS)
1825 } MCI_RECORD_PARMS, *LPMCI_RECORD_PARMS;
1827 #define MCI_CDA_STATUS_TYPE_TRACK 0x00004001
1829 #define MCI_CDA_TRACK_AUDIO (MCI_CD_OFFSET + 0)
1830 #define MCI_CDA_TRACK_OTHER (MCI_CD_OFFSET + 1)
1832 #define MCI_VD_MODE_PARK (MCI_VD_OFFSET + 1)
1834 #define MCI_VD_MEDIA_CLV (MCI_VD_OFFSET + 2)
1835 #define MCI_VD_MEDIA_CAV (MCI_VD_OFFSET + 3)
1836 #define MCI_VD_MEDIA_OTHER (MCI_VD_OFFSET + 4)
1838 #define MCI_VD_FORMAT_TRACK 0x4001
1840 #define MCI_VD_PLAY_REVERSE 0x00010000L
1841 #define MCI_VD_PLAY_FAST 0x00020000L
1842 #define MCI_VD_PLAY_SPEED 0x00040000L
1843 #define MCI_VD_PLAY_SCAN 0x00080000L
1844 #define MCI_VD_PLAY_SLOW 0x00100000L
1846 #define MCI_VD_SEEK_REVERSE 0x00010000L
1848 #define MCI_VD_STATUS_SPEED 0x00004002L
1849 #define MCI_VD_STATUS_FORWARD 0x00004003L
1850 #define MCI_VD_STATUS_MEDIA_TYPE 0x00004004L
1851 #define MCI_VD_STATUS_SIDE 0x00004005L
1852 #define MCI_VD_STATUS_DISC_SIZE 0x00004006L
1854 #define MCI_VD_GETDEVCAPS_CLV 0x00010000L
1855 #define MCI_VD_GETDEVCAPS_CAV 0x00020000L
1857 #define MCI_VD_SPIN_UP 0x00010000L
1858 #define MCI_VD_SPIN_DOWN 0x00020000L
1860 #define MCI_VD_GETDEVCAPS_CAN_REVERSE 0x00004002L
1861 #define MCI_VD_GETDEVCAPS_FAST_RATE 0x00004003L
1862 #define MCI_VD_GETDEVCAPS_SLOW_RATE 0x00004004L
1863 #define MCI_VD_GETDEVCAPS_NORMAL_RATE 0x00004005L
1865 #define MCI_VD_STEP_FRAMES 0x00010000L
1866 #define MCI_VD_STEP_REVERSE 0x00020000L
1868 #define MCI_VD_ESCAPE_STRING 0x00000100L
1875 } MCI_VD_PLAY_PARMS, *LPMCI_VD_PLAY_PARMS;
1880 } MCI_VD_STEP_PARMS, *LPMCI_VD_STEP_PARMS;
1884 LPCSTR lpstrCommand;
1885 } MCI_VD_ESCAPE_PARMSA, *LPMCI_VD_ESCAPE_PARMSA;
1889 LPCWSTR lpstrCommand;
1890 } MCI_VD_ESCAPE_PARMSW, *LPMCI_VD_ESCAPE_PARMSW;
1892 DECL_WINELIB_TYPE_AW(MCI_VD_ESCAPE_PARMS)
1893 DECL_WINELIB_TYPE_AW(LPMCI_VD_ESCAPE_PARMS)
1895 #define MCI_WAVE_OPEN_BUFFER 0x00010000L
1897 #define MCI_WAVE_SET_FORMATTAG 0x00010000L
1898 #define MCI_WAVE_SET_CHANNELS 0x00020000L
1899 #define MCI_WAVE_SET_SAMPLESPERSEC 0x00040000L
1900 #define MCI_WAVE_SET_AVGBYTESPERSEC 0x00080000L
1901 #define MCI_WAVE_SET_BLOCKALIGN 0x00100000L
1902 #define MCI_WAVE_SET_BITSPERSAMPLE 0x00200000L
1904 #define MCI_WAVE_INPUT 0x00400000L
1905 #define MCI_WAVE_OUTPUT 0x00800000L
1907 #define MCI_WAVE_STATUS_FORMATTAG 0x00004001L
1908 #define MCI_WAVE_STATUS_CHANNELS 0x00004002L
1909 #define MCI_WAVE_STATUS_SAMPLESPERSEC 0x00004003L
1910 #define MCI_WAVE_STATUS_AVGBYTESPERSEC 0x00004004L
1911 #define MCI_WAVE_STATUS_BLOCKALIGN 0x00004005L
1912 #define MCI_WAVE_STATUS_BITSPERSAMPLE 0x00004006L
1913 #define MCI_WAVE_STATUS_LEVEL 0x00004007L
1915 #define MCI_WAVE_SET_ANYINPUT 0x04000000L
1916 #define MCI_WAVE_SET_ANYOUTPUT 0x08000000L
1918 #define MCI_WAVE_GETDEVCAPS_INPUTS 0x00004001L
1919 #define MCI_WAVE_GETDEVCAPS_OUTPUTS 0x00004002L
1923 MCIDEVICEID wDeviceID;
1924 LPCSTR lpstrDeviceType;
1925 LPCSTR lpstrElementName;
1927 DWORD dwBufferSeconds;
1928 } MCI_WAVE_OPEN_PARMSA, *LPMCI_WAVE_OPEN_PARMSA;
1932 MCIDEVICEID wDeviceID;
1933 LPCWSTR lpstrDeviceType;
1934 LPCWSTR lpstrElementName;
1936 DWORD dwBufferSeconds;
1937 } MCI_WAVE_OPEN_PARMSW, *LPMCI_WAVE_OPEN_PARMSW;
1939 DECL_WINELIB_TYPE_AW(MCI_WAVE_OPEN_PARMS)
1940 DECL_WINELIB_TYPE_AW(LPMCI_WAVE_OPEN_PARMS)
1946 } MCI_WAVE_DELETE_PARMS, *LPMCI_WAVE_DELETE_PARMS;
1956 DWORD nSamplesPerSec;
1957 DWORD nAvgBytesPerSec;
1959 UINT wBitsPerSample;
1960 } MCI_WAVE_SET_PARMS, * LPMCI_WAVE_SET_PARMS;
1963 #define MCI_SEQ_DIV_PPQN (0 + MCI_SEQ_OFFSET)
1964 #define MCI_SEQ_DIV_SMPTE_24 (1 + MCI_SEQ_OFFSET)
1965 #define MCI_SEQ_DIV_SMPTE_25 (2 + MCI_SEQ_OFFSET)
1966 #define MCI_SEQ_DIV_SMPTE_30DROP (3 + MCI_SEQ_OFFSET)
1967 #define MCI_SEQ_DIV_SMPTE_30 (4 + MCI_SEQ_OFFSET)
1969 #define MCI_SEQ_FORMAT_SONGPTR 0x4001
1970 #define MCI_SEQ_FILE 0x4002
1971 #define MCI_SEQ_MIDI 0x4003
1972 #define MCI_SEQ_SMPTE 0x4004
1973 #define MCI_SEQ_NONE 65533
1975 #define MCI_SEQ_STATUS_TEMPO 0x00004002L
1976 #define MCI_SEQ_STATUS_PORT 0x00004003L
1977 #define MCI_SEQ_STATUS_SLAVE 0x00004007L
1978 #define MCI_SEQ_STATUS_MASTER 0x00004008L
1979 #define MCI_SEQ_STATUS_OFFSET 0x00004009L
1980 #define MCI_SEQ_STATUS_DIVTYPE 0x0000400AL
1982 #define MCI_SEQ_SET_TEMPO 0x00010000L
1983 #define MCI_SEQ_SET_PORT 0x00020000L
1984 #define MCI_SEQ_SET_SLAVE 0x00040000L
1985 #define MCI_SEQ_SET_MASTER 0x00080000L
1986 #define MCI_SEQ_SET_OFFSET 0x01000000L
1997 } MCI_SEQ_SET_PARMS, *LPMCI_SEQ_SET_PARMS;
1999 #define MCI_ANIM_OPEN_WS 0x00010000L
2000 #define MCI_ANIM_OPEN_PARENT 0x00020000L
2001 #define MCI_ANIM_OPEN_NOSTATIC 0x00040000L
2003 #define MCI_ANIM_PLAY_SPEED 0x00010000L
2004 #define MCI_ANIM_PLAY_REVERSE 0x00020000L
2005 #define MCI_ANIM_PLAY_FAST 0x00040000L
2006 #define MCI_ANIM_PLAY_SLOW 0x00080000L
2007 #define MCI_ANIM_PLAY_SCAN 0x00100000L
2009 #define MCI_ANIM_STEP_REVERSE 0x00010000L
2010 #define MCI_ANIM_STEP_FRAMES 0x00020000L
2012 #define MCI_ANIM_STATUS_SPEED 0x00004001L
2013 #define MCI_ANIM_STATUS_FORWARD 0x00004002L
2014 #define MCI_ANIM_STATUS_HWND 0x00004003L
2015 #define MCI_ANIM_STATUS_HPAL 0x00004004L
2016 #define MCI_ANIM_STATUS_STRETCH 0x00004005L
2018 #define MCI_ANIM_INFO_TEXT 0x00010000L
2020 #define MCI_ANIM_GETDEVCAPS_CAN_REVERSE 0x00004001L
2021 #define MCI_ANIM_GETDEVCAPS_FAST_RATE 0x00004002L
2022 #define MCI_ANIM_GETDEVCAPS_SLOW_RATE 0x00004003L
2023 #define MCI_ANIM_GETDEVCAPS_NORMAL_RATE 0x00004004L
2024 #define MCI_ANIM_GETDEVCAPS_PALETTES 0x00004006L
2025 #define MCI_ANIM_GETDEVCAPS_CAN_STRETCH 0x00004007L
2026 #define MCI_ANIM_GETDEVCAPS_MAX_WINDOWS 0x00004008L
2028 #define MCI_ANIM_REALIZE_NORM 0x00010000L
2029 #define MCI_ANIM_REALIZE_BKGD 0x00020000L
2031 #define MCI_ANIM_WINDOW_HWND 0x00010000L
2032 #define MCI_ANIM_WINDOW_STATE 0x00040000L
2033 #define MCI_ANIM_WINDOW_TEXT 0x00080000L
2034 #define MCI_ANIM_WINDOW_ENABLE_STRETCH 0x00100000L
2035 #define MCI_ANIM_WINDOW_DISABLE_STRETCH 0x00200000L
2037 #define MCI_ANIM_WINDOW_DEFAULT 0x00000000L
2039 #define MCI_ANIM_RECT 0x00010000L
2040 #define MCI_ANIM_PUT_SOURCE 0x00020000L
2041 #define MCI_ANIM_PUT_DESTINATION 0x00040000L
2043 #define MCI_ANIM_WHERE_SOURCE 0x00020000L
2044 #define MCI_ANIM_WHERE_DESTINATION 0x00040000L
2046 #define MCI_ANIM_UPDATE_HDC 0x00020000L
2050 MCIDEVICEID wDeviceID;
2051 LPCSTR lpstrDeviceType;
2052 LPCSTR lpstrElementName;
2056 } MCI_ANIM_OPEN_PARMSA, *LPMCI_ANIM_OPEN_PARMSA;
2060 MCIDEVICEID wDeviceID;
2061 LPCWSTR lpstrDeviceType;
2062 LPCWSTR lpstrElementName;
2066 } MCI_ANIM_OPEN_PARMSW, *LPMCI_ANIM_OPEN_PARMSW;
2068 DECL_WINELIB_TYPE_AW(MCI_ANIM_OPEN_PARMS)
2069 DECL_WINELIB_TYPE_AW(LPMCI_ANIM_OPEN_PARMS)
2076 } MCI_ANIM_PLAY_PARMS, *LPMCI_ANIM_PLAY_PARMS;
2081 } MCI_ANIM_STEP_PARMS, *LPMCI_ANIM_STEP_PARMS;
2088 } MCI_ANIM_WINDOW_PARMSA, *LPMCI_ANIM_WINDOW_PARMSA;
2095 } MCI_ANIM_WINDOW_PARMSW, *LPMCI_ANIM_WINDOW_PARMSW;
2097 DECL_WINELIB_TYPE_AW(MCI_ANIM_WINDOW_PARMS)
2098 DECL_WINELIB_TYPE_AW(LPMCI_ANIM_WINDOW_PARMS)
2102 #ifdef MCI_USE_OFFEXT
2105 #else /* ifdef MCI_USE_OFFEXT */
2107 #endif /* ifdef MCI_USE_OFFEXT */
2108 } MCI_ANIM_RECT_PARMS, *LPMCI_ANIM_RECT_PARMS;
2115 } MCI_ANIM_UPDATE_PARMS, *LPMCI_ANIM_UPDATE_PARMS;
2118 #define MCI_OVLY_OPEN_WS 0x00010000L
2119 #define MCI_OVLY_OPEN_PARENT 0x00020000L
2121 #define MCI_OVLY_STATUS_HWND 0x00004001L
2122 #define MCI_OVLY_STATUS_STRETCH 0x00004002L
2124 #define MCI_OVLY_INFO_TEXT 0x00010000L
2126 #define MCI_OVLY_GETDEVCAPS_CAN_STRETCH 0x00004001L
2127 #define MCI_OVLY_GETDEVCAPS_CAN_FREEZE 0x00004002L
2128 #define MCI_OVLY_GETDEVCAPS_MAX_WINDOWS 0x00004003L
2130 #define MCI_OVLY_WINDOW_HWND 0x00010000L
2131 #define MCI_OVLY_WINDOW_STATE 0x00040000L
2132 #define MCI_OVLY_WINDOW_TEXT 0x00080000L
2133 #define MCI_OVLY_WINDOW_ENABLE_STRETCH 0x00100000L
2134 #define MCI_OVLY_WINDOW_DISABLE_STRETCH 0x00200000L
2136 #define MCI_OVLY_WINDOW_DEFAULT 0x00000000L
2138 #define MCI_OVLY_RECT 0x00010000L
2139 #define MCI_OVLY_PUT_SOURCE 0x00020000L
2140 #define MCI_OVLY_PUT_DESTINATION 0x00040000L
2141 #define MCI_OVLY_PUT_FRAME 0x00080000L
2142 #define MCI_OVLY_PUT_VIDEO 0x00100000L
2144 #define MCI_OVLY_WHERE_SOURCE 0x00020000L
2145 #define MCI_OVLY_WHERE_DESTINATION 0x00040000L
2146 #define MCI_OVLY_WHERE_FRAME 0x00080000L
2147 #define MCI_OVLY_WHERE_VIDEO 0x00100000L
2151 MCIDEVICEID wDeviceID;
2152 LPCSTR lpstrDeviceType;
2153 LPCSTR lpstrElementName;
2157 } MCI_OVLY_OPEN_PARMSA, *LPMCI_OVLY_OPEN_PARMSA;
2161 MCIDEVICEID wDeviceID;
2162 LPCWSTR lpstrDeviceType;
2163 LPCWSTR lpstrElementName;
2167 } MCI_OVLY_OPEN_PARMSW, *LPMCI_OVLY_OPEN_PARMSW;
2169 DECL_WINELIB_TYPE_AW(MCI_OVLY_OPEN_PARMS)
2170 DECL_WINELIB_TYPE_AW(LPMCI_OVLY_OPEN_PARMS)
2177 } MCI_OVLY_WINDOW_PARMSA, *LPMCI_OVLY_WINDOW_PARMSA;
2184 } MCI_OVLY_WINDOW_PARMSW, *LPMCI_OVLY_WINDOW_PARMSW;
2186 DECL_WINELIB_TYPE_AW(MCI_OVLY_WINDOW_PARMS)
2187 DECL_WINELIB_TYPE_AW(LPMCI_OVLY_WINDOW_PARMS)
2191 #ifdef MCI_USE_OFFEXT
2194 #else /* ifdef MCI_USE_OFFEXT */
2196 #endif /* ifdef MCI_USE_OFFEXT */
2197 } MCI_OVLY_RECT_PARMS, *LPMCI_OVLY_RECT_PARMS;
2204 } MCI_OVLY_SAVE_PARMSA, *LPMCI_OVLY_SAVE_PARMSA;
2210 } MCI_OVLY_SAVE_PARMSW, *LPMCI_OVLY_SAVE_PARMSW;
2212 DECL_WINELIB_TYPE_AW(MCI_OVLY_SAVE_PARMS)
2213 DECL_WINELIB_TYPE_AW(LPMCI_OVLY_SAVE_PARMS)
2219 } MCI_OVLY_LOAD_PARMSA, *LPMCI_OVLY_LOAD_PARMSA;
2225 } MCI_OVLY_LOAD_PARMSW, *LPMCI_OVLY_LOAD_PARMSW;
2227 DECL_WINELIB_TYPE_AW(MCI_OVLY_LOAD_PARMS)
2228 DECL_WINELIB_TYPE_AW(LPMCI_OVLY_LOAD_PARMS)
2230 #include "poppack.h"
2236 #endif /* __WINE_MMSYSTEM_H */