master
  1/**
  2 * This file has no copyright assigned and is placed in the Public Domain.
  3 * This file is part of the mingw-w64 runtime package.
  4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
  5 */
  6
  7#ifndef _MMISCAPI_H_
  8#define _MMISCAPI_H_
  9
 10#include <apiset.h>
 11#include <apisetcconv.h>
 12
 13#include <mmsyscom.h>
 14
 15#ifdef __cplusplus
 16extern "C" {
 17#endif
 18
 19#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
 20
 21#ifndef MMNODRV
 22
 23typedef struct DRVCONFIGINFOEX {
 24  DWORD dwDCISize;
 25  LPCWSTR lpszDCISectionName;
 26  LPCWSTR lpszDCIAliasName;
 27  DWORD dnDevNode;
 28} DRVCONFIGINFOEX, *PDRVCONFIGINFOEX, *NPDRVCONFIGINFOEX, *LPDRVCONFIGINFOEX;
 29
 30#ifndef DRV_LOAD
 31
 32#define DRV_LOAD 0x0001
 33#define DRV_ENABLE 0x0002
 34#define DRV_OPEN 0x0003
 35#define DRV_CLOSE 0x0004
 36#define DRV_DISABLE 0x0005
 37#define DRV_FREE 0x0006
 38#define DRV_CONFIGURE 0x0007
 39#define DRV_QUERYCONFIGURE 0x0008
 40#define DRV_INSTALL 0x0009
 41#define DRV_REMOVE 0x000A
 42#define DRV_EXITSESSION 0x000B
 43#define DRV_POWER 0x000F
 44#define DRV_RESERVED 0x0800
 45#define DRV_USER 0x4000
 46
 47typedef struct tagDRVCONFIGINFO {
 48  DWORD dwDCISize;
 49  LPCWSTR lpszDCISectionName;
 50  LPCWSTR lpszDCIAliasName;
 51} DRVCONFIGINFO, *PDRVCONFIGINFO, *NPDRVCONFIGINFO, *LPDRVCONFIGINFO;
 52
 53#define DRVCNF_CANCEL 0x0000
 54#define DRVCNF_OK 0x0001
 55#define DRVCNF_RESTART 0x0002
 56
 57typedef LRESULT (CALLBACK* DRIVERPROC)(DWORD_PTR, HDRVR, UINT, LPARAM, LPARAM);
 58
 59WINMMAPI LRESULT WINAPI CloseDriver(HDRVR hDriver, LPARAM lParam1, LPARAM lParam2);
 60WINMMAPI HDRVR WINAPI OpenDriver(LPCWSTR szDriverName, LPCWSTR szSectionName, LPARAM lParam2);
 61WINMMAPI LRESULT WINAPI SendDriverMessage(HDRVR hDriver, UINT message, LPARAM lParam1, LPARAM lParam2);
 62WINMMAPI HMODULE WINAPI DrvGetModuleHandle(HDRVR hDriver);
 63WINMMAPI HMODULE WINAPI GetDriverModuleHandle(HDRVR hDriver);
 64WINMMAPI LRESULT WINAPI DefDriverProc(DWORD_PTR dwDriverIdentifier, HDRVR hdrvr, UINT uMsg, LPARAM lParam1, LPARAM lParam2);
 65#endif
 66
 67#define DRV_CANCEL DRVCNF_CANCEL
 68#define DRV_OK DRVCNF_OK
 69#define DRV_RESTART DRVCNF_RESTART
 70
 71#define DRV_MCI_FIRST DRV_RESERVED
 72#define DRV_MCI_LAST (DRV_RESERVED + 0xFFF)
 73
 74WINBOOL APIENTRY DriverCallback(DWORD_PTR dwCallback, DWORD dwFlags, HDRVR hDevice, DWORD dwMsg, DWORD_PTR dwUser, DWORD_PTR dwParam1, DWORD_PTR dwParam2);
 75LONG WINAPI sndOpenSound(LPCWSTR EventName, LPCWSTR AppName, INT32 Flags, PHANDLE FileHandle);
 76
 77typedef DWORD (APIENTRY *DRIVERMSGPROC)(DWORD, DWORD, DWORD_PTR, DWORD_PTR, DWORD_PTR);
 78
 79UINT APIENTRY mmDrvInstall(HDRVR hDriver, LPCWSTR wszDrvEntry, DRIVERMSGPROC drvMessage, UINT wFlags);
 80
 81#endif
 82
 83#ifndef MMNOMMIO
 84
 85#define MMIOERR_BASE 256
 86#define MMIOERR_FILENOTFOUND (MMIOERR_BASE + 1)
 87#define MMIOERR_OUTOFMEMORY (MMIOERR_BASE + 2)
 88#define MMIOERR_CANNOTOPEN (MMIOERR_BASE + 3)
 89#define MMIOERR_CANNOTCLOSE (MMIOERR_BASE + 4)
 90#define MMIOERR_CANNOTREAD (MMIOERR_BASE + 5)
 91#define MMIOERR_CANNOTWRITE (MMIOERR_BASE + 6)
 92#define MMIOERR_CANNOTSEEK (MMIOERR_BASE + 7)
 93#define MMIOERR_CANNOTEXPAND (MMIOERR_BASE + 8)
 94#define MMIOERR_CHUNKNOTFOUND (MMIOERR_BASE + 9)
 95#define MMIOERR_UNBUFFERED (MMIOERR_BASE + 10)
 96#define MMIOERR_PATHNOTFOUND (MMIOERR_BASE + 11)
 97#define MMIOERR_ACCESSDENIED (MMIOERR_BASE + 12)
 98#define MMIOERR_SHARINGVIOLATION (MMIOERR_BASE + 13)
 99#define MMIOERR_NETWORKERROR (MMIOERR_BASE + 14)
100#define MMIOERR_TOOMANYOPENFILES (MMIOERR_BASE + 15)
101#define MMIOERR_INVALIDFILE (MMIOERR_BASE + 16)
102
103#define CFSEPCHAR '+'
104
105typedef DWORD FOURCC;
106typedef char _huge *HPSTR;
107DECLARE_HANDLE(HMMIO);
108typedef LRESULT (CALLBACK MMIOPROC)(LPSTR lpmmioinfo, UINT uMsg, LPARAM lParam1, LPARAM lParam2);
109typedef MMIOPROC *LPMMIOPROC;
110
111typedef struct _MMIOINFO {
112  DWORD dwFlags;
113  FOURCC fccIOProc;
114  LPMMIOPROC pIOProc;
115  UINT wErrorRet;
116  HTASK htask;
117  LONG cchBuffer;
118  HPSTR pchBuffer;
119  HPSTR pchNext;
120  HPSTR pchEndRead;
121  HPSTR pchEndWrite;
122  LONG lBufOffset;
123  LONG lDiskOffset;
124  DWORD adwInfo[3];
125  DWORD dwReserved1;
126  DWORD dwReserved2;
127  HMMIO hmmio;
128} MMIOINFO, *PMMIOINFO, *NPMMIOINFO, *LPMMIOINFO;
129typedef const MMIOINFO *LPCMMIOINFO;
130
131typedef struct _MMCKINFO {
132  FOURCC ckid;
133  DWORD cksize;
134  FOURCC fccType;
135  DWORD dwDataOffset;
136  DWORD dwFlags;
137} MMCKINFO, *PMMCKINFO, *NPMMCKINFO, *LPMMCKINFO;
138typedef const MMCKINFO *LPCMMCKINFO;
139
140#define MMIO_RWMODE 0x00000003
141#define MMIO_SHAREMODE 0x00000070
142
143#define MMIO_CREATE 0x00001000
144#define MMIO_PARSE 0x00000100
145#define MMIO_DELETE 0x00000200
146#define MMIO_EXIST 0x00004000
147#define MMIO_ALLOCBUF 0x00010000
148#define MMIO_GETTEMP 0x00020000
149
150#define MMIO_DIRTY 0x10000000
151
152#define MMIO_READ 0x00000000
153#define MMIO_WRITE 0x00000001
154#define MMIO_READWRITE 0x00000002
155
156#define MMIO_COMPAT 0x00000000
157#define MMIO_EXCLUSIVE 0x00000010
158#define MMIO_DENYWRITE 0x00000020
159#define MMIO_DENYREAD 0x00000030
160#define MMIO_DENYNONE 0x00000040
161
162#define MMIO_FHOPEN 0x0010
163#define MMIO_EMPTYBUF 0x0010
164#define MMIO_TOUPPER 0x0010
165#define MMIO_INSTALLPROC 0x00010000
166#define MMIO_GLOBALPROC 0x10000000
167#define MMIO_REMOVEPROC 0x00020000
168#define MMIO_UNICODEPROC 0x01000000
169#define MMIO_FINDPROC 0x00040000
170#define MMIO_FINDCHUNK 0x0010
171#define MMIO_FINDRIFF 0x0020
172#define MMIO_FINDLIST 0x0040
173#define MMIO_CREATERIFF 0x0020
174#define MMIO_CREATELIST 0x0040
175
176#define MMIOM_READ MMIO_READ
177#define MMIOM_WRITE MMIO_WRITE
178#define MMIOM_SEEK 2
179#define MMIOM_OPEN 3
180#define MMIOM_CLOSE 4
181#define MMIOM_WRITEFLUSH 5
182
183#define MMIOM_RENAME 6
184
185#define MMIOM_USER 0x8000
186
187#define FOURCC_RIFF mmioFOURCC('R', 'I', 'F', 'F')
188#define FOURCC_LIST mmioFOURCC('L', 'I', 'S', 'T')
189
190#define FOURCC_DOS mmioFOURCC('D', 'O', 'S', ' ')
191#define FOURCC_MEM mmioFOURCC('M', 'E', 'M', ' ')
192
193#ifndef SEEK_SET
194#define SEEK_SET 0
195#define SEEK_CUR 1
196#define SEEK_END 2
197#endif
198
199#define MMIO_DEFAULTBUFFER 8192
200
201#define mmioFOURCC(ch0, ch1, ch2, ch3) MAKEFOURCC(ch0, ch1, ch2, ch3)
202
203WINMMAPI FOURCC WINAPI mmioStringToFOURCCA(LPCSTR sz, UINT uFlags);
204WINMMAPI FOURCC WINAPI mmioStringToFOURCCW(LPCWSTR sz, UINT uFlags);
205#define mmioStringToFOURCC __MINGW_NAME_AW(mmioStringToFOURCC)
206
207WINMMAPI LPMMIOPROC WINAPI mmioInstallIOProcA(FOURCC fccIOProc, LPMMIOPROC pIOProc, DWORD dwFlags);
208WINMMAPI LPMMIOPROC WINAPI mmioInstallIOProcW(FOURCC fccIOProc, LPMMIOPROC pIOProc, DWORD dwFlags);
209#define mmioInstallIOProc __MINGW_NAME_AW(mmioInstallIOProc)
210
211WINMMAPI HMMIO WINAPI mmioOpenA(LPSTR pszFileName, LPMMIOINFO pmmioinfo, DWORD fdwOpen);
212WINMMAPI HMMIO WINAPI mmioOpenW(LPWSTR pszFileName, LPMMIOINFO pmmioinfo, DWORD fdwOpen);
213#define mmioOpen __MINGW_NAME_AW(mmioOpen)
214
215WINMMAPI MMRESULT WINAPI mmioRenameA(LPCSTR pszFileName, LPCSTR pszNewFileName, LPCMMIOINFO pmmioinfo, DWORD fdwRename);
216WINMMAPI MMRESULT WINAPI mmioRenameW(LPCWSTR pszFileName, LPCWSTR pszNewFileName, LPCMMIOINFO pmmioinfo, DWORD fdwRename);
217#define mmioRename __MINGW_NAME_AW(mmioRename)
218
219WINMMAPI MMRESULT WINAPI mmioClose(HMMIO hmmio, UINT fuClose);
220WINMMAPI LONG WINAPI mmioRead(HMMIO hmmio, HPSTR pch, LONG cch);
221WINMMAPI LONG WINAPI mmioWrite(HMMIO hmmio, const char _huge * pch, LONG cch);
222WINMMAPI LONG WINAPI mmioSeek(HMMIO hmmio, LONG lOffset, int iOrigin);
223WINMMAPI MMRESULT WINAPI mmioGetInfo(HMMIO hmmio, LPMMIOINFO pmmioinfo, UINT fuInfo);
224WINMMAPI MMRESULT WINAPI mmioSetInfo(HMMIO hmmio, LPCMMIOINFO pmmioinfo, UINT fuInfo);
225WINMMAPI MMRESULT WINAPI mmioSetBuffer(HMMIO hmmio, LPSTR pchBuffer, LONG cchBuffer, UINT fuBuffer);
226WINMMAPI MMRESULT WINAPI mmioFlush(HMMIO hmmio, UINT fuFlush);
227WINMMAPI MMRESULT WINAPI mmioAdvance(HMMIO hmmio, LPMMIOINFO pmmioinfo, UINT fuAdvance);
228WINMMAPI LRESULT WINAPI mmioSendMessage(HMMIO hmmio, UINT uMsg, LPARAM lParam1, LPARAM lParam2);
229WINMMAPI MMRESULT WINAPI mmioDescend(HMMIO hmmio, LPMMCKINFO pmmcki, const MMCKINFO *pmmckiParent, UINT fuDescend);
230WINMMAPI MMRESULT WINAPI mmioAscend(HMMIO hmmio, LPMMCKINFO pmmcki, UINT fuAscend);
231WINMMAPI MMRESULT WINAPI mmioCreateChunk(HMMIO hmmio, LPMMCKINFO pmmcki, UINT fuCreate);
232
233#endif /* MMNOMMIO */
234
235#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
236
237#ifdef __cplusplus
238}
239#endif
240
241#endif /* _MMISCAPI_H_ */