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