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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
21 #ifndef __WINE_MMSYSTEM_H
22 #define __WINE_MMSYSTEM_H
28 typedef LPSTR HPSTR; /* a huge version of LPSTR */
29 typedef LPCSTR HPCSTR; /* a huge version of LPCSTR */
32 DECLARE_HANDLE(HDRVR);
33 DECLARE_HANDLE(HWAVE);
34 DECLARE_HANDLE(HWAVEIN);
35 DECLARE_HANDLE(HWAVEOUT);
36 DECLARE_HANDLE(HMIDI);
37 DECLARE_HANDLE(HMIDIIN);
38 DECLARE_HANDLE(HMIDIOUT);
39 DECLARE_HANDLE(HMIDISTRM);
40 DECLARE_HANDLE(HMIXER);
41 DECLARE_HANDLE(HMIXEROBJ);
42 DECLARE_HANDLE(HMMIO);
44 typedef HMIDI *LPHMIDI;
45 typedef HMIDIIN *LPHMIDIIN;
46 typedef HMIDIOUT *LPHMIDIOUT;
47 typedef HMIDISTRM *LPHMIDISTRM;
48 typedef HMIXER *LPHMIXER;
49 typedef HMIXEROBJ *LPHMIXEROBJ;
50 typedef HWAVEIN *LPHWAVEIN;
51 typedef HWAVEOUT *LPHWAVEOUT;
55 typedef LRESULT (CALLBACK *DRIVERPROC)(DWORD_PTR,HDRVR,UINT,LPARAM,LPARAM);
57 #define MAXWAVEDRIVERS 10
58 #define MAXMIDIDRIVERS 10
59 #define MAXAUXDRIVERS 10
60 #define MAXMCIDRIVERS 32
61 #define MAXMIXERDRIVERS 10
63 #define MAXPNAMELEN 32 /* max product name length (including NULL) */
64 #define MAXERRORLENGTH 256 /* max error text length (including NULL) */
65 #define MAX_JOYSTICKOEMVXDNAME 260
69 typedef DWORD MCIERROR;
71 typedef UINT MMVERSION;
74 typedef UINT MCIDEVICEID;
76 typedef UINT MMRESULT;
78 typedef struct mmtime_tag {
98 } MMTIME, *PMMTIME, *LPMMTIME;
100 #define TIME_MS 0x0001 /* time in milliseconds */
101 #define TIME_SAMPLES 0x0002 /* number of wave samples */
102 #define TIME_BYTES 0x0004 /* current byte offset */
103 #define TIME_SMPTE 0x0008 /* SMPTE time */
104 #define TIME_MIDI 0x0010 /* MIDI time */
105 #define TIME_TICKS 0x0020 /* MIDI ticks */
107 #define MM_JOY1MOVE 0x3A0 /* joystick */
108 #define MM_JOY2MOVE 0x3A1
109 #define MM_JOY1ZMOVE 0x3A2
110 #define MM_JOY2ZMOVE 0x3A3
111 #define MM_JOY1BUTTONDOWN 0x3B5
112 #define MM_JOY2BUTTONDOWN 0x3B6
113 #define MM_JOY1BUTTONUP 0x3B7
114 #define MM_JOY2BUTTONUP 0x3B8
116 #define MM_MCINOTIFY 0x3B9 /* MCI */
118 #define MM_WOM_OPEN 0x3BB /* waveform output */
119 #define MM_WOM_CLOSE 0x3BC
120 #define MM_WOM_DONE 0x3BD
122 #define MM_WIM_OPEN 0x3BE /* waveform input */
123 #define MM_WIM_CLOSE 0x3BF
124 #define MM_WIM_DATA 0x3C0
126 #define MM_MIM_OPEN 0x3C1 /* MIDI input */
127 #define MM_MIM_CLOSE 0x3C2
128 #define MM_MIM_DATA 0x3C3
129 #define MM_MIM_LONGDATA 0x3C4
130 #define MM_MIM_ERROR 0x3C5
131 #define MM_MIM_LONGERROR 0x3C6
133 #define MM_MOM_OPEN 0x3C7 /* MIDI output */
134 #define MM_MOM_CLOSE 0x3C8
135 #define MM_MOM_DONE 0x3C9
136 #define MM_MOM_POSITIONCB 0x3CA
138 #define MM_MIM_MOREDATA 0x3CC
140 #define MM_MIXM_LINE_CHANGE 0x3D0
141 #define MM_MIXM_CONTROL_CHANGE 0x3D1
143 #define MMSYSERR_BASE 0
144 #define WAVERR_BASE 32
145 #define MIDIERR_BASE 64
146 #define TIMERR_BASE 96
147 #define JOYERR_BASE 160
148 #define MCIERR_BASE 256
150 #define MCI_STRING_OFFSET 512
151 #define MCI_VD_OFFSET 1024
152 #define MCI_CD_OFFSET 1088
153 #define MCI_WAVE_OFFSET 1152
154 #define MCI_SEQ_OFFSET 1216
156 #define MMSYSERR_NOERROR 0
157 #define MMSYSERR_ERROR (MMSYSERR_BASE + 1)
158 #define MMSYSERR_BADDEVICEID (MMSYSERR_BASE + 2)
159 #define MMSYSERR_NOTENABLED (MMSYSERR_BASE + 3)
160 #define MMSYSERR_ALLOCATED (MMSYSERR_BASE + 4)
161 #define MMSYSERR_INVALHANDLE (MMSYSERR_BASE + 5)
162 #define MMSYSERR_NODRIVER (MMSYSERR_BASE + 6)
163 #define MMSYSERR_NOMEM (MMSYSERR_BASE + 7)
164 #define MMSYSERR_NOTSUPPORTED (MMSYSERR_BASE + 8)
165 #define MMSYSERR_BADERRNUM (MMSYSERR_BASE + 9)
166 #define MMSYSERR_INVALFLAG (MMSYSERR_BASE + 10)
167 #define MMSYSERR_INVALPARAM (MMSYSERR_BASE + 11)
168 #define MMSYSERR_HANDLEBUSY (MMSYSERR_BASE + 12)
169 #define MMSYSERR_INVALIDALIAS (MMSYSERR_BASE + 13)
170 #define MMSYSERR_BADDB (MMSYSERR_BASE + 14)
171 #define MMSYSERR_KEYNOTFOUND (MMSYSERR_BASE + 15)
172 #define MMSYSERR_READERROR (MMSYSERR_BASE + 16)
173 #define MMSYSERR_WRITEERROR (MMSYSERR_BASE + 17)
174 #define MMSYSERR_DELETEERROR (MMSYSERR_BASE + 18)
175 #define MMSYSERR_VALNOTFOUND (MMSYSERR_BASE + 19)
176 #define MMSYSERR_NODRIVERCB (MMSYSERR_BASE + 20)
177 #define MMSYSERR_MOREDATA (MMSYSERR_BASE + 21)
178 #define MMSYSERR_LASTERROR (MMSYSERR_BASE + 21)
180 #define CALLBACK_TYPEMASK 0x00070000l /* callback type mask */
181 #define CALLBACK_NULL 0x00000000l /* no callback */
182 #define CALLBACK_WINDOW 0x00010000l /* dwCallback is a HWND */
183 #define CALLBACK_TASK 0x00020000l /* dwCallback is a HTASK */
184 #define CALLBACK_THREAD (CALLBACK_TASK) /* dwCallback is a thread ID */
185 #define CALLBACK_FUNCTION 0x00030000l /* dwCallback is a FARPROC */
186 #define CALLBACK_EVENT 0x00050000l /* dwCallback is an EVENT Handler */
188 #define DRV_LOAD 0x0001
189 #define DRV_ENABLE 0x0002
190 #define DRV_OPEN 0x0003
191 #define DRV_CLOSE 0x0004
192 #define DRV_DISABLE 0x0005
193 #define DRV_FREE 0x0006
194 #define DRV_CONFIGURE 0x0007
195 #define DRV_QUERYCONFIGURE 0x0008
196 #define DRV_INSTALL 0x0009
197 #define DRV_REMOVE 0x000A
198 #define DRV_EXITSESSION 0x000B
199 #define DRV_EXITAPPLICATION 0x000C
200 #define DRV_POWER 0x000F
202 #define DRV_RESERVED 0x0800
203 #define DRV_MCI_FIRST DRV_RESERVED
204 #define DRV_MCI_LAST (0xFFF + DRV_MCI_FIRST)
205 #define DRV_USER 0x4000
207 #define DRVCNF_CANCEL 0x0000
208 #define DRVCNF_OK 0x0001
209 #define DRVCNF_RESTART 0x0002
211 #define DRVEA_NORMALEXIT 0x0001
212 #define DRVEA_ABNORMALEXIT 0x0002
214 #define DRV_SUCCESS 0x0001
215 #define DRV_FAILURE 0x0000
217 #define GND_FIRSTINSTANCEONLY 0x00000001
219 #define GND_FORWARD 0x00000000
220 #define GND_REVERSE 0x00000002
222 typedef struct tagDRVCONFIGINFO {
224 LPCWSTR lpszDCISectionName;
225 LPCWSTR lpszDCIAliasName;
226 } DRVCONFIGINFO, *LPDRVCONFIGINFO;
229 LRESULT WINAPI DefDriverProc(DWORD_PTR,HDRVR,UINT,LPARAM,LPARAM);
230 /* this sounds odd, but it's the way it is. OpenDriverA even disappeared
233 HDRVR WINAPI OpenDriverA(LPCSTR szDriverName, LPCSTR szSectionName,
235 HDRVR WINAPI OpenDriver(LPCWSTR szDriverName, LPCWSTR szSectionName,
237 LRESULT WINAPI CloseDriver(HDRVR hDriver, LPARAM lParam1, LPARAM lParam2);
238 LRESULT WINAPI SendDriverMessage(HDRVR hDriver, UINT message,
239 LPARAM lParam1, LPARAM lParam2);
240 HMODULE WINAPI GetDriverModuleHandle(HDRVR hDriver);
242 DWORD WINAPI GetDriverFlags(HDRVR hDriver);
244 typedef void (CALLBACK *LPDRVCALLBACK)(HDRVR,UINT,DWORD_PTR,DWORD_PTR,DWORD_PTR);
246 #define MM_MICROSOFT 1 /* Microsoft Corp. */
247 #define MM_CREATIVE 2 /* Creative labs */
249 #define MM_MIDI_MAPPER 1 /* MIDI Mapper */
250 #define MM_WAVE_MAPPER 2 /* Wave Mapper */
252 #define MM_SNDBLST_MIDIOUT 3 /* Sound Blaster MIDI output port */
253 #define MM_SNDBLST_MIDIIN 4 /* Sound Blaster MIDI input port */
254 #define MM_SNDBLST_SYNTH 5 /* Sound Blaster internal synthesizer */
255 #define MM_SNDBLST_WAVEOUT 6 /* Sound Blaster waveform output */
256 #define MM_SNDBLST_WAVEIN 7 /* Sound Blaster waveform input */
258 #define MM_ADLIB 9 /* Ad Lib-compatible synthesizer */
260 #define MM_MPU401_MIDIOUT 10 /* MPU401-compatible MIDI output port */
261 #define MM_MPU401_MIDIIN 11 /* MPU401-compatible MIDI input port */
263 #define MM_PC_JOYSTICK 12 /* Joystick adapter */
265 #define MM_CREATIVE_SBP16_WAVEOUT 104
267 UINT WINAPI mmsystemGetVersion(void);
268 BOOL WINAPI sndPlaySoundA(LPCSTR lpszSound, UINT fuSound);
269 BOOL WINAPI sndPlaySoundW(LPCWSTR lpszSound, UINT fuSound);
270 #define sndPlaySound WINELIB_NAME_AW(sndPlaySound)
271 BOOL WINAPI PlaySoundA(LPCSTR pszSound, HMODULE hmod, DWORD fdwSound);
272 BOOL WINAPI PlaySoundW(LPCWSTR pszSound, HMODULE hmod, DWORD fdwSound);
273 #define PlaySound WINELIB_NAME_AW(PlaySound)
275 #define SND_SYNC 0x0000 /* play synchronously (default) */
276 #define SND_ASYNC 0x0001 /* play asynchronously */
277 #define SND_NODEFAULT 0x0002 /* don't use default sound */
278 #define SND_MEMORY 0x0004 /* lpszSoundName points to a memory file */
279 #define SND_LOOP 0x0008 /* loop the sound until next sndPlaySound */
280 #define SND_NOSTOP 0x0010 /* don't stop any currently playing sound */
282 #define SND_NOWAIT 0x00002000L /* don't wait if the driver is busy */
283 #define SND_ALIAS 0x00010000L /* name is a registry alias */
284 #define SND_ALIAS_ID 0x00110000L /* alias is a predefined ID */
285 #define SND_FILENAME 0x00020000L /* name is file name */
286 #define SND_RESOURCE 0x00040004L /* name is resource name or atom */
287 #define SND_PURGE 0x00000040L /* purge all sounds */
288 #define SND_APPLICATION 0x00000080L /* look for application specific association */
290 #define SND_ALIAS_START 0
292 #define sndAlias(ch0, ch1) (SND_ALIAS_START + ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8)))
294 #define SND_ALIAS_SYSTEMASTERISK sndAlias('S', '*')
295 #define SND_ALIAS_SYSTEMQUESTION sndAlias('S', '?')
296 #define SND_ALIAS_SYSTEMHAND sndAlias('S', 'H')
297 #define SND_ALIAS_SYSTEMEXIT sndAlias('S', 'E')
298 #define SND_ALIAS_SYSTEMSTART sndAlias('S', 'S')
299 #define SND_ALIAS_SYSTEMWELCOME sndAlias('S', 'W')
300 #define SND_ALIAS_SYSTEMEXCLAMATION sndAlias('S', '!')
301 #define SND_ALIAS_SYSTEMDEFAULT sndAlias('S', 'D')
303 /* waveform audio error return values */
304 #define WAVERR_BADFORMAT (WAVERR_BASE + 0) /* unsupported wave format */
305 #define WAVERR_STILLPLAYING (WAVERR_BASE + 1) /* still something playing */
306 #define WAVERR_UNPREPARED (WAVERR_BASE + 2) /* header not prepared */
307 #define WAVERR_SYNC (WAVERR_BASE + 3) /* device is synchronous */
308 #define WAVERR_LASTERROR (WAVERR_BASE + 3) /* last error in range */
310 typedef LPDRVCALLBACK LPWAVECALLBACK;
312 #define WOM_OPEN MM_WOM_OPEN
313 #define WOM_CLOSE MM_WOM_CLOSE
314 #define WOM_DONE MM_WOM_DONE
315 #define WIM_OPEN MM_WIM_OPEN
316 #define WIM_CLOSE MM_WIM_CLOSE
317 #define WIM_DATA MM_WIM_DATA
319 #define WAVE_MAPPER (-1)
321 #define WAVE_FORMAT_QUERY 0x0001
322 #define WAVE_ALLOWSYNC 0x0002
323 #define WAVE_MAPPED 0x0004
324 #define WAVE_FORMAT_DIRECT 0x0008
325 #define WAVE_FORMAT_DIRECT_QUERY (WAVE_FORMAT_QUERY | WAVE_FORMAT_DIRECT)
327 typedef struct wavehdr_tag {
329 DWORD dwBufferLength;
330 DWORD dwBytesRecorded;
334 struct wavehdr_tag *lpNext;
336 } WAVEHDR, *PWAVEHDR, *NPWAVEHDR, *LPWAVEHDR;
338 #define WHDR_DONE 0x00000001
339 #define WHDR_PREPARED 0x00000002
340 #define WHDR_BEGINLOOP 0x00000004
341 #define WHDR_ENDLOOP 0x00000008
342 #define WHDR_INQUEUE 0x00000010
344 typedef struct tagWAVEOUTCAPSA {
347 MMVERSION vDriverVersion;
348 CHAR szPname[MAXPNAMELEN];
353 } WAVEOUTCAPSA, *LPWAVEOUTCAPSA;
355 typedef struct tagWAVEOUTCAPSW {
358 MMVERSION vDriverVersion;
359 WCHAR szPname[MAXPNAMELEN];
364 } WAVEOUTCAPSW, *LPWAVEOUTCAPSW;
365 DECL_WINELIB_TYPE_AW(WAVEOUTCAPS)
366 DECL_WINELIB_TYPE_AW(LPWAVEOUTCAPS)
368 typedef struct tagWAVEOUTCAPS2A {
371 MMVERSION vDriverVersion;
372 CHAR szPname[MAXPNAMELEN];
377 GUID ManufacturerGuid;
380 } WAVEOUTCAPS2A, *LPWAVEOUTCAPS2A;
382 typedef struct tagWAVEOUTCAPS2W {
385 MMVERSION vDriverVersion;
386 WCHAR szPname[MAXPNAMELEN];
391 GUID ManufacturerGuid;
394 } WAVEOUTCAPS2W, *LPWAVEOUTCAPS2W;
395 DECL_WINELIB_TYPE_AW(WAVEOUTCAPS2)
396 DECL_WINELIB_TYPE_AW(LPWAVEOUTCAPS2)
398 #define WAVECAPS_PITCH 0x0001 /* supports pitch control */
399 #define WAVECAPS_PLAYBACKRATE 0x0002 /* supports playback rate control */
400 #define WAVECAPS_VOLUME 0x0004 /* supports volume control */
401 #define WAVECAPS_LRVOLUME 0x0008 /* separate left-right volume control */
402 #define WAVECAPS_SYNC 0x0010 /* driver is synchronous and playing is blocking */
403 #define WAVECAPS_SAMPLEACCURATE 0x0020 /* position is sample accurate */
404 #define WAVECAPS_DIRECTSOUND 0x0040 /* ? */
406 typedef struct tagWAVEINCAPSA {
409 MMVERSION vDriverVersion;
410 CHAR szPname[MAXPNAMELEN];
414 } WAVEINCAPSA, *LPWAVEINCAPSA;
415 typedef struct tagWAVEINCAPSW {
418 MMVERSION vDriverVersion;
419 WCHAR szPname[MAXPNAMELEN];
423 } WAVEINCAPSW, *LPWAVEINCAPSW;
424 DECL_WINELIB_TYPE_AW(WAVEINCAPS)
425 DECL_WINELIB_TYPE_AW(LPWAVEINCAPS)
427 typedef struct tagWAVEINCAPS2A {
430 MMVERSION vDriverVersion;
431 CHAR szPname[MAXPNAMELEN];
435 GUID ManufacturerGuid;
438 } WAVEINCAPS2A, *LPWAVEINCAPS2A;
439 typedef struct tagWAVEINCAPS2W {
442 MMVERSION vDriverVersion;
443 WCHAR szPname[MAXPNAMELEN];
447 GUID ManufacturerGuid;
450 } WAVEINCAPS2W, *LPWAVEINCAPS2W;
451 DECL_WINELIB_TYPE_AW(WAVEINCAPS2)
452 DECL_WINELIB_TYPE_AW(LPWAVEINCAPS2)
454 #define WAVE_INVALIDFORMAT 0x00000000 /* invalid format */
455 #define WAVE_FORMAT_1M08 0x00000001 /* 11.025 kHz, Mono, 8-bit */
456 #define WAVE_FORMAT_1S08 0x00000002 /* 11.025 kHz, Stereo, 8-bit */
457 #define WAVE_FORMAT_1M16 0x00000004 /* 11.025 kHz, Mono, 16-bit */
458 #define WAVE_FORMAT_1S16 0x00000008 /* 11.025 kHz, Stereo, 16-bit */
459 #define WAVE_FORMAT_2M08 0x00000010 /* 22.05 kHz, Mono, 8-bit */
460 #define WAVE_FORMAT_2S08 0x00000020 /* 22.05 kHz, Stereo, 8-bit */
461 #define WAVE_FORMAT_2M16 0x00000040 /* 22.05 kHz, Mono, 16-bit */
462 #define WAVE_FORMAT_2S16 0x00000080 /* 22.05 kHz, Stereo, 16-bit */
463 #define WAVE_FORMAT_4M08 0x00000100 /* 44.1 kHz, Mono, 8-bit */
464 #define WAVE_FORMAT_4S08 0x00000200 /* 44.1 kHz, Stereo, 8-bit */
465 #define WAVE_FORMAT_4M16 0x00000400 /* 44.1 kHz, Mono, 16-bit */
466 #define WAVE_FORMAT_4S16 0x00000800 /* 44.1 kHz, Stereo, 16-bit */
467 #define WAVE_FORMAT_48M08 0x00001000 /* 48 kHz, Mono, 8-bit */
468 #define WAVE_FORMAT_48S08 0x00002000 /* 48 kHz, Stereo, 8-bit */
469 #define WAVE_FORMAT_48M16 0x00004000 /* 48 kHz, Mono, 16-bit */
470 #define WAVE_FORMAT_48S16 0x00008000 /* 48 kHz, Stereo, 16-bit */
471 #define WAVE_FORMAT_96M08 0x00010000 /* 96 kHz, Mono, 8-bit */
472 #define WAVE_FORMAT_96S08 0x00020000 /* 96 kHz, Stereo, 8-bit */
473 #define WAVE_FORMAT_96M16 0x00040000 /* 96 kHz, Mono, 16-bit */
474 #define WAVE_FORMAT_96S16 0x00080000 /* 96 kHz, Stereo, 16-bit */
476 /* General format structure common to all formats, same for Win16 and Win32 */
477 typedef struct waveformat_tag {
480 DWORD nSamplesPerSec;
481 DWORD nAvgBytesPerSec;
483 } WAVEFORMAT, *LPWAVEFORMAT;
485 #define WAVE_FORMAT_PCM 1
487 typedef struct pcmwaveformat_tag {
490 } PCMWAVEFORMAT, *LPPCMWAVEFORMAT;
492 #ifndef _WAVEFORMATEX_
493 #define _WAVEFORMATEX_
494 /* ditto same for Win16 / Win32 */
495 typedef struct tWAVEFORMATEX {
498 DWORD nSamplesPerSec;
499 DWORD nAvgBytesPerSec;
503 } WAVEFORMATEX, *LPWAVEFORMATEX, *NPWAVEFORMATEX, *PWAVEFORMATEX;
505 typedef const WAVEFORMATEX *LPCWAVEFORMATEX;
507 UINT WINAPI waveOutGetNumDevs(void);
508 UINT WINAPI waveOutGetDevCapsA(UINT_PTR,LPWAVEOUTCAPSA,UINT);
509 UINT WINAPI waveOutGetDevCapsW(UINT_PTR,LPWAVEOUTCAPSW,UINT);
510 #define waveOutGetDevCaps WINELIB_NAME_AW(waveOutGetDevCaps)
511 UINT WINAPI waveOutGetVolume(HWAVEOUT,DWORD*);
512 UINT WINAPI waveOutSetVolume(HWAVEOUT,DWORD);
513 UINT WINAPI waveOutGetErrorTextA(UINT,LPSTR,UINT);
514 UINT WINAPI waveOutGetErrorTextW(UINT,LPWSTR,UINT);
515 #define waveOutGetErrorText WINELIB_NAME_AW(waveOutGetErrorText)
516 MMRESULT WINAPI waveOutOpen(HWAVEOUT*,UINT,LPCWAVEFORMATEX,DWORD_PTR,DWORD_PTR,DWORD);
517 UINT WINAPI waveOutClose(HWAVEOUT);
518 UINT WINAPI waveOutPrepareHeader(HWAVEOUT,WAVEHDR*,UINT);
519 UINT WINAPI waveOutUnprepareHeader(HWAVEOUT,WAVEHDR*,UINT);
520 UINT WINAPI waveOutWrite(HWAVEOUT,WAVEHDR*,UINT);
521 UINT WINAPI waveOutPause(HWAVEOUT);
522 UINT WINAPI waveOutRestart(HWAVEOUT);
523 UINT WINAPI waveOutReset(HWAVEOUT);
524 UINT WINAPI waveOutBreakLoop(HWAVEOUT);
525 UINT WINAPI waveOutGetPosition(HWAVEOUT,LPMMTIME,UINT);
526 UINT WINAPI waveOutGetPitch(HWAVEOUT,DWORD*);
527 UINT WINAPI waveOutSetPitch(HWAVEOUT,DWORD);
528 UINT WINAPI waveOutGetPlaybackRate(HWAVEOUT,DWORD*);
529 UINT WINAPI waveOutSetPlaybackRate(HWAVEOUT,DWORD);
530 UINT WINAPI waveOutGetID(HWAVEOUT,UINT*);
531 UINT WINAPI waveOutMessage(HWAVEOUT,UINT,DWORD_PTR,DWORD_PTR);
532 UINT WINAPI waveInGetNumDevs(void);
533 UINT WINAPI waveInGetDevCapsA(UINT_PTR,LPWAVEINCAPSA,UINT);
534 UINT WINAPI waveInGetDevCapsW(UINT_PTR,LPWAVEINCAPSW,UINT);
535 #define waveInGetDevCaps WINELIB_NAME_AW(waveInGetDevCaps)
536 UINT WINAPI waveInGetErrorTextA(UINT,LPSTR,UINT);
537 UINT WINAPI waveInGetErrorTextW(UINT,LPWSTR,UINT);
538 #define waveInGetErrorText WINELIB_NAME_AW(waveInGetErrorText)
539 MMRESULT WINAPI waveInOpen(HWAVEIN*,UINT,LPCWAVEFORMATEX,DWORD_PTR,DWORD_PTR,DWORD);
540 UINT WINAPI waveInClose(HWAVEIN);
541 UINT WINAPI waveInPrepareHeader(HWAVEIN,WAVEHDR*,UINT);
542 UINT WINAPI waveInUnprepareHeader(HWAVEIN,WAVEHDR*,UINT);
543 UINT WINAPI waveInAddBuffer(HWAVEIN,WAVEHDR*,UINT);
544 UINT WINAPI waveInStart(HWAVEIN);
545 UINT WINAPI waveInStop(HWAVEIN);
546 UINT WINAPI waveInReset(HWAVEIN);
547 UINT WINAPI waveInGetPosition(HWAVEIN,LPMMTIME,UINT);
548 UINT WINAPI waveInGetID(HWAVEIN,UINT*);
549 UINT WINAPI waveInMessage(HWAVEIN,UINT,DWORD_PTR,DWORD_PTR);
551 #define MIDIERR_UNPREPARED (MIDIERR_BASE + 0)
552 #define MIDIERR_STILLPLAYING (MIDIERR_BASE + 1)
553 #define MIDIERR_NOMAP (MIDIERR_BASE + 2)
554 #define MIDIERR_NOTREADY (MIDIERR_BASE + 3)
555 #define MIDIERR_NODEVICE (MIDIERR_BASE + 4)
556 #define MIDIERR_INVALIDSETUP (MIDIERR_BASE + 5)
557 #define MIDIERR_BADOPENMODE (MIDIERR_BASE + 6)
558 #define MIDIERR_DONT_CONTINUE (MIDIERR_BASE + 7)
559 #define MIDIERR_LASTERROR (MIDIERR_BASE + 7)
561 typedef LPDRVCALLBACK LPMIDICALLBACK;
562 #define MIDIPATCHSIZE 128
563 typedef WORD PATCHARRAY[MIDIPATCHSIZE];
564 typedef WORD *LPPATCHARRAY;
565 typedef WORD KEYARRAY[MIDIPATCHSIZE];
566 typedef WORD *LPKEYARRAY;
568 #define MIM_OPEN MM_MIM_OPEN
569 #define MIM_CLOSE MM_MIM_CLOSE
570 #define MIM_DATA MM_MIM_DATA
571 #define MIM_LONGDATA MM_MIM_LONGDATA
572 #define MIM_ERROR MM_MIM_ERROR
573 #define MIM_LONGERROR MM_MIM_LONGERROR
574 #define MIM_MOREDATA MM_MIM_MOREDATA
576 #define MOM_OPEN MM_MOM_OPEN
577 #define MOM_CLOSE MM_MOM_CLOSE
578 #define MOM_DONE MM_MOM_DONE
579 #define MOM_POSITIONCB MM_MOM_POSITIONCB
581 /* device ID for MIDI mapper */
583 #define MIDIMAPPER (-1)
584 #define MIDI_MAPPER (-1)
586 /* Only on Win95 and up */
587 #define MIDI_IO_STATUS 0x00000020L
589 /* flags for wFlags parm of
590 midiOutCachePatches(),
591 midiOutCacheDrumPatches() */
592 #define MIDI_CACHE_ALL 1
593 #define MIDI_CACHE_BESTFIT 2
594 #define MIDI_CACHE_QUERY 3
595 #define MIDI_UNCACHE 4
597 typedef struct tagMIDIOUTCAPSA {
600 MMVERSION vDriverVersion;
601 CHAR szPname[MAXPNAMELEN];
607 } MIDIOUTCAPSA, *LPMIDIOUTCAPSA;
609 typedef struct tagMIDIOUTCAPSW {
612 MMVERSION vDriverVersion;
613 WCHAR szPname[MAXPNAMELEN];
619 } MIDIOUTCAPSW, *LPMIDIOUTCAPSW;
621 DECL_WINELIB_TYPE_AW(MIDIOUTCAPS)
622 DECL_WINELIB_TYPE_AW(LPMIDIOUTCAPS)
624 typedef struct tagMIDIOUTCAPS2A {
627 MMVERSION vDriverVersion;
628 CHAR szPname[MAXPNAMELEN];
634 GUID ManufacturerGuid;
637 } MIDIOUTCAPS2A, *LPMIDIOUTCAPS2A;
639 typedef struct tagMIDIOUTCAPS2W {
642 MMVERSION vDriverVersion;
643 WCHAR szPname[MAXPNAMELEN];
649 GUID ManufacturerGuid;
652 } MIDIOUTCAPS2W, *LPMIDIOUTCAPS2W;
654 DECL_WINELIB_TYPE_AW(MIDIOUTCAPS2)
655 DECL_WINELIB_TYPE_AW(LPMIDIOUTCAPS2)
657 #define MOD_MIDIPORT 1 /* output port */
658 #define MOD_SYNTH 2 /* generic internal synth */
659 #define MOD_SQSYNTH 3 /* square wave internal synth */
660 #define MOD_FMSYNTH 4 /* FM internal synth */
661 #define MOD_MAPPER 5 /* MIDI mapper */
662 #define MOD_WAVETABLE 6 /* hardware wavetable internal synth */
663 #define MOD_SWSYNTH 7 /* software synth */
665 #define MIDICAPS_VOLUME 0x0001 /* supports volume control */
666 #define MIDICAPS_LRVOLUME 0x0002 /* separate left-right volume control */
667 #define MIDICAPS_CACHE 0x0004
668 #define MIDICAPS_STREAM 0x0008 /* capable of supporting stream buffer */
670 typedef struct tagMIDIINCAPSA {
673 MMVERSION vDriverVersion;
674 CHAR szPname[MAXPNAMELEN];
676 } MIDIINCAPSA, *LPMIDIINCAPSA;
678 typedef struct tagMIDIINCAPSW {
681 MMVERSION vDriverVersion;
682 WCHAR szPname[MAXPNAMELEN];
684 } MIDIINCAPSW, *LPMIDIINCAPSW;
686 DECL_WINELIB_TYPE_AW(MIDIINCAPS)
687 DECL_WINELIB_TYPE_AW(LPMIDIINCAPS)
689 typedef struct tagMIDIINCAPS2A {
692 MMVERSION vDriverVersion;
693 CHAR szPname[MAXPNAMELEN];
695 GUID ManufacturerGuid;
698 } MIDIINCAPS2A, *LPMIDIINCAPS2A;
700 typedef struct tagMIDIINCAPS2W {
703 MMVERSION vDriverVersion;
704 WCHAR szPname[MAXPNAMELEN];
706 GUID ManufacturerGuid;
709 } MIDIINCAPS2W, *LPMIDIINCAPS2W;
711 DECL_WINELIB_TYPE_AW(MIDIINCAPS2)
712 DECL_WINELIB_TYPE_AW(LPMIDIINCAPS2)
714 /* It seems that Win32 has a slightly different structure than Win 16.
717 typedef struct midihdr_tag {
719 DWORD dwBufferLength;
720 DWORD dwBytesRecorded;
723 struct midihdr_tag *lpNext;
725 /* Win 32 extended the structure with these 2 fields */
727 DWORD_PTR dwReserved[8];
728 } MIDIHDR, *LPMIDIHDR;
730 #define MHDR_DONE 0x00000001 /* done bit */
731 #define MHDR_PREPARED 0x00000002 /* set if header prepared */
732 #define MHDR_INQUEUE 0x00000004 /* reserved for driver */
733 #define MHDR_ISSTRM 0x00000008 /* data is sent by Stream functions */
735 typedef struct midiproptempo_tag {
738 } MIDIPROPTEMPO, *LPMIDIPROPTEMPO;
740 typedef struct midiproptimediv_tag {
743 } MIDIPROPTIMEDIV, *LPMIDIPROPTIMEDIV;
745 #define MIDIPROP_GET 0x40000000
746 #define MIDIPROP_SET 0x80000000
747 #define MIDIPROP_TEMPO 0x00000002
748 #define MIDIPROP_TIMEDIV 0x00000001
750 typedef struct midievent_tag {
751 DWORD dwDeltaTime; /* Time, in MIDI ticks, between the previous
752 * event and the current event. */
753 DWORD dwStreamID; /* Reserved; must be zero. */
754 DWORD dwEvent; /* event => see MEVT_XXX macros */
755 DWORD dwParms[1]; /* extra pmts to dwEvent if F_LONG is set */
756 } MIDIEVENT, *LPMIDIEVENT;
758 #define MEVT_EVENTTYPE(x) ((BYTE) (((x)>>24)&0xFF))
759 #define MEVT_EVENTPARM(x) ((DWORD) ((x)&0x00FFFFFFL))
761 #define MEVT_F_CALLBACK 0x40000000l
762 #define MEVT_F_LONG 0x80000000l
763 #define MEVT_F_SHORT 0x00000000l
764 #define MEVT_COMMENT ((BYTE)0x82)
765 #define MEVT_LONGMSG ((BYTE)0x80)
766 #define MEVT_NOP ((BYTE)0x02)
767 #define MEVT_SHORTMSG ((BYTE)0x00)
768 #define MEVT_TEMPO ((BYTE)0x01)
769 #define MEVT_VERSION ((BYTE)0x84)
771 UINT WINAPI midiOutGetNumDevs(void);
772 UINT WINAPI midiOutGetDevCapsA(UINT_PTR,LPMIDIOUTCAPSA,UINT);
773 UINT WINAPI midiOutGetDevCapsW(UINT_PTR,LPMIDIOUTCAPSW,UINT);
774 #define midiOutGetDevCaps WINELIB_NAME_AW(midiOutGetDevCaps)
775 UINT WINAPI midiOutGetVolume(HMIDIOUT,DWORD*);
776 UINT WINAPI midiOutSetVolume(HMIDIOUT,DWORD);
777 UINT WINAPI midiOutGetErrorTextA(UINT,LPSTR,UINT);
778 UINT WINAPI midiOutGetErrorTextW(UINT,LPWSTR,UINT);
779 #define midiOutGetErrorText WINELIB_NAME_AW(midiOutGetErrorText)
780 UINT WINAPI midiOutOpen(LPHMIDIOUT,UINT,DWORD_PTR,DWORD_PTR,DWORD);
781 UINT WINAPI midiOutClose(HMIDIOUT);
782 UINT WINAPI midiOutPrepareHeader(HMIDIOUT,MIDIHDR*,UINT);
783 UINT WINAPI midiOutUnprepareHeader(HMIDIOUT,MIDIHDR*,UINT);
784 UINT WINAPI midiOutShortMsg(HMIDIOUT,DWORD);
785 UINT WINAPI midiOutLongMsg(HMIDIOUT,MIDIHDR*,UINT);
786 UINT WINAPI midiOutReset(HMIDIOUT);
787 UINT WINAPI midiOutCachePatches(HMIDIOUT,UINT,WORD*,UINT);
788 UINT WINAPI midiOutCacheDrumPatches(HMIDIOUT,UINT,WORD*,UINT);
789 UINT WINAPI midiOutGetID(HMIDIOUT,UINT*);
790 UINT WINAPI midiOutMessage(HMIDIOUT,UINT,DWORD_PTR,DWORD_PTR);
792 UINT WINAPI midiInGetNumDevs(void);
793 UINT WINAPI midiInGetDevCapsA(UINT_PTR,LPMIDIINCAPSA,UINT);
794 UINT WINAPI midiInGetDevCapsW(UINT_PTR,LPMIDIINCAPSW,UINT);
795 #define midiInGetDevCaps WINELIB_NAME_AW(midiInGetDevCaps)
796 UINT WINAPI midiInGetErrorTextA(UINT,LPSTR,UINT);
797 UINT WINAPI midiInGetErrorTextW(UINT,LPWSTR,UINT);
798 #define midiInGetErrorText WINELIB_NAME_AW(midiInGetErrorText)
799 UINT WINAPI midiInOpen(LPHMIDIIN,UINT,DWORD_PTR,DWORD_PTR,DWORD);
800 UINT WINAPI midiInClose(HMIDIIN);
801 UINT WINAPI midiInPrepareHeader(HMIDIIN,MIDIHDR*,UINT);
802 UINT WINAPI midiInUnprepareHeader(HMIDIIN,MIDIHDR*,UINT);
803 UINT WINAPI midiInAddBuffer(HMIDIIN,MIDIHDR*,UINT);
804 UINT WINAPI midiInStart(HMIDIIN);
805 UINT WINAPI midiInStop(HMIDIIN);
806 UINT WINAPI midiInReset(HMIDIIN);
807 UINT WINAPI midiInGetID(HMIDIIN,UINT*);
808 UINT WINAPI midiInMessage(HMIDIIN,UINT,DWORD_PTR,DWORD_PTR);
809 MMRESULT WINAPI midiStreamClose(HMIDISTRM hms);
810 MMRESULT WINAPI midiStreamOpen(LPHMIDISTRM,LPUINT,DWORD,DWORD_PTR,DWORD_PTR,DWORD);
811 MMRESULT WINAPI midiStreamOut(HMIDISTRM hms, LPMIDIHDR lpMidiHdr, UINT cbMidiHdr);
812 MMRESULT WINAPI midiStreamPause(HMIDISTRM hms);
813 MMRESULT WINAPI midiStreamPosition(HMIDISTRM hms, LPMMTIME lpmmt, UINT cbmmt);
814 MMRESULT WINAPI midiStreamProperty(HMIDISTRM hms, LPBYTE lpPropData, DWORD dwProperty);
815 MMRESULT WINAPI midiStreamRestart(HMIDISTRM hms);
816 MMRESULT WINAPI midiStreamStop(HMIDISTRM hms);
818 #define AUX_MAPPER (-1)
820 typedef struct tagAUXCAPSA {
823 MMVERSION vDriverVersion;
824 CHAR szPname[MAXPNAMELEN];
828 } AUXCAPSA, *LPAUXCAPSA;
830 typedef struct tagAUXCAPSW {
833 MMVERSION vDriverVersion;
834 WCHAR szPname[MAXPNAMELEN];
838 } AUXCAPSW, *LPAUXCAPSW;
840 DECL_WINELIB_TYPE_AW(AUXCAPS)
841 DECL_WINELIB_TYPE_AW(LPAUXCAPS)
843 typedef struct tagAUXCAPS2A {
846 MMVERSION vDriverVersion;
847 CHAR szPname[MAXPNAMELEN];
851 GUID ManufacturerGuid;
854 } AUXCAPS2A, *LPAUXCAPS2A;
856 typedef struct tagAUXCAPS2W {
859 MMVERSION vDriverVersion;
860 WCHAR szPname[MAXPNAMELEN];
864 GUID ManufacturerGuid;
867 } AUXCAPS2W, *LPAUXCAPS2W;
869 DECL_WINELIB_TYPE_AW(AUXCAPS2)
870 DECL_WINELIB_TYPE_AW(LPAUXCAPS2)
872 #define AUXCAPS_CDAUDIO 1 /* audio from internal CD-ROM drive */
873 #define AUXCAPS_AUXIN 2 /* audio from auxiliary input jacks */
875 #define AUXCAPS_VOLUME 0x0001 /* supports volume control */
876 #define AUXCAPS_LRVOLUME 0x0002 /* separate left-right volume control */
878 UINT WINAPI auxGetNumDevs(void);
879 UINT WINAPI auxGetDevCapsA(UINT_PTR,LPAUXCAPSA,UINT);
880 UINT WINAPI auxGetDevCapsW(UINT_PTR,LPAUXCAPSW,UINT);
881 #define auxGetDevCaps WINELIB_NAME_AW(auxGetDevCaps)
882 UINT WINAPI auxSetVolume(UINT,DWORD);
883 UINT WINAPI auxGetVolume(UINT,LPDWORD);
884 UINT WINAPI auxOutMessage(UINT,UINT,DWORD_PTR,DWORD_PTR);
886 #define TIMERR_NOERROR (0) /* no error */
887 #define TIMERR_NOCANDO (TIMERR_BASE+1) /* request not completed */
888 #define TIMERR_STRUCT (TIMERR_BASE+33) /* time struct size */
890 typedef void (CALLBACK *LPTIMECALLBACK)(UINT,UINT,DWORD_PTR,DWORD_PTR,DWORD_PTR);
892 #define TIME_ONESHOT 0x0000 /* program timer for single event */
893 #define TIME_PERIODIC 0x0001 /* program for continuous periodic event */
894 #define TIME_CALLBACK_FUNCTION 0x0000 /* callback is function */
895 #define TIME_CALLBACK_EVENT_SET 0x0010 /* callback is event - use SetEvent */
896 #define TIME_CALLBACK_EVENT_PULSE 0x0020 /* callback is event - use PulseEvent */
897 #define TIME_KILL_SYNCHRONOUS 0x0100
899 typedef struct timecaps_tag {
902 } TIMECAPS, *LPTIMECAPS;
905 MMRESULT WINAPI timeGetSystemTime(LPMMTIME,UINT);
906 DWORD WINAPI timeGetTime(void); /* same for win32/win16 */
907 MMRESULT WINAPI timeSetEvent(UINT,UINT,LPTIMECALLBACK,DWORD_PTR,UINT);
908 MMRESULT WINAPI timeKillEvent(UINT);
909 MMRESULT WINAPI timeGetDevCaps(LPTIMECAPS,UINT);
910 MMRESULT WINAPI timeBeginPeriod(UINT);
911 MMRESULT WINAPI timeEndPeriod(UINT);
913 #define JOYERR_NOERROR (0) /* no error */
914 #define JOYERR_PARMS (JOYERR_BASE+5) /* bad parameters */
915 #define JOYERR_NOCANDO (JOYERR_BASE+6) /* request not completed */
916 #define JOYERR_UNPLUGGED (JOYERR_BASE+7) /* joystick is unplugged */
918 /* JOYINFO, JOYINFOEX, MM_JOY* */
919 #define JOY_BUTTON1 0x0001
920 #define JOY_BUTTON2 0x0002
921 #define JOY_BUTTON3 0x0004
922 #define JOY_BUTTON4 0x0008
923 #define JOY_BUTTON1CHG 0x0100
924 #define JOY_BUTTON2CHG 0x0200
925 #define JOY_BUTTON3CHG 0x0400
926 #define JOY_BUTTON4CHG 0x0800
928 #define JOYSTICKID1 0
929 #define JOYSTICKID2 1
932 #define JOYCAPS_HASZ 0x0001
933 #define JOYCAPS_HASR 0x0002
934 #define JOYCAPS_HASU 0x0004
935 #define JOYCAPS_HASV 0x0008
936 #define JOYCAPS_HASPOV 0x0010
937 #define JOYCAPS_POV4DIR 0x0020
938 #define JOYCAPS_POVCTS 0x0040
940 /* JOYINFOEX stuff */
941 #define JOY_POVCENTERED (WORD) -1
942 #define JOY_POVFORWARD 0
943 #define JOY_POVRIGHT 9000
944 #define JOY_POVBACKWARD 18000
945 #define JOY_POVLEFT 27000
947 #define JOY_RETURNX 0x00000001
948 #define JOY_RETURNY 0x00000002
949 #define JOY_RETURNZ 0x00000004
950 #define JOY_RETURNR 0x00000008
951 #define JOY_RETURNU 0x00000010
952 #define JOY_RETURNV 0x00000020
953 #define JOY_RETURNPOV 0x00000040
954 #define JOY_RETURNBUTTONS 0x00000080
955 #define JOY_RETURNRAWDATA 0x00000100
956 #define JOY_RETURNPOVCTS 0x00000200
957 #define JOY_RETURNCENTERED 0x00000400
958 #define JOY_USEDEADZONE 0x00000800
959 #define JOY_RETURNALL (JOY_RETURNX | JOY_RETURNY | JOY_RETURNZ | \
960 JOY_RETURNR | JOY_RETURNU | JOY_RETURNV | \
961 JOY_RETURNPOV | JOY_RETURNBUTTONS)
962 #define JOY_CAL_READALWAYS 0x00010000
963 #define JOY_CAL_READXYONLY 0x00020000
964 #define JOY_CAL_READ3 0x00040000
965 #define JOY_CAL_READ4 0x00080000
966 #define JOY_CAL_READXONLY 0x00100000
967 #define JOY_CAL_READYONLY 0x00200000
968 #define JOY_CAL_READ5 0x00400000
969 #define JOY_CAL_READ6 0x00800000
970 #define JOY_CAL_READZONLY 0x01000000
971 #define JOY_CAL_READRONLY 0x02000000
972 #define JOY_CAL_READUONLY 0x04000000
973 #define JOY_CAL_READVONLY 0x08000000
975 typedef struct tagJOYCAPSA {
978 CHAR szPname[MAXPNAMELEN];
998 CHAR szRegKey[MAXPNAMELEN];
999 CHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME];
1000 } JOYCAPSA, *LPJOYCAPSA;
1002 typedef struct tagJOYCAPSW {
1005 WCHAR szPname[MAXPNAMELEN];
1025 WCHAR szRegKey[MAXPNAMELEN];
1026 WCHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME];
1027 } JOYCAPSW, *LPJOYCAPSW;
1028 DECL_WINELIB_TYPE_AW(JOYCAPS)
1029 DECL_WINELIB_TYPE_AW(LPJOYCAPS)
1031 typedef struct tagJOYCAPS2A {
1034 CHAR szPname[MAXPNAMELEN];
1054 CHAR szRegKey[MAXPNAMELEN];
1055 CHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME];
1056 GUID ManufacturerGuid;
1059 } JOYCAPS2A, *LPJOYCAPS2A;
1061 typedef struct tagJOYCAPS2W {
1064 WCHAR szPname[MAXPNAMELEN];
1084 WCHAR szRegKey[MAXPNAMELEN];
1085 WCHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME];
1086 GUID ManufacturerGuid;
1089 } JOYCAPS2W, *LPJOYCAPS2W;
1090 DECL_WINELIB_TYPE_AW(JOYCAPS2)
1091 DECL_WINELIB_TYPE_AW(LPJOYCAPS2)
1093 typedef struct joyinfo_tag {
1098 } JOYINFO, *LPJOYINFO;
1100 typedef struct joyinfoex_tag {
1110 DWORD dwButtonNumber;
1114 } JOYINFOEX,*LPJOYINFOEX;
1117 MMRESULT WINAPI joyGetDevCapsA(UINT_PTR,LPJOYCAPSA,UINT);
1118 MMRESULT WINAPI joyGetDevCapsW(UINT_PTR,LPJOYCAPSW,UINT);
1119 #define joyGetDevCaps WINELIB_NAME_AW(joyGetDevCaps)
1120 UINT WINAPI joyGetNumDevs(void);
1121 MMRESULT WINAPI joyGetPos(UINT,LPJOYINFO);
1122 MMRESULT WINAPI joyGetPosEx(UINT,LPJOYINFOEX);
1123 MMRESULT WINAPI joyGetThreshold(UINT,UINT*);
1124 MMRESULT WINAPI joyReleaseCapture(UINT);
1125 MMRESULT WINAPI joySetCapture(HWND,UINT,UINT,BOOL);
1126 MMRESULT WINAPI joySetThreshold(UINT,UINT);
1128 #define MIXERR_BASE 1024
1129 #define MIXERR_INVALLINE (MIXERR_BASE + 0)
1130 #define MIXERR_INVALCONTROL (MIXERR_BASE + 1)
1131 #define MIXERR_INVALVALUE (MIXERR_BASE + 2)
1132 #define MIXERR_LASTERROR (MIXERR_BASE + 2)
1134 typedef struct tagMIXERCAPSA {
1137 MMVERSION vDriverVersion;
1138 CHAR szPname[MAXPNAMELEN];
1140 DWORD cDestinations;
1141 } MIXERCAPSA,*LPMIXERCAPSA;
1143 typedef struct tagMIXERCAPSW {
1146 MMVERSION vDriverVersion;
1147 WCHAR szPname[MAXPNAMELEN];
1149 DWORD cDestinations;
1150 } MIXERCAPSW,*LPMIXERCAPSW;
1152 DECL_WINELIB_TYPE_AW(MIXERCAPS)
1153 DECL_WINELIB_TYPE_AW(LPMIXERCAPS)
1155 typedef struct tagMIXERCAPS2A {
1158 MMVERSION vDriverVersion;
1159 CHAR szPname[MAXPNAMELEN];
1161 DWORD cDestinations;
1162 GUID ManufacturerGuid;
1165 } MIXERCAPS2A,*LPMIXERCAPS2A;
1167 typedef struct tagMIXERCAPS2W {
1170 MMVERSION vDriverVersion;
1171 WCHAR szPname[MAXPNAMELEN];
1173 DWORD cDestinations;
1174 GUID ManufacturerGuid;
1177 } MIXERCAPS2W,*LPMIXERCAPS2W;
1179 DECL_WINELIB_TYPE_AW(MIXERCAPS2)
1180 DECL_WINELIB_TYPE_AW(LPMIXERCAPS2)
1182 #define MIXER_SHORT_NAME_CHARS 16
1183 #define MIXER_LONG_NAME_CHARS 64
1185 /* MIXERLINE.fdwLine */
1186 #define MIXERLINE_LINEF_ACTIVE 0x00000001
1187 #define MIXERLINE_LINEF_DISCONNECTED 0x00008000
1188 #define MIXERLINE_LINEF_SOURCE 0x80000000
1191 #define MIXER_OBJECTF_HANDLE 0x80000000L
1192 #define MIXER_OBJECTF_MIXER 0x00000000L
1193 #define MIXER_OBJECTF_HMIXER (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIXER)
1194 #define MIXER_OBJECTF_WAVEOUT 0x10000000L
1195 #define MIXER_OBJECTF_HWAVEOUT (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEOUT)
1196 #define MIXER_OBJECTF_WAVEIN 0x20000000L
1197 #define MIXER_OBJECTF_HWAVEIN (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEIN)
1198 #define MIXER_OBJECTF_MIDIOUT 0x30000000L
1199 #define MIXER_OBJECTF_HMIDIOUT (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIOUT)
1200 #define MIXER_OBJECTF_MIDIIN 0x40000000L
1201 #define MIXER_OBJECTF_HMIDIIN (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIIN)
1202 #define MIXER_OBJECTF_AUX 0x50000000L
1204 /* MIXERLINE.dwComponentType */
1205 /* component types for destinations and sources */
1206 #define MIXERLINE_COMPONENTTYPE_DST_FIRST 0x00000000L
1207 #define MIXERLINE_COMPONENTTYPE_DST_UNDEFINED (MIXERLINE_COMPONENTTYPE_DST_FIRST + 0)
1208 #define MIXERLINE_COMPONENTTYPE_DST_DIGITAL (MIXERLINE_COMPONENTTYPE_DST_FIRST + 1)
1209 #define MIXERLINE_COMPONENTTYPE_DST_LINE (MIXERLINE_COMPONENTTYPE_DST_FIRST + 2)
1210 #define MIXERLINE_COMPONENTTYPE_DST_MONITOR (MIXERLINE_COMPONENTTYPE_DST_FIRST + 3)
1211 #define MIXERLINE_COMPONENTTYPE_DST_SPEAKERS (MIXERLINE_COMPONENTTYPE_DST_FIRST + 4)
1212 #define MIXERLINE_COMPONENTTYPE_DST_HEADPHONES (MIXERLINE_COMPONENTTYPE_DST_FIRST + 5)
1213 #define MIXERLINE_COMPONENTTYPE_DST_TELEPHONE (MIXERLINE_COMPONENTTYPE_DST_FIRST + 6)
1214 #define MIXERLINE_COMPONENTTYPE_DST_WAVEIN (MIXERLINE_COMPONENTTYPE_DST_FIRST + 7)
1215 #define MIXERLINE_COMPONENTTYPE_DST_VOICEIN (MIXERLINE_COMPONENTTYPE_DST_FIRST + 8)
1216 #define MIXERLINE_COMPONENTTYPE_DST_LAST (MIXERLINE_COMPONENTTYPE_DST_FIRST + 8)
1218 #define MIXERLINE_COMPONENTTYPE_SRC_FIRST 0x00001000L
1219 #define MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 0)
1220 #define MIXERLINE_COMPONENTTYPE_SRC_DIGITAL (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 1)
1221 #define MIXERLINE_COMPONENTTYPE_SRC_LINE (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 2)
1222 #define MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 3)
1223 #define MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 4)
1224 #define MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 5)
1225 #define MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 6)
1226 #define MIXERLINE_COMPONENTTYPE_SRC_PCSPEAKER (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 7)
1227 #define MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 8)
1228 #define MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 9)
1229 #define MIXERLINE_COMPONENTTYPE_SRC_ANALOG (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 10)
1230 #define MIXERLINE_COMPONENTTYPE_SRC_LAST (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 10)
1232 /* MIXERLINE.Target.dwType */
1233 #define MIXERLINE_TARGETTYPE_UNDEFINED 0
1234 #define MIXERLINE_TARGETTYPE_WAVEOUT 1
1235 #define MIXERLINE_TARGETTYPE_WAVEIN 2
1236 #define MIXERLINE_TARGETTYPE_MIDIOUT 3
1237 #define MIXERLINE_TARGETTYPE_MIDIIN 4
1238 #define MIXERLINE_TARGETTYPE_AUX 5
1240 typedef struct tagMIXERLINEA {
1242 DWORD dwDestination;
1247 DWORD dwComponentType;
1251 CHAR szShortName[MIXER_SHORT_NAME_CHARS];
1252 CHAR szName[MIXER_LONG_NAME_CHARS];
1258 MMVERSION vDriverVersion;
1259 CHAR szPname[MAXPNAMELEN];
1261 } MIXERLINEA, *LPMIXERLINEA;
1263 typedef struct tagMIXERLINEW {
1265 DWORD dwDestination;
1270 DWORD dwComponentType;
1274 WCHAR szShortName[MIXER_SHORT_NAME_CHARS];
1275 WCHAR szName[MIXER_LONG_NAME_CHARS];
1281 MMVERSION vDriverVersion;
1282 WCHAR szPname[MAXPNAMELEN];
1284 } MIXERLINEW, *LPMIXERLINEW;
1286 DECL_WINELIB_TYPE_AW(MIXERLINE)
1287 DECL_WINELIB_TYPE_AW(LPMIXERLINE)
1289 /* MIXERCONTROL.fdwControl */
1290 #define MIXERCONTROL_CONTROLF_UNIFORM 0x00000001L
1291 #define MIXERCONTROL_CONTROLF_MULTIPLE 0x00000002L
1292 #define MIXERCONTROL_CONTROLF_DISABLED 0x80000000L
1294 /* MIXERCONTROL_CONTROLTYPE_xxx building block defines */
1295 #define MIXERCONTROL_CT_CLASS_MASK 0xF0000000L
1296 #define MIXERCONTROL_CT_CLASS_CUSTOM 0x00000000L
1297 #define MIXERCONTROL_CT_CLASS_METER 0x10000000L
1298 #define MIXERCONTROL_CT_CLASS_SWITCH 0x20000000L
1299 #define MIXERCONTROL_CT_CLASS_NUMBER 0x30000000L
1300 #define MIXERCONTROL_CT_CLASS_SLIDER 0x40000000L
1301 #define MIXERCONTROL_CT_CLASS_FADER 0x50000000L
1302 #define MIXERCONTROL_CT_CLASS_TIME 0x60000000L
1303 #define MIXERCONTROL_CT_CLASS_LIST 0x70000000L
1305 #define MIXERCONTROL_CT_SUBCLASS_MASK 0x0F000000L
1307 #define MIXERCONTROL_CT_SC_SWITCH_BOOLEAN 0x00000000L
1308 #define MIXERCONTROL_CT_SC_SWITCH_BUTTON 0x01000000L
1310 #define MIXERCONTROL_CT_SC_METER_POLLED 0x00000000L
1312 #define MIXERCONTROL_CT_SC_TIME_MICROSECS 0x00000000L
1313 #define MIXERCONTROL_CT_SC_TIME_MILLISECS 0x01000000L
1315 #define MIXERCONTROL_CT_SC_LIST_SINGLE 0x00000000L
1316 #define MIXERCONTROL_CT_SC_LIST_MULTIPLE 0x01000000L
1318 #define MIXERCONTROL_CT_UNITS_MASK 0x00FF0000L
1319 #define MIXERCONTROL_CT_UNITS_CUSTOM 0x00000000L
1320 #define MIXERCONTROL_CT_UNITS_BOOLEAN 0x00010000L
1321 #define MIXERCONTROL_CT_UNITS_SIGNED 0x00020000L
1322 #define MIXERCONTROL_CT_UNITS_UNSIGNED 0x00030000L
1323 #define MIXERCONTROL_CT_UNITS_DECIBELS 0x00040000L /* in 10ths */
1324 #define MIXERCONTROL_CT_UNITS_PERCENT 0x00050000L /* in 10ths */
1326 /* Commonly used control types for specifying MIXERCONTROL.dwControlType */
1327 #define MIXERCONTROL_CONTROLTYPE_CUSTOM (MIXERCONTROL_CT_CLASS_CUSTOM | MIXERCONTROL_CT_UNITS_CUSTOM)
1328 #define MIXERCONTROL_CONTROLTYPE_BOOLEANMETER (MIXERCONTROL_CT_CLASS_METER | MIXERCONTROL_CT_SC_METER_POLLED | MIXERCONTROL_CT_UNITS_BOOLEAN)
1329 #define MIXERCONTROL_CONTROLTYPE_SIGNEDMETER (MIXERCONTROL_CT_CLASS_METER | MIXERCONTROL_CT_SC_METER_POLLED | MIXERCONTROL_CT_UNITS_SIGNED)
1330 #define MIXERCONTROL_CONTROLTYPE_PEAKMETER (MIXERCONTROL_CONTROLTYPE_SIGNEDMETER + 1)
1331 #define MIXERCONTROL_CONTROLTYPE_UNSIGNEDMETER (MIXERCONTROL_CT_CLASS_METER | MIXERCONTROL_CT_SC_METER_POLLED | MIXERCONTROL_CT_UNITS_UNSIGNED)
1332 #define MIXERCONTROL_CONTROLTYPE_BOOLEAN (MIXERCONTROL_CT_CLASS_SWITCH | MIXERCONTROL_CT_SC_SWITCH_BOOLEAN | MIXERCONTROL_CT_UNITS_BOOLEAN)
1333 #define MIXERCONTROL_CONTROLTYPE_ONOFF (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 1)
1334 #define MIXERCONTROL_CONTROLTYPE_MUTE (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 2)
1335 #define MIXERCONTROL_CONTROLTYPE_MONO (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 3)
1336 #define MIXERCONTROL_CONTROLTYPE_LOUDNESS (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 4)
1337 #define MIXERCONTROL_CONTROLTYPE_STEREOENH (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 5)
1338 #define MIXERCONTROL_CONTROLTYPE_BASS_BOOST (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 0x00002277)
1339 #define MIXERCONTROL_CONTROLTYPE_BUTTON (MIXERCONTROL_CT_CLASS_SWITCH | MIXERCONTROL_CT_SC_SWITCH_BUTTON | MIXERCONTROL_CT_UNITS_BOOLEAN)
1340 #define MIXERCONTROL_CONTROLTYPE_DECIBELS (MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_DECIBELS)
1341 #define MIXERCONTROL_CONTROLTYPE_SIGNED (MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_SIGNED)
1342 #define MIXERCONTROL_CONTROLTYPE_UNSIGNED (MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_UNSIGNED)
1343 #define MIXERCONTROL_CONTROLTYPE_PERCENT (MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_PERCENT)
1344 #define MIXERCONTROL_CONTROLTYPE_SLIDER (MIXERCONTROL_CT_CLASS_SLIDER | MIXERCONTROL_CT_UNITS_SIGNED)
1345 #define MIXERCONTROL_CONTROLTYPE_PAN (MIXERCONTROL_CONTROLTYPE_SLIDER + 1)
1346 #define MIXERCONTROL_CONTROLTYPE_QSOUNDPAN (MIXERCONTROL_CONTROLTYPE_SLIDER + 2)
1347 #define MIXERCONTROL_CONTROLTYPE_FADER (MIXERCONTROL_CT_CLASS_FADER | MIXERCONTROL_CT_UNITS_UNSIGNED)
1348 #define MIXERCONTROL_CONTROLTYPE_VOLUME (MIXERCONTROL_CONTROLTYPE_FADER + 1)
1349 #define MIXERCONTROL_CONTROLTYPE_BASS (MIXERCONTROL_CONTROLTYPE_FADER + 2)
1350 #define MIXERCONTROL_CONTROLTYPE_TREBLE (MIXERCONTROL_CONTROLTYPE_FADER + 3)
1351 #define MIXERCONTROL_CONTROLTYPE_EQUALIZER (MIXERCONTROL_CONTROLTYPE_FADER + 4)
1352 #define MIXERCONTROL_CONTROLTYPE_SINGLESELECT (MIXERCONTROL_CT_CLASS_LIST | MIXERCONTROL_CT_SC_LIST_SINGLE | MIXERCONTROL_CT_UNITS_BOOLEAN)
1353 #define MIXERCONTROL_CONTROLTYPE_MUX (MIXERCONTROL_CONTROLTYPE_SINGLESELECT + 1)
1354 #define MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT (MIXERCONTROL_CT_CLASS_LIST | MIXERCONTROL_CT_SC_LIST_MULTIPLE | MIXERCONTROL_CT_UNITS_BOOLEAN)
1355 #define MIXERCONTROL_CONTROLTYPE_MIXER (MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT + 1)
1356 #define MIXERCONTROL_CONTROLTYPE_MICROTIME (MIXERCONTROL_CT_CLASS_TIME | MIXERCONTROL_CT_SC_TIME_MICROSECS | MIXERCONTROL_CT_UNITS_UNSIGNED)
1357 #define MIXERCONTROL_CONTROLTYPE_MILLITIME (MIXERCONTROL_CT_CLASS_TIME | MIXERCONTROL_CT_SC_TIME_MILLISECS | MIXERCONTROL_CT_UNITS_UNSIGNED)
1360 typedef struct tagMIXERCONTROLA {
1363 DWORD dwControlType;
1365 DWORD cMultipleItems;
1366 CHAR szShortName[MIXER_SHORT_NAME_CHARS];
1367 CHAR szName[MIXER_LONG_NAME_CHARS];
1377 DWORD dwReserved[6];
1382 DWORD dwReserved[6];
1384 } MIXERCONTROLA, *LPMIXERCONTROLA;
1386 typedef struct MIXERCONTROLW {
1389 DWORD dwControlType;
1391 DWORD cMultipleItems;
1392 WCHAR szShortName[MIXER_SHORT_NAME_CHARS];
1393 WCHAR szName[MIXER_LONG_NAME_CHARS];
1403 DWORD dwReserved[6];
1408 DWORD dwReserved[6];
1410 } MIXERCONTROLW, *LPMIXERCONTROLW;
1412 DECL_WINELIB_TYPE_AW(MIXERCONTROL)
1413 DECL_WINELIB_TYPE_AW(LPMIXERCONTROL)
1415 typedef struct tagMIXERLINECONTROLSA {
1420 DWORD dwControlType;
1424 LPMIXERCONTROLA pamxctrl;
1425 } MIXERLINECONTROLSA, *LPMIXERLINECONTROLSA;
1427 typedef struct tagMIXERLINECONTROLSW {
1432 DWORD dwControlType;
1436 LPMIXERCONTROLW pamxctrl;
1437 } MIXERLINECONTROLSW, *LPMIXERLINECONTROLSW;
1439 DECL_WINELIB_TYPE_AW(MIXERLINECONTROLS)
1440 DECL_WINELIB_TYPE_AW(LPMIXERLINECONTROLS)
1442 typedef struct tMIXERCONTROLDETAILS {
1448 DWORD cMultipleItems;
1452 } MIXERCONTROLDETAILS,*LPMIXERCONTROLDETAILS;
1454 typedef struct tagMIXERCONTROLDETAILS_LISTTEXTA {
1457 CHAR szName[MIXER_LONG_NAME_CHARS];
1458 } MIXERCONTROLDETAILS_LISTTEXTA,*LPMIXERCONTROLDETAILS_LISTTEXTA;
1460 typedef struct tagMIXERCONTROLDETAILS_LISTTEXTW {
1463 WCHAR szName[MIXER_LONG_NAME_CHARS];
1464 } MIXERCONTROLDETAILS_LISTTEXTW,*LPMIXERCONTROLDETAILS_LISTTEXTW;
1466 DECL_WINELIB_TYPE_AW(MIXERCONTROLDETAILS_LISTTEXT)
1467 DECL_WINELIB_TYPE_AW(LPMIXERCONTROLDETAILS_LISTTEXT)
1469 /* MIXER_GETCONTROLDETAILSF_VALUE */
1472 } MIXERCONTROLDETAILS_BOOLEAN,*LPMIXERCONTROLDETAILS_BOOLEAN;
1476 } MIXERCONTROLDETAILS_SIGNED,*LPMIXERCONTROLDETAILS_SIGNED;
1480 } MIXERCONTROLDETAILS_UNSIGNED,*LPMIXERCONTROLDETAILS_UNSIGNED;
1482 /* bits passed to mixerGetLineInfo.fdwInfo */
1483 #define MIXER_GETLINEINFOF_DESTINATION 0x00000000L
1484 #define MIXER_GETLINEINFOF_SOURCE 0x00000001L
1485 #define MIXER_GETLINEINFOF_LINEID 0x00000002L
1486 #define MIXER_GETLINEINFOF_COMPONENTTYPE 0x00000003L
1487 #define MIXER_GETLINEINFOF_TARGETTYPE 0x00000004L
1488 #define MIXER_GETLINEINFOF_QUERYMASK 0x0000000FL
1490 /* bitmask passed to mixerGetLineControl */
1491 #define MIXER_GETLINECONTROLSF_ALL 0x00000000L
1492 #define MIXER_GETLINECONTROLSF_ONEBYID 0x00000001L
1493 #define MIXER_GETLINECONTROLSF_ONEBYTYPE 0x00000002L
1494 #define MIXER_GETLINECONTROLSF_QUERYMASK 0x0000000FL
1496 /* bitmask passed to mixerGetControlDetails */
1497 #define MIXER_GETCONTROLDETAILSF_VALUE 0x00000000L
1498 #define MIXER_GETCONTROLDETAILSF_LISTTEXT 0x00000001L
1499 #define MIXER_GETCONTROLDETAILSF_QUERYMASK 0x0000000FL
1501 /* bitmask passed to mixerSetControlDetails */
1502 #define MIXER_SETCONTROLDETAILSF_VALUE 0x00000000L
1503 #define MIXER_SETCONTROLDETAILSF_CUSTOM 0x00000001L
1504 #define MIXER_SETCONTROLDETAILSF_QUERYMASK 0x0000000FL
1506 UINT WINAPI mixerGetNumDevs(void);
1507 UINT WINAPI mixerOpen(LPHMIXER,UINT,DWORD_PTR,DWORD_PTR,DWORD);
1508 UINT WINAPI mixerClose(HMIXER);
1509 DWORD WINAPI mixerMessage(HMIXER,UINT,DWORD_PTR,DWORD_PTR);
1510 UINT WINAPI mixerGetDevCapsA(UINT_PTR,LPMIXERCAPSA,UINT);
1511 UINT WINAPI mixerGetDevCapsW(UINT_PTR,LPMIXERCAPSW,UINT);
1512 #define mixerGetDevCaps WINELIB_NAME_AW(mixerGetDevCaps)
1513 UINT WINAPI mixerGetLineInfoA(HMIXEROBJ,LPMIXERLINEA,DWORD);
1514 UINT WINAPI mixerGetLineInfoW(HMIXEROBJ,LPMIXERLINEW,DWORD);
1515 #define mixerGetLineInfo WINELIB_NAME_AW(mixerGetLineInfo)
1516 UINT WINAPI mixerGetID(HMIXEROBJ,LPUINT,DWORD);
1517 UINT WINAPI mixerGetLineControlsA(HMIXEROBJ,LPMIXERLINECONTROLSA,DWORD);
1518 UINT WINAPI mixerGetLineControlsW(HMIXEROBJ,LPMIXERLINECONTROLSW,DWORD);
1519 #define mixerGetLineControls WINELIB_NAME_AW(mixerGetLineControls)
1520 UINT WINAPI mixerGetControlDetailsA(HMIXEROBJ,LPMIXERCONTROLDETAILS,DWORD);
1521 UINT WINAPI mixerGetControlDetailsW(HMIXEROBJ,LPMIXERCONTROLDETAILS,DWORD);
1522 #define mixerGetControlDetails WINELIB_NAME_AW(mixerGetControlDetails)
1523 UINT WINAPI mixerSetControlDetails(HMIXEROBJ,LPMIXERCONTROLDETAILS,DWORD);
1525 #define MMIOERR_BASE 256
1526 #define MMIOERR_FILENOTFOUND (MMIOERR_BASE + 1) /* file not found */
1527 #define MMIOERR_OUTOFMEMORY (MMIOERR_BASE + 2) /* out of memory */
1528 #define MMIOERR_CANNOTOPEN (MMIOERR_BASE + 3) /* cannot open */
1529 #define MMIOERR_CANNOTCLOSE (MMIOERR_BASE + 4) /* cannot close */
1530 #define MMIOERR_CANNOTREAD (MMIOERR_BASE + 5) /* cannot read */
1531 #define MMIOERR_CANNOTWRITE (MMIOERR_BASE + 6) /* cannot write */
1532 #define MMIOERR_CANNOTSEEK (MMIOERR_BASE + 7) /* cannot seek */
1533 #define MMIOERR_CANNOTEXPAND (MMIOERR_BASE + 8) /* cannot expand file */
1534 #define MMIOERR_CHUNKNOTFOUND (MMIOERR_BASE + 9) /* chunk not found */
1535 #define MMIOERR_UNBUFFERED (MMIOERR_BASE + 10) /* file is unbuffered */
1536 #define MMIOERR_PATHNOTFOUND (MMIOERR_BASE + 11)
1537 #define MMIOERR_ACCESSDENIED (MMIOERR_BASE + 12)
1538 #define MMIOERR_SHARINGVIOLATION (MMIOERR_BASE + 13)
1539 #define MMIOERR_NETWORKERROR (MMIOERR_BASE + 14)
1540 #define MMIOERR_TOOMANYOPENFILES (MMIOERR_BASE + 15)
1541 #define MMIOERR_INVALIDFILE (MMIOERR_BASE + 16)
1543 #define CFSEPCHAR '+' /* compound file name separator char. */
1545 typedef DWORD FOURCC; /* a four character code */
1546 typedef LRESULT (CALLBACK *LPMMIOPROC) (LPSTR lpmmioinfo, UINT uMessage,
1547 LPARAM lParam1, LPARAM lParam2);
1549 typedef struct _MMIOINFO {
1555 /* fields maintained by MMIO functions during buffered I/O */
1562 /* fields maintained by I/O procedure */
1565 /* other fields maintained by MMIO */
1569 } MMIOINFO, *PMMIOINFO, *LPMMIOINFO;
1572 typedef struct _MMCKINFO
1574 FOURCC ckid; /* chunk ID */
1575 DWORD cksize; /* chunk size */
1576 FOURCC fccType; /* form type or list type */
1577 DWORD dwDataOffset; /* offset of data portion of chunk */
1578 DWORD dwFlags; /* flags used by MMIO functions */
1579 } MMCKINFO, *LPMMCKINFO;
1581 #define MMIO_RWMODE 0x00000003 /* open file for reading/writing/both */
1582 #define MMIO_SHAREMODE 0x00000070 /* file sharing mode number */
1584 #define MMIO_CREATE 0x00001000 /* create new file (or truncate file) */
1585 #define MMIO_PARSE 0x00000100 /* parse new file returning path */
1586 #define MMIO_DELETE 0x00000200 /* create new file (or truncate file) */
1587 #define MMIO_EXIST 0x00004000 /* checks for existence of file */
1588 #define MMIO_ALLOCBUF 0x00010000 /* mmioOpen() should allocate a buffer */
1589 #define MMIO_GETTEMP 0x00020000 /* mmioOpen() should retrieve temp name */
1591 #define MMIO_DIRTY 0x10000000 /* I/O buffer is dirty */
1593 #define MMIO_READ 0x00000000 /* open file for reading only */
1594 #define MMIO_WRITE 0x00000001 /* open file for writing only */
1595 #define MMIO_READWRITE 0x00000002 /* open file for reading and writing */
1597 #define MMIO_COMPAT 0x00000000 /* compatibility mode */
1598 #define MMIO_EXCLUSIVE 0x00000010 /* exclusive-access mode */
1599 #define MMIO_DENYWRITE 0x00000020 /* deny writing to other processes */
1600 #define MMIO_DENYREAD 0x00000030 /* deny reading to other processes */
1601 #define MMIO_DENYNONE 0x00000040 /* deny nothing to other processes */
1603 #define MMIO_FHOPEN 0x0010 /* mmioClose: keep file handle open */
1604 #define MMIO_EMPTYBUF 0x0010 /* mmioFlush: empty the I/O buffer */
1605 #define MMIO_TOUPPER 0x0010 /* mmioStringToFOURCC: to u-case */
1606 #define MMIO_INSTALLPROC 0x00010000 /* mmioInstallIOProc: install MMIOProc */
1607 #define MMIO_GLOBALPROC 0x10000000 /* mmioInstallIOProc: install globally */
1608 #define MMIO_REMOVEPROC 0x00020000 /* mmioInstallIOProc: remove MMIOProc */
1609 #define MMIO_FINDPROC 0x00040000 /* mmioInstallIOProc: find an MMIOProc */
1610 #define MMIO_FINDCHUNK 0x0010 /* mmioDescend: find a chunk by ID */
1611 #define MMIO_FINDRIFF 0x0020 /* mmioDescend: find a LIST chunk */
1612 #define MMIO_FINDLIST 0x0040 /* mmioDescend: find a RIFF chunk */
1613 #define MMIO_CREATERIFF 0x0020 /* mmioCreateChunk: make a LIST chunk */
1614 #define MMIO_CREATELIST 0x0040 /* mmioCreateChunk: make a RIFF chunk */
1620 #endif /* SEEK_SET */
1622 #define MMIOM_READ MMIO_READ /* read */
1623 #define MMIOM_WRITE MMIO_WRITE /* write */
1624 #define MMIOM_SEEK 2 /* seek to a new position in file */
1625 #define MMIOM_OPEN 3 /* open file */
1626 #define MMIOM_CLOSE 4 /* close file */
1627 #define MMIOM_WRITEFLUSH 5 /* write and flush */
1629 #define MMIOM_RENAME 6 /* rename specified file */
1631 #define MMIOM_USER 0x8000 /* beginning of user-defined messages */
1633 #define FOURCC_RIFF mmioFOURCC('R', 'I', 'F', 'F')
1634 #define FOURCC_LIST mmioFOURCC('L', 'I', 'S', 'T')
1636 #define FOURCC_DOS mmioFOURCC('D', 'O', 'S', ' ')
1637 #define FOURCC_MEM mmioFOURCC('M', 'E', 'M', ' ')
1639 #define MMIO_DEFAULTBUFFER 8192 /* default buffer size */
1641 #define mmioFOURCC( ch0, ch1, ch2, ch3 ) \
1642 ( (DWORD)(BYTE)(ch0) | ( (DWORD)(BYTE)(ch1) << 8 ) | \
1643 ( (DWORD)(BYTE)(ch2) << 16 ) | ( (DWORD)(BYTE)(ch3) << 24 ) )
1645 LPMMIOPROC WINAPI mmioInstallIOProcA(FOURCC,LPMMIOPROC,DWORD);
1646 LPMMIOPROC WINAPI mmioInstallIOProcW(FOURCC,LPMMIOPROC,DWORD);
1647 #define mmioInstallIOProc WINELIB_NAME_AW(mmioInstallIOProc)
1649 FOURCC WINAPI mmioStringToFOURCCA(LPCSTR,UINT);
1650 FOURCC WINAPI mmioStringToFOURCCW(LPCWSTR,UINT);
1651 #define mmioStringToFOURCC WINELIB_NAME_AW(mmioStringToFOURCC)
1652 HMMIO WINAPI mmioOpenA(LPSTR,MMIOINFO*,DWORD);
1653 HMMIO WINAPI mmioOpenW(LPWSTR,MMIOINFO*,DWORD);
1654 #define mmioOpen WINELIB_NAME_AW(mmioOpen)
1656 MMRESULT WINAPI mmioRenameA(LPCSTR szFileName, LPCSTR szNewFileName,
1657 const MMIOINFO * lpmmioinfo, DWORD dwRenameFlags);
1658 MMRESULT WINAPI mmioRenameW(LPCWSTR szFileName, LPCWSTR szNewFileName,
1659 const MMIOINFO * lpmmioinfo, DWORD dwRenameFlags);
1660 #define mmioRename WINELIB_NAME_AW(mmioRename)
1662 MMRESULT WINAPI mmioClose(HMMIO,UINT);
1663 LONG WINAPI mmioRead(HMMIO,HPSTR,LONG);
1664 LONG WINAPI mmioWrite(HMMIO,HPCSTR,LONG);
1665 LONG WINAPI mmioSeek(HMMIO,LONG,INT);
1666 MMRESULT WINAPI mmioGetInfo(HMMIO,MMIOINFO*,UINT);
1667 MMRESULT WINAPI mmioSetInfo(HMMIO,const MMIOINFO*,UINT);
1668 MMRESULT WINAPI mmioSetBuffer(HMMIO,LPSTR,LONG,UINT);
1669 MMRESULT WINAPI mmioFlush(HMMIO,UINT);
1670 MMRESULT WINAPI mmioAdvance(HMMIO,MMIOINFO*,UINT);
1671 LRESULT WINAPI mmioSendMessage(HMMIO,UINT,LPARAM,LPARAM);
1672 MMRESULT WINAPI mmioDescend(HMMIO,MMCKINFO*,const MMCKINFO*,UINT);
1673 MMRESULT WINAPI mmioAscend(HMMIO,MMCKINFO*,UINT);
1674 MMRESULT WINAPI mmioCreateChunk(HMMIO,MMCKINFO*,UINT);
1676 typedef UINT (CALLBACK *YIELDPROC)(MCIDEVICEID,DWORD);
1678 BOOL WINAPI mciExecute(LPCSTR);
1679 DWORD WINAPI mciSendCommandA(MCIDEVICEID,UINT,DWORD_PTR,DWORD_PTR);
1680 DWORD WINAPI mciSendCommandW(MCIDEVICEID,UINT,DWORD_PTR,DWORD_PTR);
1681 #define mciSendCommand WINELIB_NAME_AW(mciSendCommand)
1682 DWORD WINAPI mciSendStringA(LPCSTR,LPSTR,UINT,HWND);
1683 DWORD WINAPI mciSendStringW(LPCWSTR,LPWSTR,UINT,HWND);
1684 #define mciSendString WINELIB_NAME_AW(mciSendString)
1685 MCIDEVICEID WINAPI mciGetDeviceIDA(LPCSTR);
1686 MCIDEVICEID WINAPI mciGetDeviceIDW(LPCWSTR);
1687 #define mciGetDeviceID WINELIB_NAME_AW(mciGetDeviceID)
1688 MCIDEVICEID WINAPI mciGetDeviceIDFromElementIDA(DWORD,LPCSTR);
1689 MCIDEVICEID WINAPI mciGetDeviceIDFromElementIDW(DWORD,LPCWSTR);
1690 #define mciGetDeviceIDFromElementID WINELIB_NAME_AW(mciGetDeviceIDFromElementID)
1691 BOOL WINAPI mciGetErrorStringA(MCIERROR,LPSTR,UINT);
1692 BOOL WINAPI mciGetErrorStringW(MCIERROR,LPWSTR,UINT);
1693 #define mciGetErrorString WINELIB_NAME_AW(mciGetErrorString)
1694 BOOL WINAPI mciSetYieldProc(MCIDEVICEID,YIELDPROC,DWORD);
1695 HTASK WINAPI mciGetCreatorTask(MCIDEVICEID);
1696 YIELDPROC WINAPI mciGetYieldProc(MCIDEVICEID,DWORD*);
1698 #define MCIERR_INVALID_DEVICE_ID (MCIERR_BASE + 1)
1699 #define MCIERR_UNRECOGNIZED_KEYWORD (MCIERR_BASE + 3)
1700 #define MCIERR_UNRECOGNIZED_COMMAND (MCIERR_BASE + 5)
1701 #define MCIERR_HARDWARE (MCIERR_BASE + 6)
1702 #define MCIERR_INVALID_DEVICE_NAME (MCIERR_BASE + 7)
1703 #define MCIERR_OUT_OF_MEMORY (MCIERR_BASE + 8)
1704 #define MCIERR_DEVICE_OPEN (MCIERR_BASE + 9)
1705 #define MCIERR_CANNOT_LOAD_DRIVER (MCIERR_BASE + 10)
1706 #define MCIERR_MISSING_COMMAND_STRING (MCIERR_BASE + 11)
1707 #define MCIERR_PARAM_OVERFLOW (MCIERR_BASE + 12)
1708 #define MCIERR_MISSING_STRING_ARGUMENT (MCIERR_BASE + 13)
1709 #define MCIERR_BAD_INTEGER (MCIERR_BASE + 14)
1710 #define MCIERR_PARSER_INTERNAL (MCIERR_BASE + 15)
1711 #define MCIERR_DRIVER_INTERNAL (MCIERR_BASE + 16)
1712 #define MCIERR_MISSING_PARAMETER (MCIERR_BASE + 17)
1713 #define MCIERR_UNSUPPORTED_FUNCTION (MCIERR_BASE + 18)
1714 #define MCIERR_FILE_NOT_FOUND (MCIERR_BASE + 19)
1715 #define MCIERR_DEVICE_NOT_READY (MCIERR_BASE + 20)
1716 #define MCIERR_INTERNAL (MCIERR_BASE + 21)
1717 #define MCIERR_DRIVER (MCIERR_BASE + 22)
1718 #define MCIERR_CANNOT_USE_ALL (MCIERR_BASE + 23)
1719 #define MCIERR_MULTIPLE (MCIERR_BASE + 24)
1720 #define MCIERR_EXTENSION_NOT_FOUND (MCIERR_BASE + 25)
1721 #define MCIERR_OUTOFRANGE (MCIERR_BASE + 26)
1722 #define MCIERR_FLAGS_NOT_COMPATIBLE (MCIERR_BASE + 28)
1723 #define MCIERR_FILE_NOT_SAVED (MCIERR_BASE + 30)
1724 #define MCIERR_DEVICE_TYPE_REQUIRED (MCIERR_BASE + 31)
1725 #define MCIERR_DEVICE_LOCKED (MCIERR_BASE + 32)
1726 #define MCIERR_DUPLICATE_ALIAS (MCIERR_BASE + 33)
1727 #define MCIERR_BAD_CONSTANT (MCIERR_BASE + 34)
1728 #define MCIERR_MUST_USE_SHAREABLE (MCIERR_BASE + 35)
1729 #define MCIERR_MISSING_DEVICE_NAME (MCIERR_BASE + 36)
1730 #define MCIERR_BAD_TIME_FORMAT (MCIERR_BASE + 37)
1731 #define MCIERR_NO_CLOSING_QUOTE (MCIERR_BASE + 38)
1732 #define MCIERR_DUPLICATE_FLAGS (MCIERR_BASE + 39)
1733 #define MCIERR_INVALID_FILE (MCIERR_BASE + 40)
1734 #define MCIERR_NULL_PARAMETER_BLOCK (MCIERR_BASE + 41)
1735 #define MCIERR_UNNAMED_RESOURCE (MCIERR_BASE + 42)
1736 #define MCIERR_NEW_REQUIRES_ALIAS (MCIERR_BASE + 43)
1737 #define MCIERR_NOTIFY_ON_AUTO_OPEN (MCIERR_BASE + 44)
1738 #define MCIERR_NO_ELEMENT_ALLOWED (MCIERR_BASE + 45)
1739 #define MCIERR_NONAPPLICABLE_FUNCTION (MCIERR_BASE + 46)
1740 #define MCIERR_ILLEGAL_FOR_AUTO_OPEN (MCIERR_BASE + 47)
1741 #define MCIERR_FILENAME_REQUIRED (MCIERR_BASE + 48)
1742 #define MCIERR_EXTRA_CHARACTERS (MCIERR_BASE + 49)
1743 #define MCIERR_DEVICE_NOT_INSTALLED (MCIERR_BASE + 50)
1744 #define MCIERR_GET_CD (MCIERR_BASE + 51)
1745 #define MCIERR_SET_CD (MCIERR_BASE + 52)
1746 #define MCIERR_SET_DRIVE (MCIERR_BASE + 53)
1747 #define MCIERR_DEVICE_LENGTH (MCIERR_BASE + 54)
1748 #define MCIERR_DEVICE_ORD_LENGTH (MCIERR_BASE + 55)
1749 #define MCIERR_NO_INTEGER (MCIERR_BASE + 56)
1751 #define MCIERR_WAVE_OUTPUTSINUSE (MCIERR_BASE + 64)
1752 #define MCIERR_WAVE_SETOUTPUTINUSE (MCIERR_BASE + 65)
1753 #define MCIERR_WAVE_INPUTSINUSE (MCIERR_BASE + 66)
1754 #define MCIERR_WAVE_SETINPUTINUSE (MCIERR_BASE + 67)
1755 #define MCIERR_WAVE_OUTPUTUNSPECIFIED (MCIERR_BASE + 68)
1756 #define MCIERR_WAVE_INPUTUNSPECIFIED (MCIERR_BASE + 69)
1757 #define MCIERR_WAVE_OUTPUTSUNSUITABLE (MCIERR_BASE + 70)
1758 #define MCIERR_WAVE_SETOUTPUTUNSUITABLE (MCIERR_BASE + 71)
1759 #define MCIERR_WAVE_INPUTSUNSUITABLE (MCIERR_BASE + 72)
1760 #define MCIERR_WAVE_SETINPUTUNSUITABLE (MCIERR_BASE + 73)
1762 #define MCIERR_SEQ_DIV_INCOMPATIBLE (MCIERR_BASE + 80)
1763 #define MCIERR_SEQ_PORT_INUSE (MCIERR_BASE + 81)
1764 #define MCIERR_SEQ_PORT_NONEXISTENT (MCIERR_BASE + 82)
1765 #define MCIERR_SEQ_PORT_MAPNODEVICE (MCIERR_BASE + 83)
1766 #define MCIERR_SEQ_PORT_MISCERROR (MCIERR_BASE + 84)
1767 #define MCIERR_SEQ_TIMER (MCIERR_BASE + 85)
1768 #define MCIERR_SEQ_PORTUNSPECIFIED (MCIERR_BASE + 86)
1769 #define MCIERR_SEQ_NOMIDIPRESENT (MCIERR_BASE + 87)
1771 #define MCIERR_NO_WINDOW (MCIERR_BASE + 90)
1772 #define MCIERR_CREATEWINDOW (MCIERR_BASE + 91)
1773 #define MCIERR_FILE_READ (MCIERR_BASE + 92)
1774 #define MCIERR_FILE_WRITE (MCIERR_BASE + 93)
1776 #define MCIERR_NO_IDENTITY (MCIERR_BASE + 94)
1778 #define MCIERR_CUSTOM_DRIVER_BASE (MCIERR_BASE + 256)
1780 #define MCI_OPEN_DRIVER 0x0801
1781 #define MCI_CLOSE_DRIVER 0x0802
1782 #define MCI_OPEN 0x0803
1783 #define MCI_CLOSE 0x0804
1784 #define MCI_ESCAPE 0x0805
1785 #define MCI_PLAY 0x0806
1786 #define MCI_SEEK 0x0807
1787 #define MCI_STOP 0x0808
1788 #define MCI_PAUSE 0x0809
1789 #define MCI_INFO 0x080A
1790 #define MCI_GETDEVCAPS 0x080B
1791 #define MCI_SPIN 0x080C
1792 #define MCI_SET 0x080D
1793 #define MCI_STEP 0x080E
1794 #define MCI_RECORD 0x080F
1795 #define MCI_SYSINFO 0x0810
1796 #define MCI_BREAK 0x0811
1797 #define MCI_SOUND 0x0812
1798 #define MCI_SAVE 0x0813
1799 #define MCI_STATUS 0x0814
1800 #define MCI_CUE 0x0830
1801 #define MCI_REALIZE 0x0840
1802 #define MCI_WINDOW 0x0841
1803 #define MCI_PUT 0x0842
1804 #define MCI_WHERE 0x0843
1805 #define MCI_FREEZE 0x0844
1806 #define MCI_UNFREEZE 0x0845
1807 #define MCI_LOAD 0x0850
1808 #define MCI_CUT 0x0851
1809 #define MCI_COPY 0x0852
1810 #define MCI_PASTE 0x0853
1811 #define MCI_UPDATE 0x0854
1812 #define MCI_RESUME 0x0855
1813 #define MCI_DELETE 0x0856
1815 #define MCI_USER_MESSAGES (0x400 + DRV_MCI_FIRST)
1817 #define MCI_ALL_DEVICE_ID 0xFFFFFFFF
1819 #define MCI_DEVTYPE_VCR (MCI_STRING_OFFSET + 1)
1820 #define MCI_DEVTYPE_VIDEODISC (MCI_STRING_OFFSET + 2)
1821 #define MCI_DEVTYPE_OVERLAY (MCI_STRING_OFFSET + 3)
1822 #define MCI_DEVTYPE_CD_AUDIO (MCI_STRING_OFFSET + 4)
1823 #define MCI_DEVTYPE_DAT (MCI_STRING_OFFSET + 5)
1824 #define MCI_DEVTYPE_SCANNER (MCI_STRING_OFFSET + 6)
1825 #define MCI_DEVTYPE_ANIMATION (MCI_STRING_OFFSET + 7)
1826 #define MCI_DEVTYPE_DIGITAL_VIDEO (MCI_STRING_OFFSET + 8)
1827 #define MCI_DEVTYPE_OTHER (MCI_STRING_OFFSET + 9)
1828 #define MCI_DEVTYPE_WAVEFORM_AUDIO (MCI_STRING_OFFSET + 10)
1829 #define MCI_DEVTYPE_SEQUENCER (MCI_STRING_OFFSET + 11)
1831 #define MCI_DEVTYPE_FIRST MCI_DEVTYPE_VCR
1832 #define MCI_DEVTYPE_LAST MCI_DEVTYPE_SEQUENCER
1834 #define MCI_MODE_NOT_READY (MCI_STRING_OFFSET + 12)
1835 #define MCI_MODE_STOP (MCI_STRING_OFFSET + 13)
1836 #define MCI_MODE_PLAY (MCI_STRING_OFFSET + 14)
1837 #define MCI_MODE_RECORD (MCI_STRING_OFFSET + 15)
1838 #define MCI_MODE_SEEK (MCI_STRING_OFFSET + 16)
1839 #define MCI_MODE_PAUSE (MCI_STRING_OFFSET + 17)
1840 #define MCI_MODE_OPEN (MCI_STRING_OFFSET + 18)
1842 #define MCI_FORMAT_MILLISECONDS 0
1843 #define MCI_FORMAT_HMS 1
1844 #define MCI_FORMAT_MSF 2
1845 #define MCI_FORMAT_FRAMES 3
1846 #define MCI_FORMAT_SMPTE_24 4
1847 #define MCI_FORMAT_SMPTE_25 5
1848 #define MCI_FORMAT_SMPTE_30 6
1849 #define MCI_FORMAT_SMPTE_30DROP 7
1850 #define MCI_FORMAT_BYTES 8
1851 #define MCI_FORMAT_SAMPLES 9
1852 #define MCI_FORMAT_TMSF 10
1854 #define MCI_MSF_MINUTE(msf) ((BYTE)(msf))
1855 #define MCI_MSF_SECOND(msf) ((BYTE)(((WORD)(msf)) >> 8))
1856 #define MCI_MSF_FRAME(msf) ((BYTE)((msf)>>16))
1858 #define MCI_MAKE_MSF(m, s, f) ((DWORD)(((BYTE)(m) | \
1860 (((DWORD)(BYTE)(f))<<16)))
1862 #define MCI_TMSF_TRACK(tmsf) ((BYTE)(tmsf))
1863 #define MCI_TMSF_MINUTE(tmsf) ((BYTE)(((WORD)(tmsf)) >> 8))
1864 #define MCI_TMSF_SECOND(tmsf) ((BYTE)((tmsf)>>16))
1865 #define MCI_TMSF_FRAME(tmsf) ((BYTE)((tmsf)>>24))
1867 #define MCI_MAKE_TMSF(t, m, s, f) ((DWORD)(((BYTE)(t) | \
1869 (((DWORD)(BYTE)(s) | \
1870 ((WORD)(f)<<8))<<16)))
1872 #define MCI_HMS_HOUR(hms) ((BYTE)(hms))
1873 #define MCI_HMS_MINUTE(hms) ((BYTE)(((WORD)(hms)) >> 8))
1874 #define MCI_HMS_SECOND(hms) ((BYTE)((hms)>>16))
1876 #define MCI_MAKE_HMS(h, m, s) ((DWORD)(((BYTE)(h) | \
1878 (((DWORD)(BYTE)(s))<<16)))
1880 #define MCI_NOTIFY_SUCCESSFUL 0x0001
1881 #define MCI_NOTIFY_SUPERSEDED 0x0002
1882 #define MCI_NOTIFY_ABORTED 0x0004
1883 #define MCI_NOTIFY_FAILURE 0x0008
1885 #define MCI_NOTIFY 0x00000001L
1886 #define MCI_WAIT 0x00000002L
1887 #define MCI_FROM 0x00000004L
1888 #define MCI_TO 0x00000008L
1889 #define MCI_TRACK 0x00000010L
1891 #define MCI_OPEN_SHAREABLE 0x00000100L
1892 #define MCI_OPEN_ELEMENT 0x00000200L
1893 #define MCI_OPEN_ALIAS 0x00000400L
1894 #define MCI_OPEN_ELEMENT_ID 0x00000800L
1895 #define MCI_OPEN_TYPE_ID 0x00001000L
1896 #define MCI_OPEN_TYPE 0x00002000L
1898 #define MCI_SEEK_TO_START 0x00000100L
1899 #define MCI_SEEK_TO_END 0x00000200L
1901 #define MCI_STATUS_ITEM 0x00000100L
1902 #define MCI_STATUS_START 0x00000200L
1904 #define MCI_STATUS_LENGTH 0x00000001L
1905 #define MCI_STATUS_POSITION 0x00000002L
1906 #define MCI_STATUS_NUMBER_OF_TRACKS 0x00000003L
1907 #define MCI_STATUS_MODE 0x00000004L
1908 #define MCI_STATUS_MEDIA_PRESENT 0x00000005L
1909 #define MCI_STATUS_TIME_FORMAT 0x00000006L
1910 #define MCI_STATUS_READY 0x00000007L
1911 #define MCI_STATUS_CURRENT_TRACK 0x00000008L
1913 #define MCI_INFO_PRODUCT 0x00000100L
1914 #define MCI_INFO_FILE 0x00000200L
1915 #define MCI_INFO_MEDIA_UPC 0x00000400L
1916 #define MCI_INFO_MEDIA_IDENTITY 0x00000800L
1917 #define MCI_INFO_NAME 0x00001000L
1918 #define MCI_INFO_COPYRIGHT 0x00002000L
1920 #define MCI_GETDEVCAPS_ITEM 0x00000100L
1922 #define MCI_GETDEVCAPS_CAN_RECORD 0x00000001L
1923 #define MCI_GETDEVCAPS_HAS_AUDIO 0x00000002L
1924 #define MCI_GETDEVCAPS_HAS_VIDEO 0x00000003L
1925 #define MCI_GETDEVCAPS_DEVICE_TYPE 0x00000004L
1926 #define MCI_GETDEVCAPS_USES_FILES 0x00000005L
1927 #define MCI_GETDEVCAPS_COMPOUND_DEVICE 0x00000006L
1928 #define MCI_GETDEVCAPS_CAN_EJECT 0x00000007L
1929 #define MCI_GETDEVCAPS_CAN_PLAY 0x00000008L
1930 #define MCI_GETDEVCAPS_CAN_SAVE 0x00000009L
1932 #define MCI_SYSINFO_QUANTITY 0x00000100L
1933 #define MCI_SYSINFO_OPEN 0x00000200L
1934 #define MCI_SYSINFO_NAME 0x00000400L
1935 #define MCI_SYSINFO_INSTALLNAME 0x00000800L
1937 #define MCI_SET_DOOR_OPEN 0x00000100L
1938 #define MCI_SET_DOOR_CLOSED 0x00000200L
1939 #define MCI_SET_TIME_FORMAT 0x00000400L
1940 #define MCI_SET_AUDIO 0x00000800L
1941 #define MCI_SET_VIDEO 0x00001000L
1942 #define MCI_SET_ON 0x00002000L
1943 #define MCI_SET_OFF 0x00004000L
1945 #define MCI_SET_AUDIO_ALL 0x00000000L
1946 #define MCI_SET_AUDIO_LEFT 0x00000001L
1947 #define MCI_SET_AUDIO_RIGHT 0x00000002L
1949 #define MCI_BREAK_KEY 0x00000100L
1950 #define MCI_BREAK_HWND 0x00000200L
1951 #define MCI_BREAK_OFF 0x00000400L
1953 #define MCI_RECORD_INSERT 0x00000100L
1954 #define MCI_RECORD_OVERWRITE 0x00000200L
1956 #define MCI_SOUND_NAME 0x00000100L
1958 #define MCI_SAVE_FILE 0x00000100L
1960 #define MCI_LOAD_FILE 0x00000100L
1962 typedef struct tagMCI_GENERIC_PARMS {
1963 DWORD_PTR dwCallback;
1964 } MCI_GENERIC_PARMS, *LPMCI_GENERIC_PARMS;
1966 typedef struct tagMCI_OPEN_PARMSA {
1967 DWORD_PTR dwCallback;
1968 MCIDEVICEID wDeviceID;
1969 LPCSTR lpstrDeviceType;
1970 LPCSTR lpstrElementName;
1972 } MCI_OPEN_PARMSA, *LPMCI_OPEN_PARMSA;
1974 typedef struct tagMCI_OPEN_PARMSW {
1975 DWORD_PTR dwCallback;
1976 MCIDEVICEID wDeviceID;
1977 LPCWSTR lpstrDeviceType;
1978 LPCWSTR lpstrElementName;
1980 } MCI_OPEN_PARMSW, *LPMCI_OPEN_PARMSW;
1982 DECL_WINELIB_TYPE_AW(MCI_OPEN_PARMS)
1983 DECL_WINELIB_TYPE_AW(LPMCI_OPEN_PARMS)
1985 typedef struct tagMCI_PLAY_PARMS{
1986 DWORD_PTR dwCallback;
1989 } MCI_PLAY_PARMS, *LPMCI_PLAY_PARMS;
1991 typedef struct tagMCI_SEEK_PARMS {
1992 DWORD_PTR dwCallback;
1994 } MCI_SEEK_PARMS, *LPMCI_SEEK_PARMS;
1996 typedef struct tagMCI_STATUS_PARMS {
1997 DWORD_PTR dwCallback;
2001 } MCI_STATUS_PARMS, *LPMCI_STATUS_PARMS;
2003 typedef struct tagMCI_INFO_PARMSA {
2004 DWORD_PTR dwCallback;
2007 } MCI_INFO_PARMSA, *LPMCI_INFO_PARMSA;
2009 typedef struct tagMCI_INFO_PARMSW {
2010 DWORD_PTR dwCallback;
2013 } MCI_INFO_PARMSW, *LPMCI_INFO_PARMSW;
2015 DECL_WINELIB_TYPE_AW(MCI_INFO_PARMS)
2016 DECL_WINELIB_TYPE_AW(LPMCI_INFO_PARMS)
2018 typedef struct tagMCI_GETDEVCAPS_PARMS {
2019 DWORD_PTR dwCallback;
2022 } MCI_GETDEVCAPS_PARMS, *LPMCI_GETDEVCAPS_PARMS;
2024 typedef struct tagMCI_SYSINFO_PARMSA {
2025 DWORD_PTR dwCallback;
2030 } MCI_SYSINFO_PARMSA, *LPMCI_SYSINFO_PARMSA;
2032 typedef struct tagMCI_SYSINFO_PARMSW {
2033 DWORD_PTR dwCallback;
2038 } MCI_SYSINFO_PARMSW, *LPMCI_SYSINFO_PARMSW;
2040 DECL_WINELIB_TYPE_AW(MCI_SYSINFO_PARMS)
2041 DECL_WINELIB_TYPE_AW(LPMCI_SYSINFO_PARMS)
2043 typedef struct tagMCI_SET_PARMS {
2044 DWORD_PTR dwCallback;
2047 } MCI_SET_PARMS, *LPMCI_SET_PARMS;
2049 typedef struct tagMCI_BREAK_PARMS {
2050 DWORD_PTR dwCallback;
2053 } MCI_BREAK_PARMS, *LPMCI_BREAK_PARMS;
2056 typedef struct tagMCI_SOUND_PARMSA {
2057 DWORD_PTR dwCallback;
2058 LPCSTR lpstrSoundName;
2059 } MCI_SOUND_PARMSA, *LPMCI_SOUND_PARMSA;
2061 typedef struct tagMCI_SOUND_PARMSW {
2062 DWORD_PTR dwCallback;
2063 LPCWSTR lpstrSoundName;
2064 } MCI_SOUND_PARMSW, *LPMCI_SOUND_PARMSW;
2066 DECL_WINELIB_TYPE_AW(MCI_SOUND_PARMS)
2067 DECL_WINELIB_TYPE_AW(LPMCI_SOUND_PARMS)
2069 typedef struct tagMCI_SAVE_PARMSA {
2070 DWORD_PTR dwCallback;
2072 } MCI_SAVE_PARMSA, *LPMCI_SAVE_PARMSA;
2074 typedef struct tagMCI_SAVE_PARMSW {
2075 DWORD_PTR dwCallback;
2077 } MCI_SAVE_PARMSW, *LPMCI_SAVE_PARMSW;
2079 DECL_WINELIB_TYPE_AW(MCI_SAVE_PARMS)
2080 DECL_WINELIB_TYPE_AW(LPMCI_SAVE_PARMS)
2082 typedef struct tagMCI_LOAD_PARMSA {
2083 DWORD_PTR dwCallback;
2085 } MCI_LOAD_PARMSA, *LPMCI_LOAD_PARMSA;
2087 typedef struct tagMCI_LOAD_PARMSW {
2088 DWORD_PTR dwCallback;
2090 } MCI_LOAD_PARMSW, *LPMCI_LOAD_PARMSW;
2092 DECL_WINELIB_TYPE_AW(MCI_LOAD_PARMS)
2093 DECL_WINELIB_TYPE_AW(LPMCI_LOAD_PARMS)
2095 typedef struct tagMCI_RECORD_PARMS {
2096 DWORD_PTR dwCallback;
2099 } MCI_RECORD_PARMS, *LPMCI_RECORD_PARMS;
2101 #define MCI_CDA_STATUS_TYPE_TRACK 0x00004001
2103 #define MCI_CDA_TRACK_AUDIO (MCI_CD_OFFSET + 0)
2104 #define MCI_CDA_TRACK_OTHER (MCI_CD_OFFSET + 1)
2106 #define MCI_VD_MODE_PARK (MCI_VD_OFFSET + 1)
2108 #define MCI_VD_MEDIA_CLV (MCI_VD_OFFSET + 2)
2109 #define MCI_VD_MEDIA_CAV (MCI_VD_OFFSET + 3)
2110 #define MCI_VD_MEDIA_OTHER (MCI_VD_OFFSET + 4)
2112 #define MCI_VD_FORMAT_TRACK 0x4001
2114 #define MCI_VD_PLAY_REVERSE 0x00010000L
2115 #define MCI_VD_PLAY_FAST 0x00020000L
2116 #define MCI_VD_PLAY_SPEED 0x00040000L
2117 #define MCI_VD_PLAY_SCAN 0x00080000L
2118 #define MCI_VD_PLAY_SLOW 0x00100000L
2120 #define MCI_VD_SEEK_REVERSE 0x00010000L
2122 #define MCI_VD_STATUS_SPEED 0x00004002L
2123 #define MCI_VD_STATUS_FORWARD 0x00004003L
2124 #define MCI_VD_STATUS_MEDIA_TYPE 0x00004004L
2125 #define MCI_VD_STATUS_SIDE 0x00004005L
2126 #define MCI_VD_STATUS_DISC_SIZE 0x00004006L
2128 #define MCI_VD_GETDEVCAPS_CLV 0x00010000L
2129 #define MCI_VD_GETDEVCAPS_CAV 0x00020000L
2131 #define MCI_VD_SPIN_UP 0x00010000L
2132 #define MCI_VD_SPIN_DOWN 0x00020000L
2134 #define MCI_VD_GETDEVCAPS_CAN_REVERSE 0x00004002L
2135 #define MCI_VD_GETDEVCAPS_FAST_RATE 0x00004003L
2136 #define MCI_VD_GETDEVCAPS_SLOW_RATE 0x00004004L
2137 #define MCI_VD_GETDEVCAPS_NORMAL_RATE 0x00004005L
2139 #define MCI_VD_STEP_FRAMES 0x00010000L
2140 #define MCI_VD_STEP_REVERSE 0x00020000L
2142 #define MCI_VD_ESCAPE_STRING 0x00000100L
2144 typedef struct tagMCI_VD_PLAY_PARMS {
2145 DWORD_PTR dwCallback;
2149 } MCI_VD_PLAY_PARMS, *LPMCI_VD_PLAY_PARMS;
2151 typedef struct tagMCI_VD_STEP_PARMS {
2152 DWORD_PTR dwCallback;
2154 } MCI_VD_STEP_PARMS, *LPMCI_VD_STEP_PARMS;
2156 typedef struct tagMCI_VD_ESCAPE_PARMSA {
2157 DWORD_PTR dwCallback;
2158 LPCSTR lpstrCommand;
2159 } MCI_VD_ESCAPE_PARMSA, *LPMCI_VD_ESCAPE_PARMSA;
2161 typedef struct tagMCI_VD_ESCAPE_PARMSW {
2162 DWORD_PTR dwCallback;
2163 LPCWSTR lpstrCommand;
2164 } MCI_VD_ESCAPE_PARMSW, *LPMCI_VD_ESCAPE_PARMSW;
2166 DECL_WINELIB_TYPE_AW(MCI_VD_ESCAPE_PARMS)
2167 DECL_WINELIB_TYPE_AW(LPMCI_VD_ESCAPE_PARMS)
2169 #define MCI_WAVE_OPEN_BUFFER 0x00010000L
2171 #define MCI_WAVE_SET_FORMATTAG 0x00010000L
2172 #define MCI_WAVE_SET_CHANNELS 0x00020000L
2173 #define MCI_WAVE_SET_SAMPLESPERSEC 0x00040000L
2174 #define MCI_WAVE_SET_AVGBYTESPERSEC 0x00080000L
2175 #define MCI_WAVE_SET_BLOCKALIGN 0x00100000L
2176 #define MCI_WAVE_SET_BITSPERSAMPLE 0x00200000L
2178 #define MCI_WAVE_INPUT 0x00400000L
2179 #define MCI_WAVE_OUTPUT 0x00800000L
2181 #define MCI_WAVE_STATUS_FORMATTAG 0x00004001L
2182 #define MCI_WAVE_STATUS_CHANNELS 0x00004002L
2183 #define MCI_WAVE_STATUS_SAMPLESPERSEC 0x00004003L
2184 #define MCI_WAVE_STATUS_AVGBYTESPERSEC 0x00004004L
2185 #define MCI_WAVE_STATUS_BLOCKALIGN 0x00004005L
2186 #define MCI_WAVE_STATUS_BITSPERSAMPLE 0x00004006L
2187 #define MCI_WAVE_STATUS_LEVEL 0x00004007L
2189 #define MCI_WAVE_SET_ANYINPUT 0x04000000L
2190 #define MCI_WAVE_SET_ANYOUTPUT 0x08000000L
2192 #define MCI_WAVE_GETDEVCAPS_INPUTS 0x00004001L
2193 #define MCI_WAVE_GETDEVCAPS_OUTPUTS 0x00004002L
2195 typedef struct tagMCI_WAVE_OPEN_PARMSA {
2196 DWORD_PTR dwCallback;
2197 MCIDEVICEID wDeviceID;
2198 LPCSTR lpstrDeviceType;
2199 LPCSTR lpstrElementName;
2201 DWORD dwBufferSeconds;
2202 } MCI_WAVE_OPEN_PARMSA, *LPMCI_WAVE_OPEN_PARMSA;
2204 typedef struct tagMCI_WAVE_OPEN_PARMSW {
2205 DWORD_PTR dwCallback;
2206 MCIDEVICEID wDeviceID;
2207 LPCWSTR lpstrDeviceType;
2208 LPCWSTR lpstrElementName;
2210 DWORD dwBufferSeconds;
2211 } MCI_WAVE_OPEN_PARMSW, *LPMCI_WAVE_OPEN_PARMSW;
2213 DECL_WINELIB_TYPE_AW(MCI_WAVE_OPEN_PARMS)
2214 DECL_WINELIB_TYPE_AW(LPMCI_WAVE_OPEN_PARMS)
2216 typedef struct tagMCI_WAVE_DELETE_PARMS {
2217 DWORD_PTR dwCallback;
2220 } MCI_WAVE_DELETE_PARMS, *LPMCI_WAVE_DELETE_PARMS;
2222 typedef struct tagMCI_WAVE_SET_PARMS {
2223 DWORD_PTR dwCallback;
2230 DWORD nSamplesPerSec;
2231 DWORD nAvgBytesPerSec;
2233 UINT wBitsPerSample;
2234 } MCI_WAVE_SET_PARMS, * LPMCI_WAVE_SET_PARMS;
2237 #define MCI_SEQ_DIV_PPQN (0 + MCI_SEQ_OFFSET)
2238 #define MCI_SEQ_DIV_SMPTE_24 (1 + MCI_SEQ_OFFSET)
2239 #define MCI_SEQ_DIV_SMPTE_25 (2 + MCI_SEQ_OFFSET)
2240 #define MCI_SEQ_DIV_SMPTE_30DROP (3 + MCI_SEQ_OFFSET)
2241 #define MCI_SEQ_DIV_SMPTE_30 (4 + MCI_SEQ_OFFSET)
2243 #define MCI_SEQ_FORMAT_SONGPTR 0x4001
2244 #define MCI_SEQ_FILE 0x4002
2245 #define MCI_SEQ_MIDI 0x4003
2246 #define MCI_SEQ_SMPTE 0x4004
2247 #define MCI_SEQ_NONE 65533
2249 #define MCI_SEQ_STATUS_TEMPO 0x00004002L
2250 #define MCI_SEQ_STATUS_PORT 0x00004003L
2251 #define MCI_SEQ_STATUS_SLAVE 0x00004007L
2252 #define MCI_SEQ_STATUS_MASTER 0x00004008L
2253 #define MCI_SEQ_STATUS_OFFSET 0x00004009L
2254 #define MCI_SEQ_STATUS_DIVTYPE 0x0000400AL
2256 #define MCI_SEQ_SET_TEMPO 0x00010000L
2257 #define MCI_SEQ_SET_PORT 0x00020000L
2258 #define MCI_SEQ_SET_SLAVE 0x00040000L
2259 #define MCI_SEQ_SET_MASTER 0x00080000L
2260 #define MCI_SEQ_SET_OFFSET 0x01000000L
2262 typedef struct tagMCI_SEQ_SET_PARMS {
2263 DWORD_PTR dwCallback;
2271 } MCI_SEQ_SET_PARMS, *LPMCI_SEQ_SET_PARMS;
2273 #define MCI_ANIM_OPEN_WS 0x00010000L
2274 #define MCI_ANIM_OPEN_PARENT 0x00020000L
2275 #define MCI_ANIM_OPEN_NOSTATIC 0x00040000L
2277 #define MCI_ANIM_PLAY_SPEED 0x00010000L
2278 #define MCI_ANIM_PLAY_REVERSE 0x00020000L
2279 #define MCI_ANIM_PLAY_FAST 0x00040000L
2280 #define MCI_ANIM_PLAY_SLOW 0x00080000L
2281 #define MCI_ANIM_PLAY_SCAN 0x00100000L
2283 #define MCI_ANIM_STEP_REVERSE 0x00010000L
2284 #define MCI_ANIM_STEP_FRAMES 0x00020000L
2286 #define MCI_ANIM_STATUS_SPEED 0x00004001L
2287 #define MCI_ANIM_STATUS_FORWARD 0x00004002L
2288 #define MCI_ANIM_STATUS_HWND 0x00004003L
2289 #define MCI_ANIM_STATUS_HPAL 0x00004004L
2290 #define MCI_ANIM_STATUS_STRETCH 0x00004005L
2292 #define MCI_ANIM_INFO_TEXT 0x00010000L
2294 #define MCI_ANIM_GETDEVCAPS_CAN_REVERSE 0x00004001L
2295 #define MCI_ANIM_GETDEVCAPS_FAST_RATE 0x00004002L
2296 #define MCI_ANIM_GETDEVCAPS_SLOW_RATE 0x00004003L
2297 #define MCI_ANIM_GETDEVCAPS_NORMAL_RATE 0x00004004L
2298 #define MCI_ANIM_GETDEVCAPS_PALETTES 0x00004006L
2299 #define MCI_ANIM_GETDEVCAPS_CAN_STRETCH 0x00004007L
2300 #define MCI_ANIM_GETDEVCAPS_MAX_WINDOWS 0x00004008L
2302 #define MCI_ANIM_REALIZE_NORM 0x00010000L
2303 #define MCI_ANIM_REALIZE_BKGD 0x00020000L
2305 #define MCI_ANIM_WINDOW_HWND 0x00010000L
2306 #define MCI_ANIM_WINDOW_STATE 0x00040000L
2307 #define MCI_ANIM_WINDOW_TEXT 0x00080000L
2308 #define MCI_ANIM_WINDOW_ENABLE_STRETCH 0x00100000L
2309 #define MCI_ANIM_WINDOW_DISABLE_STRETCH 0x00200000L
2311 #define MCI_ANIM_WINDOW_DEFAULT 0x00000000L
2313 #define MCI_ANIM_RECT 0x00010000L
2314 #define MCI_ANIM_PUT_SOURCE 0x00020000L
2315 #define MCI_ANIM_PUT_DESTINATION 0x00040000L
2317 #define MCI_ANIM_WHERE_SOURCE 0x00020000L
2318 #define MCI_ANIM_WHERE_DESTINATION 0x00040000L
2320 #define MCI_ANIM_UPDATE_HDC 0x00020000L
2322 typedef struct tagMCI_ANIM_OPEN_PARMSA {
2323 DWORD_PTR dwCallback;
2324 MCIDEVICEID wDeviceID;
2325 LPCSTR lpstrDeviceType;
2326 LPCSTR lpstrElementName;
2330 } MCI_ANIM_OPEN_PARMSA, *LPMCI_ANIM_OPEN_PARMSA;
2332 typedef struct tagMCI_ANIM_OPEN_PARMSW {
2333 DWORD_PTR dwCallback;
2334 MCIDEVICEID wDeviceID;
2335 LPCWSTR lpstrDeviceType;
2336 LPCWSTR lpstrElementName;
2340 } MCI_ANIM_OPEN_PARMSW, *LPMCI_ANIM_OPEN_PARMSW;
2342 DECL_WINELIB_TYPE_AW(MCI_ANIM_OPEN_PARMS)
2343 DECL_WINELIB_TYPE_AW(LPMCI_ANIM_OPEN_PARMS)
2345 typedef struct tagMCI_ANIM_PLAY_PARMS {
2346 DWORD_PTR dwCallback;
2350 } MCI_ANIM_PLAY_PARMS, *LPMCI_ANIM_PLAY_PARMS;
2352 typedef struct tagMCI_ANIM_STEP_PARMS {
2353 DWORD_PTR dwCallback;
2355 } MCI_ANIM_STEP_PARMS, *LPMCI_ANIM_STEP_PARMS;
2357 typedef struct tagMCI_ANIM_WINDOW_PARMSA {
2358 DWORD_PTR dwCallback;
2362 } MCI_ANIM_WINDOW_PARMSA, *LPMCI_ANIM_WINDOW_PARMSA;
2364 typedef struct tagMCI_ANIM_WINDOW_PARMSW {
2365 DWORD_PTR dwCallback;
2369 } MCI_ANIM_WINDOW_PARMSW, *LPMCI_ANIM_WINDOW_PARMSW;
2371 DECL_WINELIB_TYPE_AW(MCI_ANIM_WINDOW_PARMS)
2372 DECL_WINELIB_TYPE_AW(LPMCI_ANIM_WINDOW_PARMS)
2374 typedef struct tagMCI_ANIM_RECT_PARMS {
2375 DWORD_PTR dwCallback;
2376 #ifdef MCI_USE_OFFEXT
2379 #else /* ifdef MCI_USE_OFFEXT */
2381 #endif /* ifdef MCI_USE_OFFEXT */
2382 } MCI_ANIM_RECT_PARMS, *LPMCI_ANIM_RECT_PARMS;
2385 typedef struct tagMCI_ANIM_UPDATE_PARMS {
2386 DWORD_PTR dwCallback;
2389 } MCI_ANIM_UPDATE_PARMS, *LPMCI_ANIM_UPDATE_PARMS;
2392 #define MCI_OVLY_OPEN_WS 0x00010000L
2393 #define MCI_OVLY_OPEN_PARENT 0x00020000L
2395 #define MCI_OVLY_STATUS_HWND 0x00004001L
2396 #define MCI_OVLY_STATUS_STRETCH 0x00004002L
2398 #define MCI_OVLY_INFO_TEXT 0x00010000L
2400 #define MCI_OVLY_GETDEVCAPS_CAN_STRETCH 0x00004001L
2401 #define MCI_OVLY_GETDEVCAPS_CAN_FREEZE 0x00004002L
2402 #define MCI_OVLY_GETDEVCAPS_MAX_WINDOWS 0x00004003L
2404 #define MCI_OVLY_WINDOW_HWND 0x00010000L
2405 #define MCI_OVLY_WINDOW_STATE 0x00040000L
2406 #define MCI_OVLY_WINDOW_TEXT 0x00080000L
2407 #define MCI_OVLY_WINDOW_ENABLE_STRETCH 0x00100000L
2408 #define MCI_OVLY_WINDOW_DISABLE_STRETCH 0x00200000L
2410 #define MCI_OVLY_WINDOW_DEFAULT 0x00000000L
2412 #define MCI_OVLY_RECT 0x00010000L
2413 #define MCI_OVLY_PUT_SOURCE 0x00020000L
2414 #define MCI_OVLY_PUT_DESTINATION 0x00040000L
2415 #define MCI_OVLY_PUT_FRAME 0x00080000L
2416 #define MCI_OVLY_PUT_VIDEO 0x00100000L
2418 #define MCI_OVLY_WHERE_SOURCE 0x00020000L
2419 #define MCI_OVLY_WHERE_DESTINATION 0x00040000L
2420 #define MCI_OVLY_WHERE_FRAME 0x00080000L
2421 #define MCI_OVLY_WHERE_VIDEO 0x00100000L
2423 typedef struct tagMCI_OVLY_OPEN_PARMSA {
2424 DWORD_PTR dwCallback;
2425 MCIDEVICEID wDeviceID;
2426 LPCSTR lpstrDeviceType;
2427 LPCSTR lpstrElementName;
2431 } MCI_OVLY_OPEN_PARMSA, *LPMCI_OVLY_OPEN_PARMSA;
2433 typedef struct tagMCI_OVLY_OPEN_PARMSW {
2434 DWORD_PTR dwCallback;
2435 MCIDEVICEID wDeviceID;
2436 LPCWSTR lpstrDeviceType;
2437 LPCWSTR lpstrElementName;
2441 } MCI_OVLY_OPEN_PARMSW, *LPMCI_OVLY_OPEN_PARMSW;
2443 DECL_WINELIB_TYPE_AW(MCI_OVLY_OPEN_PARMS)
2444 DECL_WINELIB_TYPE_AW(LPMCI_OVLY_OPEN_PARMS)
2446 typedef struct tagMCI_OVLY_WINDOW_PARMSA {
2447 DWORD_PTR dwCallback;
2451 } MCI_OVLY_WINDOW_PARMSA, *LPMCI_OVLY_WINDOW_PARMSA;
2453 typedef struct tagMCI_OVLY_WINDOW_PARMSW {
2454 DWORD_PTR dwCallback;
2458 } MCI_OVLY_WINDOW_PARMSW, *LPMCI_OVLY_WINDOW_PARMSW;
2460 DECL_WINELIB_TYPE_AW(MCI_OVLY_WINDOW_PARMS)
2461 DECL_WINELIB_TYPE_AW(LPMCI_OVLY_WINDOW_PARMS)
2463 typedef struct tagMCI_OVLY_RECT_PARMS {
2464 DWORD_PTR dwCallback;
2465 #ifdef MCI_USE_OFFEXT
2468 #else /* ifdef MCI_USE_OFFEXT */
2470 #endif /* ifdef MCI_USE_OFFEXT */
2471 } MCI_OVLY_RECT_PARMS, *LPMCI_OVLY_RECT_PARMS;
2474 typedef struct tagMCI_OVLY_SAVE_PARMSA {
2475 DWORD_PTR dwCallback;
2478 } MCI_OVLY_SAVE_PARMSA, *LPMCI_OVLY_SAVE_PARMSA;
2480 typedef struct tagMCI_OVLY_SAVE_PARMSW {
2481 DWORD_PTR dwCallback;
2484 } MCI_OVLY_SAVE_PARMSW, *LPMCI_OVLY_SAVE_PARMSW;
2486 DECL_WINELIB_TYPE_AW(MCI_OVLY_SAVE_PARMS)
2487 DECL_WINELIB_TYPE_AW(LPMCI_OVLY_SAVE_PARMS)
2489 typedef struct tagMCI_OVLY_LOAD_PARMSA {
2490 DWORD_PTR dwCallback;
2493 } MCI_OVLY_LOAD_PARMSA, *LPMCI_OVLY_LOAD_PARMSA;
2495 typedef struct tagMCI_OVLY_LOAD_PARMSW {
2496 DWORD_PTR dwCallback;
2499 } MCI_OVLY_LOAD_PARMSW, *LPMCI_OVLY_LOAD_PARMSW;
2501 DECL_WINELIB_TYPE_AW(MCI_OVLY_LOAD_PARMS)
2502 DECL_WINELIB_TYPE_AW(LPMCI_OVLY_LOAD_PARMS)
2504 #ifndef NEWTRANSPARENT
2505 #define NEWTRANSPARENT 3
2506 #define QUERYROPSUPPORT 40
2509 #define SELECTDIB 41
2510 #define DIBINDEX(n) MAKELONG((n),0x10FF)
2512 #ifndef SC_SCREENSAVE
2513 #define SC_SCREENSAVE 0xf140
2516 #include <poppack.h>
2522 #endif /* __WINE_MMSYSTEM_H */