1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
|
/*
* MMSYSTEM - Multimedia Wine Extension ... :-)
*
* Copyright (C) the Wine project
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
/*
* Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
* other than GPL or LGPL is available it will apply instead, Oracle elects to use only
* the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
* a choice of LGPL license versions is made available with the language indicating
* that LGPLv2 or any later version may be used, or where a choice of which version
* of the LGPL is applied is otherwise unspecified.
*/
#ifndef __WINE_WINE_MMSYSTEM16_H
#define __WINE_WINE_MMSYSTEM16_H
#include <windef.h>
#include <wine/windef16.h>
#include <mmddk.h>
#include <pshpack1.h>
typedef UINT16 MMVERSION16;
typedef UINT16 MCIDEVICEID16;
typedef UINT16 MMRESULT16;
typedef struct {
UINT16 wType; /* indicates the contents of the union */
union {
DWORD ms; /* milliseconds */
DWORD sample; /* samples */
DWORD cb; /* byte count */
struct { /* SMPTE */
BYTE hour; /* hours */
BYTE min; /* minutes */
BYTE sec; /* seconds */
BYTE frame; /* frames */
BYTE fps; /* frames per second */
BYTE dummy; /* pad */
} smpte;
struct { /* MIDI */
DWORD songptrpos; /* song pointer position */
} midi;
} u;
} MMTIME16, *LPMMTIME16;
typedef struct {
DWORD dwDCISize;
SEGPTR lpszDCISectionName;
SEGPTR lpszDCIAliasName;
} DRVCONFIGINFO16, *LPDRVCONFIGINFO16;
/* GetDriverInfo16 references this structure, so this a struct defined
* in the Win16 API.
* GetDriverInfo has been deprecated in Win32.
*/
typedef struct
{
UINT16 length;
HDRVR16 hDriver;
HINSTANCE16 hModule;
CHAR szAliasName[128];
} DRIVERINFOSTRUCT16, *LPDRIVERINFOSTRUCT16;
LRESULT WINAPI DefDriverProc16(DWORD,HDRVR16,UINT16,LPARAM,LPARAM);
HDRVR16 WINAPI OpenDriver16(LPCSTR,LPCSTR,LPARAM);
LRESULT WINAPI CloseDriver16(HDRVR16,LPARAM,LPARAM);
LRESULT WINAPI SendDriverMessage16(HDRVR16,UINT16,LPARAM,LPARAM);
HMODULE16 WINAPI GetDriverModuleHandle16(HDRVR16);
HDRVR16 WINAPI GetNextDriver16(HDRVR16,DWORD);
BOOL16 WINAPI GetDriverInfo16(HDRVR16,DRIVERINFOSTRUCT16 *);
typedef void (CALLBACK *LPDRVCALLBACK16) (HDRVR16,UINT16,DWORD,DWORD,DWORD);
typedef LPDRVCALLBACK16 LPWAVECALLBACK16;
UINT16 WINAPI mmsystemGetVersion16(void);
BOOL16 WINAPI sndPlaySound16(LPCSTR,UINT16);
typedef struct {
WORD wMid; /* manufacturer ID */
WORD wPid; /* product ID */
MMVERSION16 vDriverVersion; /* version of the driver */
CHAR szPname[MAXPNAMELEN]; /* product name (0 terminated string) */
DWORD dwFormats; /* formats supported */
WORD wChannels; /* number of sources supported */
DWORD dwSupport; /* functionality supported by driver */
} WAVEOUTCAPS16, *LPWAVEOUTCAPS16;
typedef struct {
WORD wMid; /* manufacturer ID */
WORD wPid; /* product ID */
MMVERSION16 vDriverVersion; /* version of the driver */
CHAR szPname[MAXPNAMELEN]; /* product name (0 terminated string) */
DWORD dwFormats; /* formats supported */
WORD wChannels; /* number of channels supported */
} WAVEINCAPS16, *LPWAVEINCAPS16;
typedef struct {
HWAVE16 hWave;
LPWAVEFORMATEX lpFormat;
DWORD dwCallback;
DWORD dwInstance;
UINT16 uMappedDeviceID;
DWORD dnDevNode;
} WAVEOPENDESC16, *LPWAVEOPENDESC16;
UINT16 WINAPI waveOutGetNumDevs16(void);
UINT16 WINAPI waveOutGetDevCaps16(UINT16,LPWAVEOUTCAPS16,UINT16);
UINT16 WINAPI waveOutGetVolume16(UINT16,DWORD*);
UINT16 WINAPI waveOutSetVolume16(UINT16,DWORD);
UINT16 WINAPI waveOutGetErrorText16(UINT16,LPSTR,UINT16);
UINT16 WINAPI waveOutOpen16(HWAVEOUT16*,UINT16,const WAVEFORMATEX *,DWORD,DWORD,DWORD);
UINT16 WINAPI waveOutClose16(HWAVEOUT16);
UINT16 WINAPI waveOutPrepareHeader16(HWAVEOUT16,SEGPTR,UINT16);
UINT16 WINAPI waveOutUnprepareHeader16(HWAVEOUT16,SEGPTR,UINT16);
UINT16 WINAPI waveOutWrite16(HWAVEOUT16,SEGPTR,UINT16);
UINT16 WINAPI waveOutPause16(HWAVEOUT16);
UINT16 WINAPI waveOutRestart16(HWAVEOUT16);
UINT16 WINAPI waveOutReset16(HWAVEOUT16);
UINT16 WINAPI waveOutBreakLoop16(HWAVEOUT16);
UINT16 WINAPI waveOutGetPosition16(HWAVEOUT16,LPMMTIME16,UINT16);
UINT16 WINAPI waveOutGetPitch16(HWAVEOUT16,DWORD*);
UINT16 WINAPI waveOutSetPitch16(HWAVEOUT16,DWORD);
UINT16 WINAPI waveOutGetPlaybackRate16(HWAVEOUT16,DWORD*);
UINT16 WINAPI waveOutSetPlaybackRate16(HWAVEOUT16,DWORD);
UINT16 WINAPI waveOutGetID16(HWAVEOUT16,UINT16*);
DWORD WINAPI waveOutMessage16(HWAVEOUT16,UINT16,DWORD,DWORD);
UINT16 WINAPI waveInGetNumDevs16(void);
UINT16 WINAPI waveInGetDevCaps16(UINT16,LPWAVEINCAPS16,UINT16);
UINT16 WINAPI waveInGetErrorText16(UINT16,LPSTR,UINT16);
UINT16 WINAPI waveInOpen16(HWAVEIN16*,UINT16,const WAVEFORMATEX *,DWORD,DWORD,DWORD);
UINT16 WINAPI waveInClose16(HWAVEIN16);
UINT16 WINAPI waveInPrepareHeader16(HWAVEIN16,SEGPTR,UINT16);
UINT16 WINAPI waveInUnprepareHeader16(HWAVEIN16,SEGPTR,UINT16);
UINT16 WINAPI waveInAddBuffer16(HWAVEIN16,SEGPTR,UINT16);
UINT16 WINAPI waveInStart16(HWAVEIN16);
UINT16 WINAPI waveInStop16(HWAVEIN16);
UINT16 WINAPI waveInReset16(HWAVEIN16);
UINT16 WINAPI waveInGetPosition16(HWAVEIN16,LPMMTIME16,UINT16);
UINT16 WINAPI waveInGetID16(HWAVEIN16,UINT16*);
DWORD WINAPI waveInMessage16(HWAVEIN16,UINT16,DWORD,DWORD);
typedef LPDRVCALLBACK16 LPMIDICALLBACK16;
typedef struct {
WORD wMid; /* manufacturer ID */
WORD wPid; /* product ID */
MMVERSION16 vDriverVersion; /* version of the driver */
CHAR szPname[MAXPNAMELEN];/* product name (NULL terminated string) */
WORD wTechnology; /* type of device */
WORD wVoices; /* # of voices (internal synth only) */
WORD wNotes; /* max # of notes (internal synth only) */
WORD wChannelMask; /* channels used (internal synth only) */
DWORD dwSupport; /* functionality supported by driver */
} MIDIOUTCAPS16, *LPMIDIOUTCAPS16;
typedef struct {
WORD wMid; /* manufacturer ID */
WORD wPid; /* product ID */
MMVERSION16 vDriverVersion; /* version of the driver */
CHAR szPname[MAXPNAMELEN];/* product name (NULL terminated string) */
DWORD dwSupport; /* included in win95 and higher */
} MIDIINCAPS16, *LPMIDIINCAPS16;
typedef struct midihdr16_tag {
LPSTR lpData; /* pointer to locked data block */
DWORD dwBufferLength; /* length of data in data block */
DWORD dwBytesRecorded;/* used for input only */
DWORD dwUser; /* for client's use */
DWORD dwFlags; /* assorted flags (see defines) */
struct midihdr16_tag *lpNext; /* reserved for driver */
DWORD reserved; /* reserved for driver */
} MIDIHDR16, *LPMIDIHDR16;
typedef struct {
HMIDI16 hMidi;
DWORD dwCallback;
DWORD dwInstance;
UINT16 reserved;
DWORD dnDevNode;
DWORD cIds;
MIDIOPENSTRMID rgIds;
} MIDIOPENDESC16, *LPMIDIOPENDESC16;
UINT16 WINAPI midiOutGetNumDevs16(void);
UINT16 WINAPI midiOutGetDevCaps16(UINT16,LPMIDIOUTCAPS16,UINT16);
UINT16 WINAPI midiOutGetVolume16(UINT16,DWORD*);
UINT16 WINAPI midiOutSetVolume16(UINT16,DWORD);
UINT16 WINAPI midiOutGetErrorText16(UINT16,LPSTR,UINT16);
UINT16 WINAPI midiOutOpen16(HMIDIOUT16*,UINT16,DWORD,DWORD,DWORD);
UINT16 WINAPI midiOutClose16(HMIDIOUT16);
UINT16 WINAPI midiOutPrepareHeader16(HMIDIOUT16,SEGPTR,UINT16);
UINT16 WINAPI midiOutUnprepareHeader16(HMIDIOUT16,SEGPTR,UINT16);
UINT16 WINAPI midiOutShortMsg16(HMIDIOUT16,DWORD);
UINT16 WINAPI midiOutLongMsg16(HMIDIOUT16,SEGPTR,UINT16);
UINT16 WINAPI midiOutReset16(HMIDIOUT16);
UINT16 WINAPI midiOutCachePatches16(HMIDIOUT16,UINT16,WORD*,UINT16);
UINT16 WINAPI midiOutCacheDrumPatches16(HMIDIOUT16,UINT16,WORD*,UINT16);
UINT16 WINAPI midiOutGetID16(HMIDIOUT16,UINT16*);
DWORD WINAPI midiOutMessage16(HMIDIOUT16,UINT16,DWORD,DWORD);
UINT16 WINAPI midiInGetNumDevs16(void);
UINT16 WINAPI midiInGetDevCaps16(UINT16,LPMIDIINCAPS16,UINT16);
UINT16 WINAPI midiInGetErrorText16(UINT16,LPSTR,UINT16);
UINT16 WINAPI midiInOpen16(HMIDIIN16*,UINT16,DWORD,DWORD,DWORD);
UINT16 WINAPI midiInClose16(HMIDIIN16);
UINT16 WINAPI midiInPrepareHeader16(HMIDIIN16,SEGPTR,UINT16);
UINT16 WINAPI midiInUnprepareHeader16(HMIDIIN16,SEGPTR,UINT16);
UINT16 WINAPI midiInAddBuffer16(HMIDIIN16,SEGPTR,UINT16);
UINT16 WINAPI midiInStart16(HMIDIIN16);
UINT16 WINAPI midiInStop16(HMIDIIN16);
UINT16 WINAPI midiInReset16(HMIDIIN16);
UINT16 WINAPI midiInGetID16(HMIDIIN16,UINT16*);
DWORD WINAPI midiInMessage16(HMIDIIN16,UINT16,DWORD,DWORD);
MMRESULT16 WINAPI midiStreamClose16(HMIDISTRM16 hms);
MMRESULT16 WINAPI midiStreamOpen16(HMIDISTRM16*,LPUINT16,DWORD,DWORD,DWORD,DWORD);
MMRESULT16 WINAPI midiStreamOut16(HMIDISTRM16,LPMIDIHDR16,UINT16);
MMRESULT16 WINAPI midiStreamPause16(HMIDISTRM16);
MMRESULT16 WINAPI midiStreamPosition16(HMIDISTRM16,LPMMTIME16,UINT16);
MMRESULT16 WINAPI midiStreamProperty16(HMIDISTRM16,LPBYTE,DWORD);
MMRESULT16 WINAPI midiStreamRestart16(HMIDISTRM16);
MMRESULT16 WINAPI midiStreamStop16(HMIDISTRM16);
typedef struct {
WORD wMid; /* manufacturer ID */
WORD wPid; /* product ID */
MMVERSION16 vDriverVersion; /* version of the driver */
CHAR szPname[MAXPNAMELEN]; /* product name (NULL terminated string) */
WORD wTechnology; /* type of device */
DWORD dwSupport; /* functionality supported by driver */
} AUXCAPS16, *LPAUXCAPS16;
typedef void (CALLBACK *LPTIMECALLBACK16)(UINT16,UINT16,DWORD,DWORD,DWORD);
typedef struct {
UINT16 wPeriodMin; /* minimum period supported */
UINT16 wPeriodMax; /* maximum period supported */
} TIMECAPS16,*LPTIMECAPS16;
typedef struct {
WORD wMid; /* manufacturer ID */
WORD wPid; /* product ID */
char szPname[MAXPNAMELEN]; /* product name (NULL terminated string) */
UINT16 wXmin; /* minimum x position value */
UINT16 wXmax; /* maximum x position value */
UINT16 wYmin; /* minimum y position value */
UINT16 wYmax; /* maximum y position value */
UINT16 wZmin; /* minimum z position value */
UINT16 wZmax; /* maximum z position value */
UINT16 wNumButtons; /* number of buttons */
UINT16 wPeriodMin; /* minimum message period when captured */
UINT16 wPeriodMax; /* maximum message period when captured */
/* win95,nt4 additions: */
UINT16 wRmin; /* minimum r position value */
UINT16 wRmax; /* maximum r position value */
UINT16 wUmin; /* minimum u (5th axis) position value */
UINT16 wUmax; /* maximum u (5th axis) position value */
UINT16 wVmin; /* minimum v (6th axis) position value */
UINT16 wVmax; /* maximum v (6th axis) position value */
UINT16 wCaps; /* joystick capabilities */
UINT16 wMaxAxes; /* maximum number of axes supported */
UINT16 wNumAxes; /* number of axes in use */
UINT16 wMaxButtons; /* maximum number of buttons supported */
CHAR szRegKey[MAXPNAMELEN]; /* registry key */
CHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME]; /* OEM VxD in use */
} JOYCAPS16, *LPJOYCAPS16;
typedef struct {
UINT16 wXpos; /* x position */
UINT16 wYpos; /* y position */
UINT16 wZpos; /* z position */
UINT16 wButtons; /* button states */
} JOYINFO16, *LPJOYINFO16;
typedef struct {
WORD wMid; /* manufacturer id */
WORD wPid; /* product id */
MMVERSION16 vDriverVersion; /* version of the driver */
CHAR szPname[MAXPNAMELEN]; /* product name */
DWORD fdwSupport; /* misc. support bits */
DWORD cDestinations; /* count of destinations */
} MIXERCAPS16,*LPMIXERCAPS16;
typedef struct tMIXEROPENDESC16
{
HMIXEROBJ16 hmx;
LPVOID pReserved0;
DWORD dwCallback;
DWORD dwInstance;
} MIXEROPENDESC16, *LPMIXEROPENDESC16;
typedef struct {
DWORD cbStruct; /* size of MIXERLINE structure */
DWORD dwDestination; /* zero based destination index */
DWORD dwSource; /* zero based source index (if source) */
DWORD dwLineID; /* unique line id for mixer device */
DWORD fdwLine; /* state/information about line */
DWORD dwUser; /* driver specific information */
DWORD dwComponentType; /* component type line connects to */
DWORD cChannels; /* number of channels line supports */
DWORD cConnections; /* number of connections [possible] */
DWORD cControls; /* number of controls at this line */
CHAR szShortName[MIXER_SHORT_NAME_CHARS];
CHAR szName[MIXER_LONG_NAME_CHARS];
struct {
DWORD dwType; /* MIXERLINE_TARGETTYPE_xxxx */
DWORD dwDeviceID; /* target device ID of device type */
WORD wMid; /* of target device */
WORD wPid; /* " */
MMVERSION16 vDriverVersion; /* " */
CHAR szPname[MAXPNAMELEN]; /* " */
} Target;
} MIXERLINE16, *LPMIXERLINE16;
typedef struct {
DWORD cbStruct; /* size in bytes of MIXERCONTROL */
DWORD dwControlID; /* unique control id for mixer device */
DWORD dwControlType; /* MIXERCONTROL_CONTROLTYPE_xxx */
DWORD fdwControl; /* MIXERCONTROL_CONTROLF_xxx */
DWORD cMultipleItems; /* if MIXERCONTROL_CONTROLF_MULTIPLE set */
CHAR szShortName[MIXER_SHORT_NAME_CHARS];
CHAR szName[MIXER_LONG_NAME_CHARS];
union {
struct {
LONG lMinimum; /* signed minimum for this control */
LONG lMaximum; /* signed maximum for this control */
} s;
struct {
DWORD dwMinimum; /* unsigned minimum for this control */
DWORD dwMaximum; /* unsigned maximum for this control */
} s1;
DWORD dwReserved[6];
} Bounds;
union {
DWORD cSteps; /* # of steps between min & max */
DWORD cbCustomData; /* size in bytes of custom data */
DWORD dwReserved[6]; /* !!! needed? we have cbStruct.... */
} Metrics;
} MIXERCONTROL16, *LPMIXERCONTROL16;
typedef struct {
DWORD cbStruct; /* size in bytes of MIXERLINECONTROLS */
DWORD dwLineID; /* line id (from MIXERLINE.dwLineID) */
union {
DWORD dwControlID; /* MIXER_GETLINECONTROLSF_ONEBYID */
DWORD dwControlType; /* MIXER_GETLINECONTROLSF_ONEBYTYPE */
} u;
DWORD cControls; /* count of controls pmxctrl points to */
DWORD cbmxctrl; /* size in bytes of _one_ MIXERCONTROL */
SEGPTR pamxctrl; /* pointer to first MIXERCONTROL array */
} MIXERLINECONTROLS16, *LPMIXERLINECONTROLS16;
typedef struct {
DWORD cbStruct; /* size in bytes of MIXERCONTROLDETAILS */
DWORD dwControlID; /* control id to get/set details on */
DWORD cChannels; /* number of channels in paDetails array */
union {
HWND16 hwndOwner; /* for MIXER_SETCONTROLDETAILSF_CUSTOM */
DWORD cMultipleItems; /* if _MULTIPLE, the number of items per channel */
} u;
DWORD cbDetails; /* size of _one_ details_XX struct */
LPVOID paDetails; /* pointer to array of details_XX structs */
} MIXERCONTROLDETAILS16,*LPMIXERCONTROLDETAILS16;
typedef struct {
DWORD dwParam1;
DWORD dwParam2;
CHAR szName[MIXER_LONG_NAME_CHARS];
} MIXERCONTROLDETAILS_LISTTEXT16,*LPMIXERCONTROLDETAILS_LISTTEXT16;
typedef LRESULT (CALLBACK *LPMMIOPROC16)(LPSTR lpmmioinfo,UINT16 uMessage,
LPARAM lParam1,LPARAM lParam2);
typedef struct {
DWORD dwFlags; /* general status flags */
FOURCC fccIOProc; /* pointer to I/O procedure */
LPMMIOPROC16 pIOProc; /* pointer to I/O procedure */
UINT16 wErrorRet; /* place for error to be returned */
HTASK16 hTask; /* alternate local task */
/* fields maintained by MMIO functions during buffered I/O */
LONG cchBuffer; /* size of I/O buffer (or 0L) */
HPSTR pchBuffer; /* start of I/O buffer (or NULL) */
HPSTR pchNext; /* pointer to next byte to read/write */
HPSTR pchEndRead; /* pointer to last valid byte to read */
HPSTR pchEndWrite; /* pointer to last byte to write */
LONG lBufOffset; /* disk offset of start of buffer */
/* fields maintained by I/O procedure */
LONG lDiskOffset; /* disk offset of next read or write */
DWORD adwInfo[3]; /* data specific to type of MMIOPROC */
/* other fields maintained by MMIO */
DWORD dwReserved1; /* reserved for MMIO use */
DWORD dwReserved2; /* reserved for MMIO use */
HMMIO16 hmmio; /* handle to open file */
} MMIOINFO16, *LPMMIOINFO16;
typedef UINT16 (CALLBACK *YIELDPROC16)(UINT16,DWORD);
UINT16 WINAPI auxGetNumDevs16(void);
UINT16 WINAPI auxGetDevCaps16 (UINT16,LPAUXCAPS16,UINT16);
UINT16 WINAPI auxSetVolume16(UINT16,DWORD);
UINT16 WINAPI auxGetVolume16(UINT16,LPDWORD);
DWORD WINAPI auxOutMessage16(UINT16,UINT16,DWORD,DWORD);
MMRESULT16 WINAPI timeGetSystemTime16(LPMMTIME16,UINT16);
MMRESULT16 WINAPI timeSetEvent16(UINT16,UINT16,LPTIMECALLBACK16,DWORD,UINT16);
MMRESULT16 WINAPI timeKillEvent16(UINT16);
MMRESULT16 WINAPI timeGetDevCaps16(LPTIMECAPS16,UINT16);
MMRESULT16 WINAPI timeBeginPeriod16(UINT16);
MMRESULT16 WINAPI timeEndPeriod16(UINT16);
MMRESULT16 WINAPI joyGetDevCaps16 (UINT16,LPJOYCAPS16,UINT16);
UINT16 WINAPI joyGetNumDevs16(void);
MMRESULT16 WINAPI joyGetPos16(UINT16,LPJOYINFO16);
MMRESULT16 WINAPI joyGetPosEx16(UINT16,LPJOYINFOEX);
MMRESULT16 WINAPI joyGetThreshold16(UINT16,UINT16*);
MMRESULT16 WINAPI joyReleaseCapture16(UINT16);
MMRESULT16 WINAPI joySetCapture16(HWND16,UINT16,UINT16,BOOL16);
MMRESULT16 WINAPI joySetThreshold16(UINT16,UINT16);
UINT16 WINAPI mixerGetNumDevs16(void);
UINT16 WINAPI mixerOpen16(LPHMIXER16,UINT16,DWORD,DWORD,DWORD);
UINT16 WINAPI mixerClose16(HMIXER16);
DWORD WINAPI mixerMessage16(HMIXER16,UINT16,DWORD,DWORD);
UINT16 WINAPI mixerGetDevCaps16(UINT16,LPMIXERCAPS16,UINT16);
UINT16 WINAPI mixerGetLineInfo16(HMIXEROBJ16,LPMIXERLINE16,DWORD);
UINT16 WINAPI mixerGetID16(HMIXEROBJ16,LPUINT16,DWORD);
UINT16 WINAPI mixerGetLineControls16(HMIXEROBJ16,LPMIXERLINECONTROLS16,DWORD);
UINT16 WINAPI mixerGetControlDetails16(HMIXEROBJ16,LPMIXERCONTROLDETAILS16,DWORD);
UINT16 WINAPI mixerSetControlDetails16(HMIXEROBJ16,LPMIXERCONTROLDETAILS16,DWORD);
LPMMIOPROC16 WINAPI mmioInstallIOProc16(FOURCC,LPMMIOPROC16,DWORD);
FOURCC WINAPI mmioStringToFOURCC16(LPCSTR,UINT16);
HMMIO16 WINAPI mmioOpen16(LPSTR,MMIOINFO16*,DWORD);
UINT16 WINAPI mmioRename16(LPCSTR,LPCSTR,MMIOINFO16*,DWORD);
MMRESULT16 WINAPI mmioClose16(HMMIO16,UINT16);
LONG WINAPI mmioRead16(HMMIO16,HPSTR,LONG);
LONG WINAPI mmioWrite16(HMMIO16,HPCSTR,LONG);
LONG WINAPI mmioSeek16(HMMIO16,LONG,INT16);
MMRESULT16 WINAPI mmioGetInfo16(HMMIO16,MMIOINFO16*,UINT16);
MMRESULT16 WINAPI mmioSetInfo16(HMMIO16,const MMIOINFO16*,UINT16);
UINT16 WINAPI mmioSetBuffer16(HMMIO16,SEGPTR,LONG,UINT16);
UINT16 WINAPI mmioFlush16(HMMIO16,UINT16);
UINT16 WINAPI mmioAdvance16(HMMIO16,MMIOINFO16*,UINT16);
LRESULT WINAPI mmioSendMessage16(HMMIO16,UINT16,LPARAM,LPARAM);
UINT16 WINAPI mmioDescend16(HMMIO16,MMCKINFO*,const MMCKINFO*,UINT16);
UINT16 WINAPI mmioAscend16(HMMIO16,MMCKINFO*,UINT16);
UINT16 WINAPI mmioCreateChunk16(HMMIO16,MMCKINFO*,UINT16);
DWORD WINAPI mciSendCommand16(UINT16,UINT16,DWORD,DWORD);
DWORD WINAPI mciSendString16(LPCSTR,LPSTR,UINT16,HWND16);
UINT16 WINAPI mciGetDeviceID16(LPCSTR);
UINT16 WINAPI mciGetDeviceIDFromElementID16(DWORD,LPCSTR);
BOOL16 WINAPI mciGetErrorString16 (DWORD,LPSTR,UINT16);
BOOL16 WINAPI mciSetYieldProc16(UINT16,YIELDPROC16,DWORD);
HTASK16 WINAPI mciGetCreatorTask16(UINT16);
YIELDPROC16 WINAPI mciGetYieldProc16(UINT16,DWORD*);
DWORD WINAPI mciGetDriverData16(UINT16 uDeviceID);
BOOL16 WINAPI mciSetDriverData16(UINT16 uDeviceID, DWORD dwData);
UINT16 WINAPI mciDriverYield16(UINT16 uDeviceID);
BOOL16 WINAPI mciDriverNotify16(HWND16 hwndCallback, UINT16 uDeviceID,
UINT16 uStatus);
UINT16 WINAPI mciLoadCommandResource16(HINSTANCE16 hInstance,
LPCSTR lpResName, UINT16 uType);
BOOL16 WINAPI mciFreeCommandResource16(UINT16 uTable);
HINSTANCE16 WINAPI mmTaskCreate16(SEGPTR spProc, HINSTANCE16 *lphMmTask, DWORD dwPmt);
void WINAPI mmTaskBlock16(HINSTANCE16 hInst);
LRESULT WINAPI mmTaskSignal16(HTASK16 ht);
void WINAPI mmTaskYield16(void);
LRESULT WINAPI mmThreadCreate16(FARPROC16 fpThreadAddr, LPHANDLE16 lpHndl,
DWORD dwPmt, DWORD dwFlags);
void WINAPI mmThreadSignal16(HANDLE16 hndl);
void WINAPI mmThreadBlock16(HANDLE16 hndl);
HANDLE16 WINAPI mmThreadGetTask16(HANDLE16 hndl);
BOOL16 WINAPI mmThreadIsValid16(HANDLE16 hndl);
BOOL16 WINAPI mmThreadIsCurrent16(HANDLE16 hndl);
BOOL16 WINAPI DriverCallback16(DWORD dwCallBack, UINT16 uFlags, HANDLE16 hDev,
WORD wMsg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2);
typedef struct {
DWORD dwCallback;
WORD wDeviceID;
WORD wReserved0;
SEGPTR lpstrDeviceType;
SEGPTR lpstrElementName;
SEGPTR lpstrAlias;
} MCI_OPEN_PARMS16, *LPMCI_OPEN_PARMS16;
typedef struct {
DWORD dwCallback;
SEGPTR lpstrReturn;
DWORD dwRetSize;
} MCI_INFO_PARMS16, *LPMCI_INFO_PARMS16;
typedef struct {
DWORD dwCallback;
SEGPTR lpstrReturn;
DWORD dwRetSize;
DWORD dwNumber;
WORD wDeviceType;
WORD wReserved0;
} MCI_SYSINFO_PARMS16, *LPMCI_SYSINFO_PARMS16;
typedef struct {
DWORD dwCallback;
UINT16 nVirtKey;
WORD wReserved0;
HWND16 hwndBreak;
WORD wReserved1;
} MCI_BREAK_PARMS16, *LPMCI_BREAK_PARMS16;
typedef struct {
DWORD dwCallback;
SEGPTR lpfilename;
} MCI_LOAD_PARMS16, *LPMCI_LOAD_PARMS16;
typedef struct {
DWORD dwCallback;
SEGPTR lpstrSoundName;
} MCI_SOUND_PARMS16, *LPMCI_SOUND_PARMS16;
typedef struct {
DWORD dwCallback;
SEGPTR lpstrCommand;
} MCI_VD_ESCAPE_PARMS16, *LPMCI_VD_ESCAPE_PARMS16;
typedef struct {
UINT16 wDeviceID; /* device ID */
SEGPTR lpstrParams; /* parameter string for entry in SYSTEM.INI */
UINT16 wCustomCommandTable; /* custom command table (0xFFFF if none)
* filled in by the driver */
UINT16 wType; /* driver type (filled in by the driver) */
} MCI_OPEN_DRIVER_PARMS16, *LPMCI_OPEN_DRIVER_PARMS16;
typedef struct {
DWORD dwCallback;
MCIDEVICEID16 wDeviceID;
WORD wReserved0;
SEGPTR lpstrDeviceType;
SEGPTR lpstrElementName;
SEGPTR lpstrAlias;
DWORD dwBufferSeconds;
} MCI_WAVE_OPEN_PARMS16, *LPMCI_WAVE_OPEN_PARMS16;
typedef struct {
DWORD dwCallback;
DWORD dwTimeFormat;
DWORD dwAudio;
UINT16 wInput;
UINT16 wReserved0;
UINT16 wOutput;
UINT16 wReserved1;
UINT16 wFormatTag;
UINT16 wReserved2;
UINT16 nChannels;
UINT16 wReserved3;
DWORD nSamplesPerSec;
DWORD nAvgBytesPerSec;
UINT16 nBlockAlign;
UINT16 wReserved4;
UINT16 wBitsPerSample;
UINT16 wReserved5;
} MCI_WAVE_SET_PARMS16, * LPMCI_WAVE_SET_PARMS16;
typedef struct {
DWORD dwCallback;
UINT16 wDeviceID;
UINT16 wReserved0;
SEGPTR lpstrDeviceType;
SEGPTR lpstrElementName;
SEGPTR lpstrAlias;
DWORD dwStyle;
HWND16 hWndParent;
UINT16 wReserved1;
} MCI_ANIM_OPEN_PARMS16, *LPMCI_ANIM_OPEN_PARMS16;
typedef struct {
DWORD dwCallback;
HWND16 hWnd;
WORD wReserved1;
WORD nCmdShow;
WORD wReserved2;
SEGPTR lpstrText;
} MCI_ANIM_WINDOW_PARMS16, *LPMCI_ANIM_WINDOW_PARMS16;
typedef struct {
DWORD dwCallback;
#ifdef MCI_USE_OFFEXT
POINT16 ptOffset;
POINT16 ptExtent;
#else /* ifdef MCI_USE_OFFEXT */
RECT16 rc;
#endif /* ifdef MCI_USE_OFFEXT */
} MCI_ANIM_RECT_PARMS16, *LPMCI_ANIM_RECT_PARMS16;
typedef struct {
DWORD dwCallback;
RECT16 rc;
HDC16 hDC;
} MCI_ANIM_UPDATE_PARMS16, *LPMCI_ANIM_UPDATE_PARMS16;
typedef struct {
DWORD dwCallback;
MCIDEVICEID16 wDeviceID;
WORD wReserved0;
SEGPTR lpstrDeviceType;
SEGPTR lpstrElementName;
SEGPTR lpstrAlias;
DWORD dwStyle;
HWND16 hWndParent;
WORD wReserved1;
} MCI_OVLY_OPEN_PARMS16, *LPMCI_OVLY_OPEN_PARMS16;
typedef struct {
DWORD dwCallback;
HWND16 hWnd;
WORD wReserved1;
UINT16 nCmdShow;
WORD wReserved2;
SEGPTR lpstrText;
} MCI_OVLY_WINDOW_PARMS16, *LPMCI_OVLY_WINDOW_PARMS16;
typedef struct {
DWORD dwCallback;
#ifdef MCI_USE_OFFEXT
POINT16 ptOffset;
POINT16 ptExtent;
#else /* ifdef MCI_USE_OFFEXT */
RECT16 rc;
#endif /* ifdef MCI_USE_OFFEXT */
} MCI_OVLY_RECT_PARMS16, *LPMCI_OVLY_RECT_PARMS16;
typedef struct {
DWORD dwCallback;
SEGPTR lpfilename;
RECT16 rc;
} MCI_OVLY_SAVE_PARMS16, *LPMCI_OVLY_SAVE_PARMS16;
typedef struct {
DWORD dwCallback;
SEGPTR lpfilename;
RECT16 rc;
} MCI_OVLY_LOAD_PARMS16, *LPMCI_OVLY_LOAD_PARMS16;
/* from digitalv / 16 bit */
typedef struct {
DWORD dwCallback;
RECT16 rc;
} MCI_DGV_RECT_PARMS16, *LPMCI_DGV_RECT_PARMS16;
typedef struct {
DWORD dwCallback;
SEGPTR lpstrFileName;
RECT16 rc;
} MCI_DGV_CAPTURE_PARMS16, *LPMCI_DGV_CAPTURE_PARMS16;
typedef struct {
DWORD dwCallback;
DWORD dwFrom;
DWORD dwTo;
RECT16 rc;
DWORD dwAudioStream;
DWORD dwVideoStream;
} MCI_DGV_COPY_PARMS16, *LPMCI_DGV_COPY_PARMS16;
typedef struct {
DWORD dwCallback;
DWORD dwFrom;
DWORD dwTo;
RECT16 rc;
DWORD dwAudioStream;
DWORD dwVideoStream;
} MCI_DGV_CUT_PARMS16, * LPMCI_DGV_CUT_PARMS16;
typedef struct {
DWORD dwCallback;
DWORD dwFrom;
DWORD dwTo;
RECT16 rc;
DWORD dwAudioStream;
DWORD dwVideoStream;
} MCI_DGV_DELETE_PARMS16, * LPMCI_DGV_DELETE_PARMS16;
typedef MCI_DGV_RECT_PARMS16 MCI_DGV_FREEZE_PARMS16, * LPMCI_DGV_FREEZE_PARMS16;
typedef struct {
DWORD dwCallback;
SEGPTR lpstrReturn;
DWORD dwRetSize;
DWORD dwItem;
} MCI_DGV_INFO_PARMS16, * LPMCI_DGV_INFO_PARMS16;
typedef struct {
DWORD dwCallback;
SEGPTR lpstrReturn;
DWORD dwLength;
DWORD dwNumber;
DWORD dwItem;
SEGPTR lpstrAlgorithm;
} MCI_DGV_LIST_PARMS16, *LPMCI_DGV_LIST_PARMS16;
typedef MCI_LOAD_PARMS16 MCI_DGV_LOAD_PARMS16 , * LPMCI_DGV_LOAD_PARMS16;
typedef struct {
DWORD dwCallback;
UINT16 wDeviceID;
UINT16 wReserved0;
SEGPTR lpstrDeviceType;
SEGPTR lpstrElementName;
SEGPTR lpstrAlias;
DWORD dwStyle;
HWND16 hWndParent;
UINT16 wReserved1;
} MCI_DGV_OPEN_PARMS16, *LPMCI_DGV_OPEN_PARMS16;
typedef struct {
DWORD dwCallback;
DWORD dwTo;
RECT16 rc;
DWORD dwAudioStream;
DWORD dwVideoStream;
} MCI_DGV_PASTE_PARMS16, * LPMCI_DGV_PASTE_PARMS16;
typedef MCI_DGV_RECT_PARMS16 MCI_DGV_PUT_PARMS16, * LPMCI_DGV_PUT_PARMS16;
typedef struct {
DWORD dwCallback;
DWORD dwItem;
SEGPTR lpstrName;
SEGPTR lpstrAlgorithm;
DWORD dwHandle;
} MCI_DGV_QUALITY_PARMS16, *LPMCI_DGV_QUALITY_PARMS16;
typedef struct {
DWORD dwCallback;
DWORD dwFrom;
DWORD dwTo;
RECT16 rc;
DWORD dwAudioStream;
DWORD dwVideoStream;
} MCI_DGV_RECORD_PARMS16, * LPMCI_DGV_RECORD_PARMS16;
typedef struct {
DWORD dwCallback;
SEGPTR lpstrPath;
DWORD dwSize;
} MCI_DGV_RESERVE_PARMS16, *LPMCI_DGV_RESERVE_PARMS16A;
typedef struct {
DWORD dwCallback;
SEGPTR lpstrFileName;
RECT16 rc;
} MCI_DGV_RESTORE_PARMS16, *LPMCI_DGV_RESTORE_PARMS16;
typedef struct {
DWORD dwCallback;
SEGPTR lpstrFileName;
RECT16 rc;
} MCI_DGV_SAVE_PARMS16, *LPMCI_DGV_SAVE_PARMS16;
typedef struct {
DWORD dwCallback;
DWORD dwItem;
DWORD dwValue;
DWORD dwOver;
SEGPTR lpstrAlgorithm;
SEGPTR lpstrQuality;
} MCI_DGV_SETAUDIO_PARMS16, *LPMCI_DGV_SETAUDIO_PARMS16;
typedef struct {
DWORD dwCallback;
DWORD dwItem;
DWORD dwValue;
DWORD dwOver;
SEGPTR lpstrAlgorithm;
SEGPTR lpstrQuality;
DWORD dwSourceNumber;
} MCI_DGV_SETVIDEO_PARMS16, *LPMCI_DGV_SETVIDEO_PARMS16;
typedef struct {
DWORD dwCallback;
DWORD dwReturn;
DWORD dwItem;
DWORD dwTrack;
SEGPTR lpstrDrive;
DWORD dwReference;
} MCI_DGV_STATUS_PARMS16, *LPMCI_DGV_STATUS_PARMS16;
typedef struct {
DWORD dwCallback;
RECT16 rc;
HDC16 hDC;
UINT16 wReserved0;
} MCI_DGV_UPDATE_PARMS16, * LPMCI_DGV_UPDATE_PARMS16;
typedef MCI_DGV_RECT_PARMS16 MCI_DGV_UNFREEZE_PARMS16, * LPMCI_DGV_UNFREEZE_PARMS16;
typedef MCI_DGV_RECT_PARMS16 MCI_DGV_WHERE_PARMS16, * LPMCI_DGV_WHERE_PARMS16;
typedef struct {
DWORD dwCallback;
HWND16 hWnd;
UINT16 wReserved1;
UINT16 nCmdShow;
UINT16 wReserved2;
SEGPTR lpstrText;
} MCI_DGV_WINDOW_PARMS16, *LPMCI_DGV_WINDOW_PARMS16;
#include <poppack.h>
#endif /* __WINE_WINE_MMSYSTEM16_H */
|