This commit was manufactured by cvs2svn to create branch 'captive'.
[reactos.git] / lib / winmm / mmsystem16.h
diff --git a/lib/winmm/mmsystem16.h b/lib/winmm/mmsystem16.h
new file mode 100644 (file)
index 0000000..0a79ea9
--- /dev/null
@@ -0,0 +1,808 @@
+/*
+ * 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#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 LPWAVEFORMATEX,DWORD,DWORD,DWORD);
+UINT16    WINAPI waveOutClose16(HWAVEOUT16);
+UINT16    WINAPI waveOutPrepareHeader16(HWAVEOUT16,SEGPTR,UINT16);
+UINT16    WINAPI waveOutUnprepareHeader16(HWAVEOUT16,SEGPTR,UINT16);
+UINT16    WINAPI waveOutWrite16(HWAVEOUT16,WAVEHDR*,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 LPWAVEFORMATEX,DWORD,DWORD,DWORD);
+UINT16    WINAPI waveInClose16(HWAVEIN16);
+UINT16    WINAPI waveInPrepareHeader16(HWAVEIN16,SEGPTR,UINT16);
+UINT16    WINAPI waveInUnprepareHeader16(HWAVEIN16,SEGPTR,UINT16);
+UINT16    WINAPI waveInAddBuffer16(HWAVEIN16,WAVEHDR*,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,MIDIHDR16*,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,MIDIHDR16*,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 capabilites */
+    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 */
+       } DUMMYSTRUCTNAME;
+       struct {
+           DWORD       dwMinimum;      /* unsigned minimum for this control */
+           DWORD       dwMaximum;      /* unsigned maximum for this control */
+       } DUMMYSTRUCTNAME1;
+       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 */
+    } DUMMYUNIONNAME;
+    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 */
+    } DUMMYUNIONNAME;
+    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,LPSTR,LONG,UINT16);
+UINT16                 WINAPI mmioFlush16(HMMIO16,UINT16);
+UINT16                 WINAPI mmioAdvance16(HMMIO16,MMIOINFO16*,UINT16);
+LONG           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;
+    LPCSTR     lpfilename;
+} MCI_LOAD_PARMS16, *LPMCI_LOAD_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;
+    LPCSTR     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;
+    LPCSTR             lpstrDeviceType;
+    LPCSTR             lpstrElementName;
+    LPCSTR             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;
+    LPCSTR     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;
+    LPCSTR  lpfilename;
+    RECT16  rc;
+} MCI_OVLY_SAVE_PARMS16, *LPMCI_OVLY_SAVE_PARMS16;
+
+typedef struct {
+    DWORD      dwCallback;
+    LPCSTR     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;
+    LPSTR   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;
+    LPSTR   lpstrReturn;
+    DWORD   dwRetSize;
+    DWORD   dwItem;
+} MCI_DGV_INFO_PARMS16, * LPMCI_DGV_INFO_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    LPSTR   lpstrReturn;
+    DWORD   dwLength;
+    DWORD   dwNumber;
+    DWORD   dwItem;
+    LPSTR   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;
+    LPSTR   lpstrDeviceType;
+    LPSTR   lpstrElementName;
+    LPSTR   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;
+    LPSTR       lpstrName;
+    DWORD       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;
+    LPSTR   lpstrPath;
+    DWORD   dwSize;
+} MCI_DGV_RESERVE_PARMS16, *LPMCI_DGV_RESERVE_PARMS16A;
+
+typedef struct {
+    DWORD   dwCallback;
+    LPSTR   lpstrFileName;
+    RECT16  rc;
+} MCI_DGV_RESTORE_PARMS16, *LPMCI_DGV_RESTORE_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    LPSTR   lpstrFileName;
+    RECT16  rc;
+} MCI_DGV_SAVE_PARMS16, *LPMCI_DGV_SAVE_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    DWORD   dwItem;
+    DWORD   dwValue;
+    DWORD   dwOver;
+    LPSTR   lpstrAlgorithm;
+    LPSTR   lpstrQuality;
+} MCI_DGV_SETAUDIO_PARMS16, *LPMCI_DGV_SETAUDIO_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    DWORD   dwItem;
+    DWORD   dwValue;
+    DWORD   dwOver;
+    LPSTR   lpstrAlgorithm;
+    LPSTR   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;
+    LPSTR   lpstrText;
+} MCI_DGV_WINDOW_PARMS16, *LPMCI_DGV_WINDOW_PARMS16;
+
+#include "poppack.h"
+
+#endif  /* __WINE_WINE_MMSYSTEM16_H */