home *** CD-ROM | disk | FTP | other *** search
/ Total Destruction / Total_Destruction.iso / addons / Lccwin32.exe / Lccwin32 / lccpub / include / mmsystem.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-09-15  |  73.8 KB  |  2,126 lines

  1. #ifndef _GNU_MMSYSTEM
  2. #define _GNU_MMSYSTEM
  3. #ifndef _GNU_H_WIN32Headers
  4. #include <windows.h>
  5. #endif
  6. // Watch for HTASK: this supposes that is defined in windows.h!
  7. // LPUINT is typedef here. It could clash if windows.h typedefs it too.
  8. typedef unsigned int MMRESULT;
  9. typedef void (CALLBACK DRVCALLBACK)(HANDLE,UINT,DWORD,DWORD,DWORD);
  10. typedef unsigned int MMVERSION;
  11. typedef HANDLE HWAVEOUT;
  12. typedef HWAVEOUT *LPHWAVEOUT;
  13. typedef HANDLE HWAVEIN;
  14. typedef HWAVEOUT *LPHWAVEIN;
  15. typedef HANDLE HWAVE;
  16. typedef HANDLE *LPHWAVE;
  17. typedef unsigned int *LPUINT;
  18. ////////////////////////////////////////////////////////////
  19. // Definitions
  20. ////////////////////////////////////////////////////////////
  21. #define    WINMMAPI
  22. #define MAXPNAMELEN 32
  23. #define MAXERRORLENGTH 256
  24. #define MAX_JOYSTICKOEMVXDNAME 260
  25. #ifndef MM_MIDI_MAPPER
  26. #define MM_MIDI_MAPPER 1
  27. #define MM_WAVE_MAPPER 2
  28. #define MM_SNDBLST_MIDIOUT 3
  29. #define MM_SNDBLST_MIDIIN 4
  30. #define MM_SNDBLST_SYNTH 5
  31. #define MM_SNDBLST_WAVEOUT 6
  32. #define MM_SNDBLST_WAVEIN 7
  33. #define MM_ADLIB 9
  34. #define MM_MPU401_MIDIOUT 10
  35. #define MM_MPU401_MIDIIN 11
  36. #define MM_PC_JOYSTICK 12
  37. #endif
  38. #define _MMRESULT_
  39. #define TIME_MS 1
  40. #define TIME_SAMPLES 2
  41. #define TIME_BYTES 4
  42. #define TIME_SMPTE 8
  43. #define TIME_MIDI 16
  44. #define TIME_TICKS 32
  45. #define MAKEFOURCC(ch0,ch1,ch2,ch3) ((DWORD)(BYTE)(ch0)|((DWORD)(BYTE)(ch1)<< 8)| \
  46.         ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
  47. #define MM_MCINOTIFY 0x3B9
  48. #define MM_WOM_OPEN 0x3BB
  49. #define MM_WOM_CLOSE 0x3BC
  50. #define MM_WOM_DONE 0x3BD
  51. #define MM_WIM_OPEN 0x3BE
  52. #define MM_WIM_CLOSE 0x3BF
  53. #define MM_WIM_DATA 0x3C0
  54. #define MM_MIM_OPEN 0x3C1
  55. #define MM_MIM_CLOSE 0x3C2
  56. #define MM_MIM_DATA 0x3C3
  57. #define MM_MIM_LONGDATA 0x3C4
  58. #define MM_MIM_ERROR 0x3C5
  59. #define MM_MIM_LONGERROR 0x3C6
  60. #define MM_MOM_OPEN 0x3C7
  61. #define MM_MOM_CLOSE 0x3C8
  62. #define MM_MOM_DONE 0x3C9
  63. #ifndef MM_DRVM_OPEN
  64. #define MM_DRVM_OPEN 0x3D0
  65. #define MM_DRVM_CLOSE 0x3D1
  66. #define MM_DRVM_DATA 0x3D2
  67. #define MM_DRVM_ERROR 0x3D3
  68. #endif
  69. #define MM_STREAM_OPEN     0x3D4
  70. #define MM_STREAM_CLOSE     0x3D5
  71. #define MM_STREAM_DONE     0x3D6
  72. #define MM_STREAM_ERROR     0x3D7
  73. #define MM_MOM_POSITIONCB 0x3CA
  74. #ifndef MM_MCISIGNAL
  75. #define MM_MCISIGNAL 0x3CB
  76. #endif
  77. #define WAVE_INVALIDFORMAT 0
  78. #define WAVE_FORMAT_1M08 1
  79. #define WAVE_FORMAT_1S08 2
  80. #define WAVE_FORMAT_1M16 4
  81. #define WAVE_FORMAT_1S16 8
  82. #define WAVE_FORMAT_2M08 16
  83. #define WAVE_FORMAT_2S08 32
  84. #define WAVE_FORMAT_2M16 64
  85. #define WAVE_FORMAT_2S16 128
  86. #define WAVE_FORMAT_4M08 256
  87. #define WAVE_FORMAT_4S08 512
  88. #define WAVE_FORMAT_4M16 0x400
  89. #define WAVE_FORMAT_4S16 0x800
  90. #define MM_MIM_MOREDATA 0x3CC
  91. #define MM_MIXM_LINE_CHANGE 0x3D0
  92. #define MM_MIXM_CONTROL_CHANGE 0x3D1
  93. #define MMSYSERR_BASE 0
  94. #define WAVERR_BASE 32
  95. #define MIDIERR_BASE 64
  96. #define TIMERR_BASE 96
  97. #define JOYERR_BASE 160
  98. #define MCIERR_BASE 256
  99. #define MIXERR_BASE 1024
  100. #define MCI_STRING_OFFSET 512
  101. #define MCI_VD_OFFSET 1024
  102. #define MCI_CD_OFFSET 1088
  103. #define MCI_WAVE_OFFSET 1152
  104. #define MCI_SEQ_OFFSET 1216
  105. #define MMSYSERR_NOERROR 0
  106. #define MMSYSERR_ERROR (MMSYSERR_BASE + 1)
  107. #define MMSYSERR_BADDEVICEID (MMSYSERR_BASE + 2)
  108. #define MMSYSERR_NOTENABLED (MMSYSERR_BASE + 3)
  109. #define MMSYSERR_ALLOCATED (MMSYSERR_BASE + 4)
  110. #define MMSYSERR_INVALHANDLE (MMSYSERR_BASE + 5)
  111. #define MMSYSERR_NODRIVER (MMSYSERR_BASE + 6)
  112. #define MMSYSERR_NOMEM (MMSYSERR_BASE + 7)
  113. #define MMSYSERR_NOTSUPPORTED (MMSYSERR_BASE + 8)
  114. #define MMSYSERR_BADERRNUM (MMSYSERR_BASE + 9)
  115. #define MMSYSERR_INVALFLAG (MMSYSERR_BASE + 10)
  116. #define MMSYSERR_INVALPARAM (MMSYSERR_BASE + 11)
  117. #define MMSYSERR_HANDLEBUSY (MMSYSERR_BASE + 12)
  118. #define MMSYSERR_INVALIDALIAS (MMSYSERR_BASE + 13)
  119. #define MMSYSERR_BADDB (MMSYSERR_BASE + 14)
  120. #define MMSYSERR_KEYNOTFOUND (MMSYSERR_BASE + 15)
  121. #define MMSYSERR_READERROR (MMSYSERR_BASE + 16)
  122. #define MMSYSERR_WRITEERROR (MMSYSERR_BASE + 17)
  123. #define MMSYSERR_DELETEERROR (MMSYSERR_BASE + 18)
  124. #define MMSYSERR_VALNOTFOUND (MMSYSERR_BASE + 19)
  125. #define MMSYSERR_NODRIVERCB (MMSYSERR_BASE + 20)
  126. #define MMSYSERR_LASTERROR (MMSYSERR_BASE + 20)
  127. #define MM_JOY1MOVE 0x3A0
  128. #define MM_JOY2MOVE 0x3A1
  129. #define MM_JOY1ZMOVE 0x3A2
  130. #define MM_JOY2ZMOVE 0x3A3
  131. #define MM_JOY1BUTTONDOWN 0x3B5
  132. #define MM_JOY2BUTTONDOWN 0x3B6
  133. #define MM_JOY1BUTTONUP 0x3B7
  134. #define MM_JOY2BUTTONUP 0x3B8
  135. #define CALLBACK_TYPEMASK 0x70000
  136. #define CALLBACK_NULL 0
  137. #define CALLBACK_THREAD (CALLBACK_TASK)
  138. #define CALLBACK_EVENT 0x50000
  139. #define CALLBACK_WINDOW 0x10000
  140. #define CALLBACK_TASK 0x20000
  141. #define CALLBACK_FUNCTION 0x30000
  142. typedef HANDLE HDRVR;
  143. #ifndef DRV_LOAD
  144. #define DRV_LOAD 1
  145. #define DRV_ENABLE 2
  146. #define DRV_OPEN 0x3
  147. #define DRV_CLOSE 4
  148. #define DRV_DISABLE 0x5
  149. #define DRV_FREE 0x6
  150. #define DRV_CONFIGURE 0x7
  151. #define DRV_QUERYCONFIGURE 8
  152. #define DRV_INSTALL 0x9
  153. #define DRV_REMOVE 0xA
  154. #define DRV_EXITSESSION 0xB
  155. #define DRV_POWER 0xF
  156. #define DRV_RESERVED 0x800
  157. #define DRV_USER 0x4000
  158. #define DRVCNF_CANCEL 0
  159. #define DRVCNF_OK 1
  160. #define DRVCNF_RESTART 2
  161. #endif
  162. #define DRV_CANCEL DRVCNF_CANCEL
  163. #define DRV_OK DRVCNF_OK
  164. #define DRV_RESTART DRVCNF_RESTART
  165. #define DRV_MCI_FIRST DRV_RESERVED
  166. #define DRV_MCI_LAST (DRV_RESERVED + 0xFFF)
  167. typedef DRVCALLBACK *PDRVCALLBACK;
  168. #define OutputDebugStr OutputDebugString
  169. WINMMAPI BOOL WINAPI sndPlaySoundA(LPCSTR,UINT);
  170. WINMMAPI BOOL WINAPI sndPlaySoundW(LPCWSTR,UINT);
  171. #ifdef UNICODE
  172. #define sndPlaySound  sndPlaySoundW
  173. #else
  174. #define sndPlaySound  sndPlaySoundA
  175. #endif
  176. #define SND_NODEFAULT    2
  177. #define SND_MEMORY    4
  178. #define SND_LOOP    8
  179. #define SND_NOSTOP    16
  180. #define SND_SYNC    0
  181. #define SND_ASYNC    1
  182. #define SND_PURGE    64
  183. #define SND_APPLICATION 128
  184. #define SND_ALIAS_START    0
  185. #define    sndAlias(ch0,ch1)    (SND_ALIAS_START + (DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8))
  186. #define SND_ALIAS_SYSTEMHAND sndAlias('S','H')
  187. #define SND_ALIAS_SYSTEMEXCLAMATION sndAlias('S','!')
  188. #define SND_ALIAS_SYSTEMASTERISK sndAlias('S','*')
  189. #define SND_ALIAS_SYSTEMQUESTION sndAlias('S','?')
  190. #define SND_ALIAS_SYSTEMDEFAULT sndAlias('S','D')
  191. #define SND_ALIAS_SYSTEMEXIT sndAlias('S','E')
  192. #define SND_ALIAS_SYSTEMSTART sndAlias('S','S')
  193. #define SND_ALIAS_SYSTEMWELCOME sndAlias('S','W')
  194. #define SND_NODEFAULT 2
  195. #define SND_MEMORY 4
  196. #define SND_LOOP 8
  197. #define SND_NOSTOP 16
  198. #define SND_NOWAIT    0x2000
  199. #define SND_ALIAS 0x10000
  200. #define SND_ALIAS_ID    0x110000
  201. #define SND_FILENAME 0x20000
  202. #define SND_RESOURCE 0x40004
  203. #define WAVERR_BADFORMAT (WAVERR_BASE + 0)
  204. #define WAVERR_STILLPLAYING (WAVERR_BASE + 1)
  205. #define WAVERR_UNPREPARED (WAVERR_BASE + 2)
  206. #define WAVERR_SYNC (WAVERR_BASE + 3)
  207. #define WAVERR_LASTERROR (WAVERR_BASE + 3)
  208. #define WOM_OPEN MM_WOM_OPEN
  209. #define WOM_CLOSE MM_WOM_CLOSE
  210. #define WOM_DONE MM_WOM_DONE
  211. #define WIM_OPEN MM_WIM_OPEN
  212. #define WIM_CLOSE MM_WIM_CLOSE
  213. #define WIM_DATA MM_WIM_DATA
  214. #define WAVE_MAPPER ((UINT)-1)
  215. #define WAVE_FORMAT_QUERY 1
  216. #define WAVE_ALLOWSYNC 2
  217. #define WAVE_MAPPED 4
  218. #define WAVE_FORMAT_DIRECT 8
  219. #define WAVE_FORMAT_DIRECT_QUERY (WAVE_FORMAT_QUERY | WAVE_FORMAT_DIRECT)
  220. #define MIM_OPEN MM_MIM_OPEN
  221. #define MIM_CLOSE MM_MIM_CLOSE
  222. #define MIM_DATA MM_MIM_DATA
  223. #define MIM_LONGDATA MM_MIM_LONGDATA
  224. #define MIM_ERROR MM_MIM_ERROR
  225. #define MIM_LONGERROR MM_MIM_LONGERROR
  226. #define MOM_OPEN MM_MOM_OPEN
  227. #define MOM_CLOSE MM_MOM_CLOSE
  228. #define MOM_DONE MM_MOM_DONE
  229. #define MIM_MOREDATA MM_MIM_MOREDATA
  230. #define MOM_POSITIONCB MM_MOM_POSITIONCB
  231. #define MIDIMAPPER ((UINT)-1)
  232. #define MIDI_MAPPER ((UINT)-1)
  233. #define MIDI_IO_STATUS 32
  234. #define MIDI_CACHE_ALL 1
  235. #define MIDI_CACHE_BESTFIT 2
  236. #define MIDI_CACHE_QUERY 3
  237. #define MIDI_UNCACHE 4
  238. #define WHDR_DONE 1
  239. #define WHDR_PREPARED 2
  240. #define WHDR_BEGINLOOP 0x4
  241. #define WHDR_ENDLOOP 0x8
  242. #define WHDR_INQUEUE 0x10
  243. #define MOD_MIDIPORT 1
  244. #define MOD_SYNTH 2
  245. #define MOD_SQSYNTH 3
  246. #define MOD_FMSYNTH 4
  247. #define MOD_MAPPER 5
  248. #define MIDICAPS_VOLUME 1
  249. #define MIDICAPS_LRVOLUME 2
  250. #define MIDICAPS_CACHE 4
  251. #define MIDICAPS_STREAM 8
  252. #define MHDR_DONE 1
  253. #define MHDR_PREPARED 2
  254. #define MHDR_INQUEUE 0x4
  255. #define MHDR_ISSTRM 0x8
  256. #define MEVT_F_SHORT 0
  257. #define MEVT_F_LONG 0x80000000
  258. #define MEVT_F_CALLBACK 0x40000000
  259. #define MEVT_EVENTTYPE(x) ((BYTE)(((x)>>24)&0xFF))
  260. #define MEVT_EVENTPARM(x) ((DWORD)((x)&0x0FFFFFFL))
  261. #define MEVT_SHORTMSG ((BYTE)0)
  262. #define MEVT_TEMPO ((BYTE)0x1)
  263. #define MEVT_NOP ((BYTE)0x2)
  264. #define MEVT_LONGMSG ((BYTE)0x80)
  265. #define MEVT_COMMENT ((BYTE)0x82)
  266. #define MEVT_VERSION ((BYTE)0x84)
  267. #define MIDISTRM_ERROR (-2)
  268. #define MIDIPROP_SET 0x80000000
  269. #define MIDIPROP_GET 0x40000000
  270. #define MIDIPROP_TIMEDIV 1
  271. #define MIDIPROP_TEMPO 2
  272. #define MIXERLINE_LINEF_ACTIVE 1
  273. #define MIXERLINE_LINEF_DISCONNECTED 0x8000
  274. #define MIXERLINE_LINEF_SOURCE 0x80000000
  275. #define MIXERLINE_COMPONENTTYPE_DST_FIRST 0
  276. #define MIXERLINE_COMPONENTTYPE_DST_UNDEFINED (MIXERLINE_COMPONENTTYPE_DST_FIRST)
  277. #define MIXERLINE_COMPONENTTYPE_DST_DIGITAL (MIXERLINE_COMPONENTTYPE_DST_FIRST+1)
  278. #define MIXERLINE_COMPONENTTYPE_DST_LINE (MIXERLINE_COMPONENTTYPE_DST_FIRST+2)
  279. #define MIXERLINE_COMPONENTTYPE_DST_MONITOR (MIXERLINE_COMPONENTTYPE_DST_FIRST+3)
  280. #define MIXERLINE_COMPONENTTYPE_DST_SPEAKERS (MIXERLINE_COMPONENTTYPE_DST_FIRST+4)
  281. #define MIXERLINE_COMPONENTTYPE_DST_HEADPHONES (MIXERLINE_COMPONENTTYPE_DST_FIRST+5)
  282. #define MIXERLINE_COMPONENTTYPE_DST_TELEPHONE (MIXERLINE_COMPONENTTYPE_DST_FIRST+6)
  283. #define MIXERLINE_COMPONENTTYPE_DST_WAVEIN (MIXERLINE_COMPONENTTYPE_DST_FIRST+7)
  284. #define MIXERLINE_COMPONENTTYPE_DST_VOICEIN (MIXERLINE_COMPONENTTYPE_DST_FIRST+8)
  285. #define MIXERLINE_COMPONENTTYPE_DST_LAST (MIXERLINE_COMPONENTTYPE_DST_FIRST+8)
  286. #define MIXERLINE_COMPONENTTYPE_SRC_FIRST 0x1000
  287. #define MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 0)
  288. #define MIXERLINE_COMPONENTTYPE_SRC_DIGITAL (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 1)
  289. #define MIXERLINE_COMPONENTTYPE_SRC_LINE (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 2)
  290. #define MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 3)
  291. #define MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 4)
  292. #define MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 5)
  293. #define MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 6)
  294. #define MIXERLINE_COMPONENTTYPE_SRC_PCSPEAKER (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 7)
  295. #define MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 8)
  296. #define MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 9)
  297. #define MIXERLINE_COMPONENTTYPE_SRC_ANALOG (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 10)
  298. #define MIXERLINE_COMPONENTTYPE_SRC_LAST (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 10)
  299. #define MIXERLINE_TARGETTYPE_UNDEFINED 0
  300. #define MIXERLINE_TARGETTYPE_WAVEOUT 1
  301. #define MIXERLINE_TARGETTYPE_WAVEIN 2
  302. #define MIXERLINE_TARGETTYPE_MIDIOUT 3
  303. #define MIXERLINE_TARGETTYPE_MIDIIN 4
  304. #define MIXERLINE_TARGETTYPE_AUX 5
  305. #define MIDIERR_UNPREPARED (MIDIERR_BASE + 0)
  306. #define MIDIERR_STILLPLAYING (MIDIERR_BASE + 1)
  307. #define MIDIERR_NOMAP (MIDIERR_BASE + 2)
  308. #define MIDIERR_NOTREADY (MIDIERR_BASE + 3)
  309. #define MIDIERR_NODEVICE (MIDIERR_BASE + 4)
  310. #define MIDIERR_INVALIDSETUP (MIDIERR_BASE + 5)
  311. #define MIDIERR_BADOPENMODE (MIDIERR_BASE + 6)
  312. #define MIDIERR_DONT_CONTINUE (MIDIERR_BASE + 7)
  313. #define MIDIERR_LASTERROR (MIDIERR_BASE + 7)
  314. #define MIXERCONTROL_CONTROLF_UNIFORM 1
  315. #define MIXERCONTROL_CONTROLF_MULTIPLE 2
  316. #define MIXERCONTROL_CONTROLF_DISABLED 0x80000000
  317. #define MIXERCONTROL_CT_CLASS_MASK 0xF0000000
  318. #define MIXERCONTROL_CT_CLASS_CUSTOM 0
  319. #define MIXERCONTROL_CT_CLASS_METER 0x10000000
  320. #define MIXERCONTROL_CT_CLASS_SWITCH 0x20000000
  321. #define MIXERCONTROL_CT_CLASS_NUMBER 0x30000000
  322. #define MIXERCONTROL_CT_CLASS_SLIDER 0x40000000
  323. #define MIXERCONTROL_CT_CLASS_FADER 0x50000000
  324. #define MIXERCONTROL_CT_CLASS_TIME 0x60000000
  325. #define MIXERCONTROL_CT_CLASS_LIST 0x70000000
  326. #define MIXERCONTROL_CT_SUBCLASS_MASK 0x0F000000
  327. #define MIXERCONTROL_CT_SC_SWITCH_BOOLEAN 0
  328. #define MIXERCONTROL_CT_SC_SWITCH_BUTTON 0x1000000
  329. #define MIXERCONTROL_CT_SC_METER_POLLED 0
  330. #define MIXERCONTROL_CT_SC_TIME_MICROSECS 0
  331. #define MIXERCONTROL_CT_SC_TIME_MILLISECS 0x1000000
  332. #define MIXERCONTROL_CT_SC_LIST_SINGLE 0
  333. #define MIXERCONTROL_CT_SC_LIST_MULTIPLE 0x1000000
  334. #define MIXERCONTROL_CT_UNITS_MASK 0x0FF0000
  335. #define MIXERCONTROL_CT_UNITS_CUSTOM 0
  336. #define MIXERCONTROL_CT_UNITS_BOOLEAN 0x10000
  337. #define MIXERCONTROL_CT_UNITS_SIGNED 0x20000
  338. #define MIXERCONTROL_CT_UNITS_UNSIGNED 0x30000
  339. #define MIXERCONTROL_CT_UNITS_DECIBELS 0x40000
  340. #define MIXERCONTROL_CT_UNITS_PERCENT 0x50000
  341. #define MIXERCONTROL_CONTROLTYPE_CUSTOM (MIXERCONTROL_CT_CLASS_CUSTOM | MIXERCONTROL_CT_UNITS_CUSTOM)
  342. #define MIXERCONTROL_CONTROLTYPE_BOOLEANMETER (MIXERCONTROL_CT_CLASS_METER | MIXERCONTROL_CT_SC_METER_POLLED | MIXERCONTROL_CT_UNITS_BOOLEAN)
  343. #define MIXERCONTROL_CONTROLTYPE_SIGNEDMETER (MIXERCONTROL_CT_CLASS_METER | MIXERCONTROL_CT_SC_METER_POLLED | MIXERCONTROL_CT_UNITS_SIGNED)
  344. #define MIXERCONTROL_CONTROLTYPE_PEAKMETER (MIXERCONTROL_CONTROLTYPE_SIGNEDMETER + 1)
  345. #define MIXERCONTROL_CONTROLTYPE_UNSIGNEDMETER (MIXERCONTROL_CT_CLASS_METER | MIXERCONTROL_CT_SC_METER_POLLED | MIXERCONTROL_CT_UNITS_UNSIGNED)
  346. #define MIXERCONTROL_CONTROLTYPE_BOOLEAN (MIXERCONTROL_CT_CLASS_SWITCH | MIXERCONTROL_CT_SC_SWITCH_BOOLEAN | MIXERCONTROL_CT_UNITS_BOOLEAN)
  347. #define MIXERCONTROL_CONTROLTYPE_ONOFF (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 1)
  348. #define MIXERCONTROL_CONTROLTYPE_MUTE (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 2)
  349. #define MIXERCONTROL_CONTROLTYPE_MONO (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 3)
  350. #define MIXERCONTROL_CONTROLTYPE_LOUDNESS (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 4)
  351. #define MIXERCONTROL_CONTROLTYPE_STEREOENH (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 5)
  352. #define MIXERCONTROL_CONTROLTYPE_BUTTON (MIXERCONTROL_CT_CLASS_SWITCH | MIXERCONTROL_CT_SC_SWITCH_BUTTON | MIXERCONTROL_CT_UNITS_BOOLEAN)
  353. #define MIXERCONTROL_CONTROLTYPE_DECIBELS (MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_DECIBELS)
  354. #define MIXERCONTROL_CONTROLTYPE_SIGNED (MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_SIGNED)
  355. #define MIXERCONTROL_CONTROLTYPE_UNSIGNED (MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_UNSIGNED)
  356. #define MIXERCONTROL_CONTROLTYPE_PERCENT (MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_PERCENT)
  357. #define MIXERCONTROL_CONTROLTYPE_SLIDER (MIXERCONTROL_CT_CLASS_SLIDER | MIXERCONTROL_CT_UNITS_SIGNED)
  358. #define MIXERCONTROL_CONTROLTYPE_PAN (MIXERCONTROL_CONTROLTYPE_SLIDER + 1)
  359. #define MIXERCONTROL_CONTROLTYPE_QSOUNDPAN (MIXERCONTROL_CONTROLTYPE_SLIDER + 2)
  360. #define MIXERCONTROL_CONTROLTYPE_FADER (MIXERCONTROL_CT_CLASS_FADER | MIXERCONTROL_CT_UNITS_UNSIGNED)
  361. #define MIXERCONTROL_CONTROLTYPE_VOLUME (MIXERCONTROL_CONTROLTYPE_FADER + 1)
  362. #define MIXERCONTROL_CONTROLTYPE_BASS (MIXERCONTROL_CONTROLTYPE_FADER + 2)
  363. #define MIXERCONTROL_CONTROLTYPE_TREBLE (MIXERCONTROL_CONTROLTYPE_FADER + 3)
  364. #define MIXERCONTROL_CONTROLTYPE_EQUALIZER (MIXERCONTROL_CONTROLTYPE_FADER + 4)
  365. #define MIXERCONTROL_CONTROLTYPE_SINGLESELECT (MIXERCONTROL_CT_CLASS_LIST | MIXERCONTROL_CT_SC_LIST_SINGLE | MIXERCONTROL_CT_UNITS_BOOLEAN)
  366. #define MIXERCONTROL_CONTROLTYPE_MUX (MIXERCONTROL_CONTROLTYPE_SINGLESELECT + 1)
  367. #define MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT (MIXERCONTROL_CT_CLASS_LIST | MIXERCONTROL_CT_SC_LIST_MULTIPLE | MIXERCONTROL_CT_UNITS_BOOLEAN)
  368. #define MIXERCONTROL_CONTROLTYPE_MIXER (MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT + 1)
  369. #define MIXERCONTROL_CONTROLTYPE_MICROTIME (MIXERCONTROL_CT_CLASS_TIME | MIXERCONTROL_CT_SC_TIME_MICROSECS | MIXERCONTROL_CT_UNITS_UNSIGNED)
  370. #define MIXERCONTROL_CONTROLTYPE_MILLITIME (MIXERCONTROL_CT_CLASS_TIME | MIXERCONTROL_CT_SC_TIME_MILLISECS | MIXERCONTROL_CT_UNITS_UNSIGNED)
  371. #define MIXER_SHORT_NAME_CHARS 16
  372. #define MIXER_LONG_NAME_CHARS 64
  373. #define MIXERR_INVALLINE (MIXERR_BASE + 0)
  374. #define MIXERR_INVALCONTROL (MIXERR_BASE + 1)
  375. #define MIXERR_INVALVALUE (MIXERR_BASE + 2)
  376. #define MIXERR_LASTERROR (MIXERR_BASE + 2)
  377. #define MIXER_OBJECTF_HANDLE 0x80000000
  378. #define MIXER_OBJECTF_MIXER 0
  379. #define MIXER_OBJECTF_HMIXER (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIXER)
  380. #define MIXER_OBJECTF_WAVEOUT 0x10000000
  381. #define MIXER_OBJECTF_HWAVEOUT (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEOUT)
  382. #define MIXER_OBJECTF_WAVEIN 0x20000000
  383. #define MIXER_OBJECTF_HWAVEIN (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEIN)
  384. #define MIXER_OBJECTF_MIDIOUT 0x30000000
  385. #define MIXER_OBJECTF_HMIDIOUT (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIOUT)
  386. #define MIXER_OBJECTF_MIDIIN 0x40000000
  387. #define MIXER_OBJECTF_HMIDIIN (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIIN)
  388. #define MIXER_OBJECTF_AUX 0x50000000
  389. #define MIXER_GETCONTROLDETAILSF_VALUE 0
  390. #define MIXER_GETCONTROLDETAILSF_LISTTEXT 1
  391. #define MIXER_GETCONTROLDETAILSF_QUERYMASK 0xF
  392. #define MIXER_SETCONTROLDETAILSF_VALUE 0
  393. #define MIXER_SETCONTROLDETAILSF_CUSTOM 1
  394. #define MIXER_SETCONTROLDETAILSF_QUERYMASK 0xF
  395. #define JOYERR_NOERROR (0)
  396. #define JOYERR_PARMS (JOYERR_BASE+5)
  397. #define JOYERR_NOCANDO (JOYERR_BASE+6)
  398. #define JOYERR_UNPLUGGED (JOYERR_BASE+7)
  399. #define JOY_BUTTON1 1
  400. #define JOY_BUTTON2 2
  401. #define JOY_BUTTON3 4
  402. #define JOY_BUTTON4 8
  403. #define JOY_BUTTON1CHG 256
  404. #define JOY_BUTTON2CHG 512
  405. #define JOY_BUTTON3CHG 0x400
  406. #define JOY_BUTTON4CHG 0x800
  407. #define JOY_BUTTON5 16
  408. #define JOY_BUTTON6 32
  409. #define JOY_BUTTON7 64
  410. #define JOY_BUTTON8 128
  411. #define JOY_BUTTON9 256
  412. #define JOY_BUTTON10 512
  413. #define JOY_BUTTON11 0x400
  414. #define JOY_BUTTON12 0x800
  415. #define JOY_BUTTON13 0x1000
  416. #define JOY_BUTTON14 0x2000
  417. #define JOY_BUTTON15 0x4000
  418. #define JOY_BUTTON16 0x8000
  419. #define JOY_BUTTON17 0x10000
  420. #define JOY_BUTTON18 0x20000
  421. #define JOY_BUTTON19 0x40000
  422. #define JOY_BUTTON20 0x80000
  423. #define JOY_BUTTON21 0x100000
  424. #define JOY_BUTTON22 0x200000
  425. #define JOY_BUTTON23 0x400000
  426. #define JOY_BUTTON24 0x800000
  427. #define JOY_BUTTON25 0x1000000
  428. #define JOY_BUTTON26 0x2000000
  429. #define JOY_BUTTON27 0x4000000
  430. #define JOY_BUTTON28 0x8000000
  431. #define JOY_BUTTON29 0x10000000
  432. #define JOY_BUTTON30 0x20000000
  433. #define JOY_BUTTON31 0x40000000
  434. #define JOY_BUTTON32 0x80000000
  435. #define JOY_POVCENTERED        (WORD) -1
  436. #define JOY_POVFORWARD        0
  437. #define JOY_POVRIGHT        9000
  438. #define JOY_POVBACKWARD        18000
  439. #define JOY_POVLEFT        27000
  440. #define JOY_RETURNX        1
  441. #define JOY_RETURNY        2
  442. #define JOY_RETURNZ        4
  443. #define JOY_RETURNR        8
  444. #define JOY_RETURNU        16
  445. #define JOY_RETURNV        32
  446. #define JOY_RETURNPOV        64
  447. #define JOY_RETURNBUTTONS    128
  448. #define JOY_RETURNRAWDATA    256
  449. #define JOY_RETURNPOVCTS    512
  450. #define JOY_RETURNCENTERED    0x400
  451. #define JOY_USEDEADZONE        0x800
  452. #define JOY_RETURNALL        (JOY_RETURNX | JOY_RETURNY | JOY_RETURNZ | \
  453.                 JOY_RETURNR | JOY_RETURNU | JOY_RETURNV | \
  454.                 JOY_RETURNPOV | JOY_RETURNBUTTONS)
  455. #define JOY_CAL_READALWAYS    0x10000
  456. #define JOY_CAL_READXYONLY    0x20000
  457. #define JOY_CAL_READ3        0x40000
  458. #define JOY_CAL_READ4        0x80000
  459. #define JOY_CAL_READXONLY    0x100000
  460. #define JOY_CAL_READYONLY    0x200000
  461. #define JOY_CAL_READ5        0x400000
  462. #define JOY_CAL_READ6        0x800000
  463. #define JOY_CAL_READZONLY    0x1000000
  464. #define JOY_CAL_READRONLY    0x2000000
  465. #define JOY_CAL_READUONLY    0x4000000
  466. #define JOY_CAL_READVONLY    0x8000000
  467. #define JOYSTICKID1 0
  468. #define JOYSTICKID2 1
  469. #define JOYCAPS_HASZ        1
  470. #define JOYCAPS_HASR        2
  471. #define JOYCAPS_HASU        4
  472. #define JOYCAPS_HASV        8
  473. #define JOYCAPS_HASPOV        16
  474. #define JOYCAPS_POV4DIR        32
  475. #define JOYCAPS_POVCTS        64
  476. #define MMIOERR_BASE 256
  477. #define MMIOERR_FILENOTFOUND (MMIOERR_BASE + 1)
  478. #define MMIOERR_OUTOFMEMORY (MMIOERR_BASE + 2)
  479. #define MMIOERR_CANNOTOPEN (MMIOERR_BASE + 3)
  480. #define MMIOERR_CANNOTCLOSE (MMIOERR_BASE + 4)
  481. #define MMIOERR_CANNOTREAD (MMIOERR_BASE + 5)
  482. #define MMIOERR_CANNOTWRITE (MMIOERR_BASE + 6)
  483. #define MMIOERR_CANNOTSEEK (MMIOERR_BASE + 7)
  484. #define MMIOERR_CANNOTEXPAND (MMIOERR_BASE + 8)
  485. #define MMIOERR_CHUNKNOTFOUND (MMIOERR_BASE + 9)
  486. #define MMIOERR_UNBUFFERED (MMIOERR_BASE + 10)
  487. #define MMIOERR_PATHNOTFOUND (MMIOERR_BASE + 11)
  488. #define MMIOERR_ACCESSDENIED (MMIOERR_BASE + 12)
  489. #define MMIOERR_SHARINGVIOLATION (MMIOERR_BASE + 13)
  490. #define MMIOERR_NETWORKERROR (MMIOERR_BASE + 14)
  491. #define MMIOERR_TOOMANYOPENFILES (MMIOERR_BASE + 15)
  492. #define MMIOERR_INVALIDFILE (MMIOERR_BASE + 16)
  493. #define CFSEPCHAR '+'
  494. #define WAVECAPS_PITCH 1
  495. #define WAVECAPS_PLAYBACKRATE 2
  496. #define WAVECAPS_VOLUME 4
  497. #define WAVECAPS_LRVOLUME 8
  498. #define WAVECAPS_SYNC 16
  499. #define WAVECAPS_SAMPLEACCURATE 32
  500. #define WAVECAPS_DIRECTSOUND 64
  501. #define MIXER_GETLINEINFOF_DESTINATION 0
  502. #define MIXER_GETLINEINFOF_SOURCE 1
  503. #define MIXER_GETLINEINFOF_LINEID 2
  504. #define MIXER_GETLINEINFOF_COMPONENTTYPE 3
  505. #define MIXER_GETLINEINFOF_TARGETTYPE 4
  506. #define MIXER_GETLINEINFOF_QUERYMASK 0xF
  507. #define MMIO_RWMODE 3
  508. #define MMIO_SHAREMODE 0x70
  509. #define MMIO_CREATE 0x1000
  510. #define MMIO_PARSE 256
  511. #define MMIO_DELETE 512
  512. #define MMIO_EXIST 0x4000
  513. #define MMIO_ALLOCBUF 0x10000
  514. #define MMIO_GETTEMP 0x20000
  515. #define MMIO_DIRTY 0x10000000
  516. #define MMIO_READ 0
  517. #define MMIO_WRITE 1
  518. #define MMIO_READWRITE 2
  519. #define MMIO_COMPAT 0
  520. #define MMIO_EXCLUSIVE 16
  521. #define MMIO_DENYWRITE 32
  522. #define MMIO_DENYREAD 0x30
  523. #define MMIO_DENYNONE 64
  524. #define MMIO_FHOPEN 16
  525. #define MMIO_EMPTYBUF 16
  526. #define MMIO_TOUPPER 16
  527. #define MMIO_INSTALLPROC 0x10000
  528. #define MMIO_GLOBALPROC 0x10000000
  529. #define MMIO_REMOVEPROC 0x20000
  530. #define MMIO_UNICODEPROC 0x1000000
  531. #define MMIO_FINDPROC 0x40000
  532. #define MMIO_FINDCHUNK 16
  533. #define MMIO_FINDRIFF 32
  534. #define MMIO_FINDLIST 64
  535. #define MMIO_CREATERIFF 32
  536. #define MMIO_CREATELIST 64
  537. #define MMIOM_READ MMIO_READ
  538. #define MMIOM_WRITE MMIO_WRITE
  539. #define MMIOM_SEEK 2
  540. #define MMIOM_OPEN 3
  541. #define MMIOM_CLOSE 4
  542. #define MMIOM_WRITEFLUSH 5
  543. #define MMIOM_RENAME 6
  544. #define MMIOM_USER 0x8000
  545. #define FOURCC_RIFF mmioFOURCC('R','I','F','F')
  546. #define FOURCC_LIST mmioFOURCC('L','I','S','T')
  547. #define FOURCC_DOS mmioFOURCC('D','O','S',' ')
  548. #define FOURCC_MEM mmioFOURCC('M','E','M',' ')
  549. #ifndef SEEK_SET
  550. #define SEEK_SET 0
  551. #define SEEK_CUR 1
  552. #define SEEK_END 2
  553. #endif
  554. #define MMIO_DEFAULTBUFFER 8192
  555. #define mmioFOURCC(ch0,ch1,ch2,ch3) MAKEFOURCC(ch0,ch1,ch2,ch3)
  556. #define MCIERR_INVALID_DEVICE_ID (MCIERR_BASE + 1)
  557. #define MCIERR_UNRECOGNIZED_KEYWORD (MCIERR_BASE + 3)
  558. #define MCIERR_UNRECOGNIZED_COMMAND (MCIERR_BASE + 5)
  559. #define MCIERR_HARDWARE (MCIERR_BASE + 6)
  560. #define MCIERR_INVALID_DEVICE_NAME (MCIERR_BASE + 7)
  561. #define MCIERR_OUT_OF_MEMORY (MCIERR_BASE + 8)
  562. #define MCIERR_DEVICE_OPEN (MCIERR_BASE + 9)
  563. #define MCIERR_CANNOT_LOAD_DRIVER (MCIERR_BASE + 10)
  564. #define MCIERR_MISSING_COMMAND_STRING (MCIERR_BASE + 11)
  565. #define MCIERR_PARAM_OVERFLOW (MCIERR_BASE + 12)
  566. #define MCIERR_MISSING_STRING_ARGUMENT (MCIERR_BASE + 13)
  567. #define MCIERR_BAD_INTEGER (MCIERR_BASE + 14)
  568. #define MCIERR_PARSER_INTERNAL (MCIERR_BASE + 15)
  569. #define MCIERR_DRIVER_INTERNAL (MCIERR_BASE + 16)
  570. #define MCIERR_MISSING_PARAMETER (MCIERR_BASE + 17)
  571. #define MCIERR_UNSUPPORTED_FUNCTION (MCIERR_BASE + 18)
  572. #define MCIERR_FILE_NOT_FOUND (MCIERR_BASE + 19)
  573. #define MCIERR_DEVICE_NOT_READY (MCIERR_BASE + 20)
  574. #define MCIERR_INTERNAL (MCIERR_BASE + 21)
  575. #define MCIERR_DRIVER (MCIERR_BASE + 22)
  576. #define MCIERR_CANNOT_USE_ALL (MCIERR_BASE + 23)
  577. #define MCIERR_MULTIPLE (MCIERR_BASE + 24)
  578. #define MCIERR_EXTENSION_NOT_FOUND (MCIERR_BASE + 25)
  579. #define MCIERR_OUTOFRANGE (MCIERR_BASE + 26)
  580. #define MCIERR_FLAGS_NOT_COMPATIBLE (MCIERR_BASE + 28)
  581. #define MCIERR_FILE_NOT_SAVED (MCIERR_BASE + 30)
  582. #define MCIERR_DEVICE_TYPE_REQUIRED (MCIERR_BASE + 31)
  583. #define MCIERR_DEVICE_LOCKED (MCIERR_BASE + 32)
  584. #define MCIERR_DUPLICATE_ALIAS (MCIERR_BASE + 33)
  585. #define MCIERR_BAD_CONSTANT (MCIERR_BASE + 34)
  586. #define MCIERR_MUST_USE_SHAREABLE (MCIERR_BASE + 35)
  587. #define MCIERR_MISSING_DEVICE_NAME (MCIERR_BASE + 36)
  588. #define MCIERR_BAD_TIME_FORMAT (MCIERR_BASE + 37)
  589. #define MCIERR_NO_CLOSING_QUOTE (MCIERR_BASE + 38)
  590. #define MCIERR_DUPLICATE_FLAGS (MCIERR_BASE + 39)
  591. #define MCIERR_INVALID_FILE (MCIERR_BASE + 40)
  592. #define MCIERR_NULL_PARAMETER_BLOCK (MCIERR_BASE + 41)
  593. #define MCIERR_UNNAMED_RESOURCE (MCIERR_BASE + 42)
  594. #define MCIERR_NEW_REQUIRES_ALIAS (MCIERR_BASE + 43)
  595. #define MCIERR_NOTIFY_ON_AUTO_OPEN (MCIERR_BASE + 44)
  596. #define MCIERR_NO_ELEMENT_ALLOWED (MCIERR_BASE + 45)
  597. #define MCIERR_NONAPPLICABLE_FUNCTION (MCIERR_BASE + 46)
  598. #define MCIERR_ILLEGAL_FOR_AUTO_OPEN (MCIERR_BASE + 47)
  599. #define MCIERR_FILENAME_REQUIRED (MCIERR_BASE + 48)
  600. #define MCIERR_EXTRA_CHARACTERS (MCIERR_BASE + 49)
  601. #define MCIERR_DEVICE_NOT_INSTALLED (MCIERR_BASE + 50)
  602. #define MCIERR_GET_CD (MCIERR_BASE + 51)
  603. #define MCIERR_SET_CD (MCIERR_BASE + 52)
  604. #define MCIERR_SET_DRIVE (MCIERR_BASE + 53)
  605. #define MCIERR_DEVICE_LENGTH (MCIERR_BASE + 54)
  606. #define MCIERR_DEVICE_ORD_LENGTH (MCIERR_BASE + 55)
  607. #define MCIERR_NO_INTEGER (MCIERR_BASE + 56)
  608. #define MCIERR_WAVE_OUTPUTSINUSE (MCIERR_BASE + 64)
  609. #define MCIERR_WAVE_SETOUTPUTINUSE (MCIERR_BASE + 65)
  610. #define MCIERR_WAVE_INPUTSINUSE (MCIERR_BASE + 66)
  611. #define MCIERR_WAVE_SETINPUTINUSE (MCIERR_BASE + 67)
  612. #define MCIERR_WAVE_OUTPUTUNSPECIFIED (MCIERR_BASE + 68)
  613. #define MCIERR_WAVE_INPUTUNSPECIFIED (MCIERR_BASE + 69)
  614. #define MCIERR_WAVE_OUTPUTSUNSUITABLE (MCIERR_BASE + 70)
  615. #define MCIERR_WAVE_SETOUTPUTUNSUITABLE (MCIERR_BASE + 71)
  616. #define MCIERR_WAVE_INPUTSUNSUITABLE (MCIERR_BASE + 72)
  617. #define MCIERR_WAVE_SETINPUTUNSUITABLE (MCIERR_BASE + 73)
  618. #define MCIERR_SEQ_DIV_INCOMPATIBLE (MCIERR_BASE + 80)
  619. #define MCIERR_SEQ_PORT_INUSE (MCIERR_BASE + 81)
  620. #define MCIERR_SEQ_PORT_NONEXISTENT (MCIERR_BASE + 82)
  621. #define MCIERR_SEQ_PORT_MAPNODEVICE (MCIERR_BASE + 83)
  622. #define MCIERR_SEQ_PORT_MISCERROR (MCIERR_BASE + 84)
  623. #define MCIERR_SEQ_TIMER (MCIERR_BASE + 85)
  624. #define MCIERR_SEQ_PORTUNSPECIFIED (MCIERR_BASE + 86)
  625. #define MCIERR_SEQ_NOMIDIPRESENT (MCIERR_BASE + 87)
  626. #define MCIERR_NO_WINDOW (MCIERR_BASE + 90)
  627. #define MCIERR_CREATEWINDOW (MCIERR_BASE + 91)
  628. #define MCIERR_FILE_READ (MCIERR_BASE + 92)
  629. #define MCIERR_FILE_WRITE (MCIERR_BASE + 93)
  630. #define MCIERR_NO_IDENTITY (MCIERR_BASE + 94)
  631. #define MCIERR_CUSTOM_DRIVER_BASE (MCIERR_BASE + 256)
  632. #define MCI_FIRST DRV_MCI_FIRST
  633. #define MCI_ESCAPE 0x805
  634. #define MCI_PLAY 0x806
  635. #define MCI_SEEK 0x807
  636. #define MCI_STOP 0x808
  637. #define MCI_PAUSE 0x809
  638. #define MCI_INFO 0x80A
  639. #define MCI_GETDEVCAPS 0x80B
  640. #define MCI_BREAK 0x811
  641. #define MCI_WHERE 0x843
  642. #define MCI_FREEZE 0x844
  643. #define MCI_UNFREEZE 0x845
  644. #define MCI_LOAD 0x850
  645. #define MCI_CUT 0x851
  646. #define MCI_COPY 0x852
  647. #define MCI_PASTE 0x853
  648. #define MCI_UPDATE 0x854
  649. #define MCI_RESUME 0x855
  650. #define MCI_DELETE 0x856
  651. #define MCI_SET 0x80D
  652. #define MCI_STEP 0x80E
  653. #define MCI_SAVE 0x813
  654. #define MCI_SPIN 0x80C
  655. #define MCI_STATUS 0x814
  656. #define MCI_CUE 0x830
  657. #define MCI_REALIZE 0x840
  658. #define MCI_WINDOW 0x841
  659. #define MCI_PUT 0x842
  660. #define MCI_RECORD 0x80F
  661. #define MCI_SYSINFO 0x810
  662. #define MCI_OPEN 0x803
  663. #define MCI_CLOSE 0x804
  664. #define MCI_USER_MESSAGES (DRV_MCI_FIRST + 0x400)
  665. #define MCI_LAST 0x0FFF
  666. #define MCI_ALL_DEVICE_ID ((MCIDEVICEID)-1)
  667. #define MCI_DEVTYPE_VCR 513
  668. #define MCI_DEVTYPE_VIDEODISC 514
  669. #define MCI_DEVTYPE_OVERLAY 515
  670. #define MCI_DEVTYPE_CD_AUDIO 516
  671. #define MCI_DEVTYPE_DAT 517
  672. #define MCI_DEVTYPE_SCANNER 518
  673. #define MCI_DEVTYPE_ANIMATION 519
  674. #define MCI_DEVTYPE_DIGITAL_VIDEO 520
  675. #define MCI_DEVTYPE_OTHER 521
  676. #define MCI_DEVTYPE_WAVEFORM_AUDIO 522
  677. #define MCI_DEVTYPE_SEQUENCER 523
  678. #define MCI_DEVTYPE_FIRST MCI_DEVTYPE_VCR
  679. #define MCI_DEVTYPE_LAST MCI_DEVTYPE_SEQUENCER
  680. #define MCI_DEVTYPE_FIRST_USER 0x1000
  681. #define MCI_MODE_NOT_READY (MCI_STRING_OFFSET + 12)
  682. #define MCI_MODE_STOP (MCI_STRING_OFFSET + 13)
  683. #define MCI_MODE_PLAY (MCI_STRING_OFFSET + 14)
  684. #define MCI_MODE_RECORD (MCI_STRING_OFFSET + 15)
  685. #define MCI_MODE_SEEK (MCI_STRING_OFFSET + 16)
  686. #define MCI_MODE_PAUSE (MCI_STRING_OFFSET + 17)
  687. #define MCI_MODE_OPEN (MCI_STRING_OFFSET + 18)
  688. #define MCI_FORMAT_MILLISECONDS 0
  689. #define MCI_FORMAT_HMS 1
  690. #define MCI_FORMAT_MSF 2
  691. #define MCI_FORMAT_FRAMES 3
  692. #define MCI_FORMAT_SMPTE_24 4
  693. #define MCI_FORMAT_SMPTE_25 5
  694. #define MCI_FORMAT_SMPTE_30 6
  695. #define MCI_FORMAT_SMPTE_30DROP 7
  696. #define MCI_FORMAT_BYTES 8
  697. #define MCI_FORMAT_SAMPLES 9
  698. #define MCI_FORMAT_TMSF 10
  699. #define MCI_MSF_MINUTE(msf) ((BYTE)(msf))
  700. #define MCI_MSF_SECOND(msf) ((BYTE)(((WORD)(msf)) >> 8))
  701. #define MCI_MSF_FRAME(msf) ((BYTE)((msf)>>16))
  702. #define MCI_MAKE_MSF(m,s,f) ((DWORD)(((BYTE)(m) | ((WORD)(s)<<8)) | (((DWORD)(BYTE)(f))<<16)))
  703. #define MCI_SET_DOOR_OPEN 256
  704. #define MCI_SET_DOOR_CLOSED 512
  705. #define MCI_SET_TIME_FORMAT 0x400
  706. #define MCI_SET_AUDIO 0x800
  707. #define MCI_SET_VIDEO 0x1000
  708. #define MCI_SET_ON 0x2000
  709. #define MCI_SET_OFF 0x4000
  710. #define MCI_SET_AUDIO_ALL 0
  711. #define MCI_SET_AUDIO_LEFT 1
  712. #define MCI_SET_AUDIO_RIGHT 2
  713. #define MCI_TMSF_TRACK(tmsf) ((BYTE)(tmsf))
  714. #define MCI_TMSF_MINUTE(tmsf) ((BYTE)(((WORD)(tmsf)) >> 8))
  715. #define MCI_TMSF_SECOND(tmsf) ((BYTE)((tmsf)>>16))
  716. #define MCI_TMSF_FRAME(tmsf) ((BYTE)((tmsf)>>24))
  717. #define MCI_HMS_HOUR(h) ((BYTE)(h))
  718. #define MCI_HMS_MINUTE(h) ((BYTE)(((WORD)(h)) >> 8))
  719. #define MCI_HMS_SECOND(h) ((BYTE)((h)>>16))
  720. #define MCI_MAKE_HMS(h,m,s) ((DWORD)(((BYTE)(h)|((WORD)(m)<<8)) | (((DWORD)(BYTE)(s))<<16)))
  721. #define MCI_INFO_PRODUCT 256
  722. #define MCI_INFO_FILE 512
  723. #define MCI_INFO_MEDIA_UPC 0x400
  724. #define MCI_INFO_MEDIA_IDENTITY 0x800
  725. #define MCI_INFO_NAME 0x1000
  726. #define MCI_INFO_COPYRIGHT 0x2000
  727. #define MCI_MAKE_TMSF(t,m,s,f) ((DWORD)(((BYTE)(t) | ((WORD)(m)<<8)) | \
  728.                         (((DWORD)(BYTE)(s) | ((WORD)(f)<<8))<<16)))
  729. #define MCI_WAIT 2
  730. #define MCI_FROM 4
  731. #define MCI_TO 8
  732. #define MCI_TRACK 16
  733. #define MCI_SEEK_TO_START 256
  734. #define MCI_SEEK_TO_END 512
  735. #define MCI_STATUS_ITEM 256
  736. #define MCI_STATUS_START 512
  737. #define MCI_STATUS_LENGTH 1
  738. #define MCI_STATUS_POSITION 2
  739. #define MCI_STATUS_NUMBER_OF_TRACKS 3
  740. #define MCI_STATUS_MODE 4
  741. #define MCI_STATUS_MEDIA_PRESENT 5
  742. #define MCI_STATUS_TIME_FORMAT 6
  743. #define MCI_STATUS_READY 7
  744. #define MCI_STATUS_CURRENT_TRACK 8
  745. #define MCI_OPEN_SHAREABLE 256
  746. #define MCI_OPEN_ELEMENT 512
  747. #define MCI_OPEN_ALIAS 0x400
  748. #define MCI_OPEN_ELEMENT_ID 0x800
  749. #define MCI_OPEN_TYPE_ID 0x1000
  750. #define MCI_OPEN_TYPE 0x2000
  751. #define MCI_GETDEVCAPS_ITEM 256
  752. #define MCI_GETDEVCAPS_CAN_RECORD 1
  753. #define MCI_GETDEVCAPS_HAS_AUDIO 2
  754. #define MCI_GETDEVCAPS_HAS_VIDEO 3
  755. #define MCI_GETDEVCAPS_DEVICE_TYPE 4
  756. #define MCI_GETDEVCAPS_USES_FILES 5
  757. #define MCI_GETDEVCAPS_COMPOUND_DEVICE 6
  758. #define MCI_GETDEVCAPS_CAN_EJECT 7
  759. #define MCI_GETDEVCAPS_CAN_PLAY 8
  760. #define MCI_GETDEVCAPS_CAN_SAVE 9
  761. #define MCI_SYSINFO_QUANTITY 256
  762. #define MCI_SYSINFO_OPEN 512
  763. #define MCI_SYSINFO_NAME 0x400
  764. #define MCI_SYSINFO_INSTALLNAME 0x800
  765. #define MCI_NOTIFY_SUCCESSFUL 1
  766. #define MCI_NOTIFY_SUPERSEDED 2
  767. #define MCI_NOTIFY_ABORTED 4
  768. #define MCI_NOTIFY_FAILURE 8
  769. #define MCI_NOTIFY 1
  770. #define MCI_BREAK_KEY 256
  771. #define MCI_BREAK_HWND 512
  772. #define MCI_BREAK_OFF 0x400
  773. #define MCI_RECORD_INSERT 256
  774. #define MCI_RECORD_OVERWRITE 512
  775. #define MCI_SAVE_FILE 256
  776. #define MCI_LOAD_FILE 256
  777. #define MCI_VD_GETDEVCAPS_FAST_RATE 0x4003
  778. #define MCI_VD_GETDEVCAPS_SLOW_RATE 0x4004
  779. #define MCI_VD_GETDEVCAPS_NORMAL_RATE 0x4005
  780. #define MCI_VD_STEP_FRAMES 0x10000
  781. #define MCI_VD_STEP_REVERSE 0x20000
  782. #define MCI_VD_ESCAPE_STRING 256
  783. #define MCI_VD_FORMAT_TRACK 0x4001
  784. #define MCI_VD_PLAY_REVERSE 0x10000
  785. #define MCI_VD_PLAY_FAST 0x20000
  786. #define MCI_VD_MODE_PARK (MCI_VD_OFFSET + 1)
  787. #define MCI_VD_GETDEVCAPS_CAV 0x20000
  788. #define MCI_VD_SPIN_UP 0x10000
  789. #define MCI_VD_SPIN_DOWN 0x20000
  790. #define MCI_VD_SEEK_REVERSE 0x10000
  791. #define MCI_VD_STATUS_SPEED 0x4002
  792. #define MCI_VD_STATUS_FORWARD 0x4003
  793. #define MCI_VD_STATUS_MEDIA_TYPE 0x4004
  794. #define MCI_VD_STATUS_SIDE 0x4005
  795. #define MCI_VD_GETDEVCAPS_CAN_REVERSE 0x4002
  796. #define MCI_VD_MEDIA_CLV (MCI_VD_OFFSET + 2)
  797. #define MCI_VD_MEDIA_CAV (MCI_VD_OFFSET + 3)
  798. #define MCI_VD_MEDIA_OTHER (MCI_VD_OFFSET + 4)
  799. #define MCI_VD_STATUS_DISC_SIZE 0x4006
  800. #define MCI_VD_GETDEVCAPS_CLV 0x10000
  801. #define MCI_VD_PLAY_SPEED 0x40000
  802. #define MCI_VD_PLAY_SCAN 0x80000
  803. #define MCI_VD_PLAY_SLOW 0x100000
  804. #define MCI_WAVE_STATUS_CHANNELS 0x4002
  805. #define MCI_WAVE_STATUS_SAMPLESPERSEC 0x4003
  806. #define MCI_WAVE_PCM MCI_WAVE_OFFSET
  807. #define MCI_WAVE_MAPPER (MCI_WAVE_OFFSET+1)
  808. #define MCI_WAVE_OPEN_BUFFER 0x10000
  809. #define MCI_WAVE_STATUS_BITSPERSAMPLE 0x4006
  810. #define MCI_WAVE_STATUS_LEVEL 0x4007
  811. #define MCI_WAVE_SET_FORMATTAG 0x10000
  812. #define MCI_WAVE_SET_CHANNELS 0x20000
  813. #define MCI_WAVE_SET_SAMPLESPERSEC 0x40000
  814. #define MCI_WAVE_SET_AVGBYTESPERSEC 0x80000
  815. #define MCI_WAVE_SET_BLOCKALIGN 0x100000
  816. #define MCI_WAVE_SET_BITSPERSAMPLE 0x200000
  817. #define MCI_WAVE_INPUT 0x400000
  818. #define MCI_WAVE_OUTPUT 0x800000
  819. #define MCI_WAVE_STATUS_FORMATTAG 0x4001
  820. #define MCI_WAVE_SET_ANYINPUT 0x4000000
  821. #define MCI_WAVE_SET_ANYOUTPUT 0x8000000
  822. #define MCI_WAVE_GETDEVCAPS_INPUTS 0x4001
  823. #define MCI_WAVE_GETDEVCAPS_OUTPUTS 0x4002
  824. #define MCI_WAVE_STATUS_AVGBYTESPERSEC 0x4004
  825. #define MCI_WAVE_STATUS_BLOCKALIGN 0x4005
  826. #define MCI_CDA_STATUS_TYPE_TRACK 0x4001
  827. #define MCI_CDA_TRACK_AUDIO (MCI_CD_OFFSET)
  828. #define MCI_CDA_TRACK_OTHER (MCI_CD_OFFSET+1)
  829. #define MCI_SEQ_DIV_PPQN (MCI_SEQ_OFFSET)
  830. #define MCI_SEQ_DIV_SMPTE_24 (MCI_SEQ_OFFSET+1)
  831. #define MCI_SEQ_DIV_SMPTE_25 (MCI_SEQ_OFFSET+2)
  832. #define MCI_SEQ_DIV_SMPTE_30DROP (MCI_SEQ_OFFSET+3)
  833. #define MCI_SEQ_DIV_SMPTE_30 (MCI_SEQ_OFFSET+4)
  834. #define MCI_SEQ_FORMAT_SONGPTR 0x4001
  835. #define MCI_SEQ_FILE 0x4002
  836. #define MCI_SEQ_MIDI 0x4003
  837. #define MCI_SEQ_SMPTE 0x4004
  838. #define MCI_SEQ_NONE 65533
  839. #define MCI_SEQ_MAPPER 65535
  840. #define MCI_SEQ_STATUS_TEMPO 0x4002
  841. #define MCI_SEQ_STATUS_PORT 0x4003
  842. #define MCI_SEQ_STATUS_SLAVE 0x4007
  843. #define MCI_SEQ_STATUS_MASTER 0x4008
  844. #define MCI_SEQ_STATUS_OFFSET 0x4009
  845. #define MCI_SEQ_STATUS_DIVTYPE 0x400A
  846. #define MCI_SEQ_STATUS_NAME 0x400B
  847. #define MCI_SEQ_STATUS_COPYRIGHT 0x400C
  848. #define MCI_SEQ_SET_TEMPO 0x10000
  849. #define MCI_SEQ_SET_PORT 0x20000
  850. #define MCI_SEQ_SET_SLAVE 0x40000
  851. #define MCI_SEQ_SET_MASTER 0x80000
  852. #define MCI_SEQ_SET_OFFSET 0x1000000
  853. #define MCI_ANIM_PLAY_SLOW 0x80000
  854. #define MCI_ANIM_PLAY_SCAN 0x100000
  855. #define MCI_ANIM_GETDEVCAPS_SLOW_RATE 0x4003
  856. #define MCI_ANIM_GETDEVCAPS_NORMAL_RATE 0x4004
  857. #define MCI_ANIM_STEP_REVERSE 0x10000
  858. #define MCI_ANIM_STEP_FRAMES 0x20000
  859. #define MCI_ANIM_STATUS_SPEED 0x4001
  860. #define MCI_ANIM_GETDEVCAPS_PALETTES 0x4006
  861. #define MCI_ANIM_OPEN_WS 0x10000
  862. #define MCI_ANIM_OPEN_PARENT 0x20000
  863. #define MCI_ANIM_OPEN_NOSTATIC 0x40000
  864. #define MCI_ANIM_GETDEVCAPS_FAST_RATE 0x4002
  865. #define MCI_ANIM_PLAY_SPEED 0x10000
  866. #define MCI_ANIM_PLAY_REVERSE 0x20000
  867. #define MCI_ANIM_PLAY_FAST 0x40000
  868. #define MCI_ANIM_STATUS_FORWARD 0x4002
  869. #define MCI_ANIM_STATUS_HWND 0x4003
  870. #define MCI_ANIM_STATUS_HPAL 0x4004
  871. #define MCI_ANIM_STATUS_STRETCH 0x4005
  872. #define MCI_ANIM_INFO_TEXT 0x10000
  873. #define MCI_ANIM_GETDEVCAPS_CAN_REVERSE 0x4001
  874. #define MCI_ANIM_WINDOW_TEXT 0x80000
  875. #define MCI_ANIM_WINDOW_ENABLE_STRETCH 0x100000
  876. #define MCI_ANIM_WINDOW_DISABLE_STRETCH 0x200000
  877. #define MCI_ANIM_WINDOW_DEFAULT 0
  878. #define MCI_ANIM_RECT 0x10000
  879. #define MCI_ANIM_PUT_SOURCE 0x20000
  880. #define MCI_ANIM_PUT_DESTINATION 0x40000
  881. #define MCI_ANIM_WHERE_SOURCE 0x20000
  882. #define MCI_ANIM_WHERE_DESTINATION 0x40000
  883. #define MCI_ANIM_UPDATE_HDC 0x20000
  884. #define MCI_ANIM_GETDEVCAPS_CAN_STRETCH 0x4007
  885. #define MCI_ANIM_GETDEVCAPS_MAX_WINDOWS 0x4008
  886. #define MCI_ANIM_REALIZE_NORM 0x10000
  887. #define MCI_ANIM_REALIZE_BKGD 0x20000
  888. #define MCI_ANIM_WINDOW_HWND 0x10000
  889. #define MCI_ANIM_WINDOW_STATE 0x40000
  890. #define TIMERR_NOERROR 0
  891. #define TIMERR_NOCANDO (TIMERR_BASE+1)
  892. #define TIMERR_STRUCT (TIMERR_BASE+33)
  893. #define TIME_ONESHOT 0
  894. #define TIME_PERIODIC 1
  895. #define TIME_CALLBACK_FUNCTION 0
  896. #define TIME_CALLBACK_EVENT_SET 16
  897. #define TIME_CALLBACK_EVENT_PULSE 32
  898. #define MCI_OVLY_OPEN_WS 0x10000
  899. #define MCI_OVLY_OPEN_PARENT 0x20000
  900. #define MCI_OVLY_STATUS_HWND 0x4001
  901. #define MCI_OVLY_STATUS_STRETCH 0x4002
  902. #define MCI_OVLY_INFO_TEXT 0x10000
  903. #define MCI_OVLY_GETDEVCAPS_CAN_STRETCH 0x4001
  904. #define MCI_OVLY_GETDEVCAPS_CAN_FREEZE 0x4002
  905. #define MCI_OVLY_GETDEVCAPS_MAX_WINDOWS 0x4003
  906. #define MCI_OVLY_WINDOW_HWND 0x10000
  907. #define MCI_OVLY_WINDOW_STATE 0x40000
  908. #define MCI_OVLY_WINDOW_TEXT 0x80000
  909. #define MCI_OVLY_WINDOW_ENABLE_STRETCH 0x100000
  910. #define MCI_OVLY_WINDOW_DISABLE_STRETCH 0x200000
  911. #define MCI_OVLY_WINDOW_DEFAULT 0
  912. #define MCI_OVLY_RECT 0x10000
  913. #define MCI_OVLY_PUT_SOURCE 0x20000
  914. #define MCI_OVLY_PUT_DESTINATION 0x40000
  915. #define MCI_OVLY_PUT_FRAME 0x80000
  916. #define MCI_OVLY_PUT_VIDEO 0x100000
  917. #define MCI_OVLY_WHERE_SOURCE 0x20000
  918. #define MCI_OVLY_WHERE_DESTINATION 0x40000
  919. #define MCI_OVLY_WHERE_FRAME 0x80000
  920. #define MCI_OVLY_WHERE_VIDEO 0x100000
  921. #define AUX_MAPPER ((UINT)-1)
  922. #define MIXER_GETLINECONTROLSF_ONEBYID 1
  923. #define MIXER_GETLINECONTROLSF_ONEBYTYPE 2
  924. #define MIXER_GETLINECONTROLSF_ALL 0
  925. #define MIXER_GETLINECONTROLSF_QUERYMASK 0xF
  926. #ifndef NEWTRANSPARENT
  927. #define NEWTRANSPARENT 3
  928. #define QUERYROPSUPPORT 40
  929. #endif
  930. #define SELECTDIB 41
  931. #define DIBINDEX(n) MAKELONG((n),0x10FF)
  932. #ifndef SC_SCREENSAVE
  933. #define SC_SCREENSAVE 0xF140
  934. #endif
  935. #define AUXCAPS_CDAUDIO 1
  936. #define AUXCAPS_AUXIN 2
  937. #define AUXCAPS_VOLUME 1
  938. #define AUXCAPS_LRVOLUME 2
  939.  
  940. #ifdef UNICODE
  941. #define PlaySound PlaySoundW
  942. #define midiOutGetDevCaps midiOutGetDevCapsW
  943. #define midiOutGetErrorText midiOutGetErrorTextW
  944. #define waveInGetErrorText waveInGetErrorTextW
  945. #define waveInGetDevCaps waveInGetDevCapsW
  946. #define waveOutGetDevCaps waveOutGetDevCapsW
  947. #define waveOutGetErrorText waveOutGetErrorTextW
  948. #define auxGetDevCaps auxGetDevCapsW
  949. #define midiInGetErrorText midiInGetErrorTextW
  950. #define midiInGetDevCaps midiInGetDevCapsW
  951. #define mixerGetDevCaps mixerGetDevCapsW
  952. #define mixerGetLineInfo mixerGetLineInfoW
  953. #define mixerGetLineControls mixerGetLineControlsW
  954. #define mixerGetControlDetails mixerGetControlDetailsW
  955. #define mmioRename mmioRenameW
  956. #define mmioOpen mmioOpenW
  957. #define mmioInstallIOProc mmioInstallIOProcW
  958. #define mmioStringToFOURCC mmioStringToFOURCCW
  959. #define mciGetErrorString mciGetErrorStringW
  960. #define mciGetDeviceIDFromElementID mciGetDeviceIDFromElementIDW
  961. #define mciGetDeviceID mciGetDeviceIDW
  962. #define mciSendCommand mciSendCommandW
  963. #define mciSendString mciSendStringW
  964. #define joyGetDevCaps joyGetDevCapsW
  965. #else
  966. #define PlaySound PlaySoundA
  967. #define waveInGetErrorText waveInGetErrorTextA
  968. #define waveInGetDevCaps waveInGetDevCapsA
  969. #define waveOutGetDevCaps waveOutGetDevCapsA
  970. #define waveOutGetErrorText waveOutGetErrorTextA
  971. #define midiOutGetErrorText midiOutGetErrorTextA
  972. #define midiOutGetDevCaps midiOutGetDevCapsA
  973. #define midiInGetDevCaps midiInGetDevCapsA
  974. #define midiInGetErrorText midiInGetErrorTextA
  975. #define mixerGetDevCaps mixerGetDevCapsA
  976. #define mixerGetLineInfo mixerGetLineInfoA
  977. #define auxGetDevCaps auxGetDevCapsA
  978. #define mixerGetLineControls mixerGetLineControlsA
  979. #define mixerGetControlDetails mixerGetControlDetailsA
  980. #define mmioRename mmioRenameA
  981. #define mmioOpen mmioOpenA
  982. #define mmioInstallIOProc mmioInstallIOProcA
  983. #define mmioStringToFOURCC mmioStringToFOURCCA
  984. #define mciGetErrorString mciGetErrorStringA
  985. #define mciGetDeviceIDFromElementID mciGetDeviceIDFromElementIDA
  986. #define mciGetDeviceID mciGetDeviceIDA
  987. #define mciSendString mciSendStringA
  988. #define mciSendCommand mciSendCommandA
  989. #define joyGetDevCaps joyGetDevCapsA
  990. #endif
  991. ///////////////////////////////////////////////////////////
  992. // Structures and typedefs
  993. ///////////////////////////////////////////////////////////
  994. typedef struct _mmtime {
  995.     UINT wType;
  996.     union     {
  997.     DWORD ms;
  998.     DWORD sample;
  999.     DWORD cb;
  1000.     DWORD ticks;
  1001.     struct {
  1002.     BYTE hour;
  1003.     BYTE min;
  1004.     BYTE sec;
  1005.     BYTE frame;
  1006.     BYTE fps;
  1007.     BYTE dummy;
  1008.     BYTE pad[2];
  1009.     } smpte;
  1010.     struct {
  1011.         DWORD songptrpos;
  1012.     } midi;
  1013.     } u;
  1014. } MMTIME,*PMMTIME,*NPMMTIME,*LPMMTIME;
  1015. typedef struct _wavehdr {
  1016.     LPSTR lpData;
  1017.     DWORD dwBufferLength;
  1018.     DWORD dwBytesRecorded;
  1019.     DWORD dwUser;
  1020.     DWORD dwFlags;
  1021.     DWORD dwLoops;
  1022.     struct _wavehdr *lpNext;
  1023.     DWORD reserved;
  1024. } WAVEHDR,*PWAVEHDR,*NPWAVEHDR,*LPWAVEHDR;
  1025. typedef struct _WAVEOUTCAPSA {
  1026.     WORD wMid;
  1027.     WORD wPid;
  1028.     MMVERSION vDriverVersion;
  1029.     CHAR szPname[MAXPNAMELEN];
  1030.     DWORD dwFormats;
  1031.     WORD wChannels;
  1032.     WORD wReserved1;
  1033.     DWORD dwSupport;
  1034. } WAVEOUTCAPSA,*PWAVEOUTCAPSA,*NPWAVEOUTCAPSA,*LPWAVEOUTCAPSA;
  1035. typedef struct _WAVEOUTCAPSW {
  1036.     WORD wMid;
  1037.     WORD wPid;
  1038.     MMVERSION vDriverVersion;
  1039.     WCHAR szPname[MAXPNAMELEN];
  1040.     DWORD dwFormats;
  1041.     WORD wChannels;
  1042.     WORD wReserved1;
  1043.     DWORD dwSupport;
  1044. } WAVEOUTCAPSW,*PWAVEOUTCAPSW,*NPWAVEOUTCAPSW,*LPWAVEOUTCAPSW;
  1045. #ifdef UNICODE
  1046. typedef WAVEOUTCAPSW WAVEOUTCAPS;
  1047. typedef PWAVEOUTCAPSW PWAVEOUTCAPS;
  1048. typedef NPWAVEOUTCAPSW NPWAVEOUTCAPS;
  1049. typedef LPWAVEOUTCAPSW LPWAVEOUTCAPS;
  1050. #else
  1051. typedef WAVEOUTCAPSA WAVEOUTCAPS;
  1052. typedef PWAVEOUTCAPSA PWAVEOUTCAPS;
  1053. typedef NPWAVEOUTCAPSA NPWAVEOUTCAPS;
  1054. typedef LPWAVEOUTCAPSA LPWAVEOUTCAPS;
  1055. #endif
  1056. typedef struct _WAVEINCAPSA {
  1057.     WORD wMid;
  1058.     WORD wPid;
  1059.     MMVERSION vDriverVersion;
  1060.     CHAR szPname[MAXPNAMELEN];
  1061.     DWORD dwFormats;
  1062.     WORD wChannels;
  1063.     WORD wReserved1;
  1064. } WAVEINCAPSA,*PWAVEINCAPSA,*NPWAVEINCAPSA,*LPWAVEINCAPSA;
  1065. typedef struct _WAVEINCAPSW {
  1066.     WORD wMid;
  1067.     WORD wPid;
  1068.     MMVERSION vDriverVersion;
  1069.     WCHAR szPname[MAXPNAMELEN];
  1070.     DWORD dwFormats;
  1071.     WORD wChannels;
  1072.     WORD wReserved1;
  1073. } WAVEINCAPSW,*PWAVEINCAPSW,*NPWAVEINCAPSW,*LPWAVEINCAPSW;
  1074. #ifdef UNICODE
  1075. typedef WAVEINCAPSW WAVEINCAPS;
  1076. typedef PWAVEINCAPSW PWAVEINCAPS;
  1077. typedef NPWAVEINCAPSW NPWAVEINCAPS;
  1078. typedef LPWAVEINCAPSW LPWAVEINCAPS;
  1079. #else
  1080. typedef WAVEINCAPSA WAVEINCAPS;
  1081. typedef PWAVEINCAPSA PWAVEINCAPS;
  1082. typedef NPWAVEINCAPSA NPWAVEINCAPS;
  1083. typedef LPWAVEINCAPSA LPWAVEINCAPS;
  1084. #endif
  1085. typedef struct _waveformat {
  1086.     WORD wFormatTag;
  1087.     WORD nChannels;
  1088.     DWORD nSamplesPerSec;
  1089.     DWORD nAvgBytesPerSec;
  1090.     WORD nBlockAlign;
  1091. } WAVEFORMAT,*PWAVEFORMAT,*NPWAVEFORMAT,*LPWAVEFORMAT;
  1092. #define WAVE_FORMAT_PCM 1
  1093. typedef struct _pcmwaveformat {
  1094.     WAVEFORMAT wf;
  1095.     WORD wBitsPerSample;
  1096. } PCMWAVEFORMAT,*PPCMWAVEFORMAT,*NPPCMWAVEFORMAT,*LPPCMWAVEFORMAT;
  1097. #ifndef _WAVEFORMATEX_
  1098. #define _WAVEFORMATEX_
  1099. typedef struct _WAVEFORMATEX {
  1100.     WORD wFormatTag;
  1101.     WORD nChannels;
  1102.     DWORD nSamplesPerSec;
  1103.     DWORD nAvgBytesPerSec;
  1104.     WORD nBlockAlign;
  1105.     WORD wBitsPerSample;
  1106.     WORD cbSize;
  1107. } WAVEFORMATEX,*PWAVEFORMATEX,*NPWAVEFORMATEX,*LPWAVEFORMATEX;
  1108. typedef const WAVEFORMATEX *LPCWAVEFORMATEX;
  1109. #endif
  1110. typedef HANDLE HMIDI;
  1111. typedef HANDLE HMIDIIN;
  1112. typedef HANDLE HMIDIOUT;
  1113. typedef HANDLE HMIDISTRM;
  1114. typedef HMIDI *LPHMIDI;
  1115. typedef HMIDIIN *LPHMIDIIN;
  1116. typedef HMIDIOUT *LPHMIDIOUT;
  1117. typedef HMIDISTRM *LPHMIDISTRM;
  1118. typedef DRVCALLBACK MIDICALLBACK;
  1119. typedef MIDICALLBACK *LPMIDICALLBACK;
  1120. #define MIDIPATCHSIZE 128
  1121. typedef WORD PATCHARRAY[MIDIPATCHSIZE];
  1122. typedef WORD *LPPATCHARRAY;
  1123. typedef WORD KEYARRAY[MIDIPATCHSIZE];
  1124. typedef WORD *LPKEYARRAY;
  1125. typedef struct _MIDIOUTCAPSA {
  1126.     WORD wMid;
  1127.     WORD wPid;
  1128.     MMVERSION vDriverVersion;
  1129.     CHAR szPname[MAXPNAMELEN];
  1130.     WORD wTechnology;
  1131.     WORD wVoices;
  1132.     WORD wNotes;
  1133.     WORD wChannelMask;
  1134.     DWORD dwSupport;
  1135. } MIDIOUTCAPSA,*PMIDIOUTCAPSA,*NPMIDIOUTCAPSA,*LPMIDIOUTCAPSA;
  1136. typedef struct _MIDIOUTCAPSW {
  1137.     WORD wMid;
  1138.     WORD wPid;
  1139.     MMVERSION vDriverVersion;
  1140.     WCHAR szPname[MAXPNAMELEN];
  1141.     WORD wTechnology;
  1142.     WORD wVoices;
  1143.     WORD wNotes;
  1144.     WORD wChannelMask;
  1145.     DWORD dwSupport;
  1146. } MIDIOUTCAPSW,*PMIDIOUTCAPSW,*NPMIDIOUTCAPSW,*LPMIDIOUTCAPSW;
  1147. typedef struct _MIDIINCAPSA {
  1148.     WORD wMid;
  1149.     WORD wPid;
  1150.     MMVERSION vDriverVersion;
  1151.     CHAR szPname[MAXPNAMELEN];
  1152.     DWORD dwSupport;
  1153. } MIDIINCAPSA,*PMIDIINCAPSA,*NPMIDIINCAPSA,*LPMIDIINCAPSA;
  1154. typedef struct _MIDIINCAPSW {
  1155.     WORD wMid;
  1156.     WORD wPid;
  1157.     MMVERSION vDriverVersion;
  1158.     WCHAR szPname[MAXPNAMELEN];
  1159.     DWORD dwSupport;
  1160. } MIDIINCAPSW,*PMIDIINCAPSW,*NPMIDIINCAPSW,*LPMIDIINCAPSW;
  1161. #ifdef UNICODE
  1162. typedef MIDIINCAPSW MIDIINCAPS;
  1163. typedef PMIDIINCAPSW PMIDIINCAPS;
  1164. typedef NPMIDIINCAPSW NPMIDIINCAPS;
  1165. typedef LPMIDIINCAPSW LPMIDIINCAPS;
  1166. typedef MIDIOUTCAPSW MIDIOUTCAPS;
  1167. typedef PMIDIOUTCAPSW PMIDIOUTCAPS;
  1168. typedef NPMIDIOUTCAPSW NPMIDIOUTCAPS;
  1169. typedef LPMIDIOUTCAPSW LPMIDIOUTCAPS;
  1170. #else
  1171. typedef MIDIOUTCAPSA MIDIOUTCAPS;
  1172. typedef PMIDIOUTCAPSA PMIDIOUTCAPS;
  1173. typedef NPMIDIOUTCAPSA NPMIDIOUTCAPS;
  1174. typedef LPMIDIOUTCAPSA LPMIDIOUTCAPS;
  1175. typedef MIDIINCAPSA MIDIINCAPS;
  1176. typedef PMIDIINCAPSA PMIDIINCAPS;
  1177. typedef NPMIDIINCAPSA NPMIDIINCAPS;
  1178. typedef LPMIDIINCAPSA LPMIDIINCAPS;
  1179. #endif
  1180. typedef struct _midihdr {
  1181.     LPSTR lpData;
  1182.     DWORD dwBufferLength;
  1183.     DWORD dwBytesRecorded;
  1184.     DWORD dwUser;
  1185.     DWORD dwFlags;
  1186.     struct _midihdr *lpNext;
  1187.     DWORD reserved;
  1188.     DWORD dwOffset;
  1189.     DWORD dwReserved[8];
  1190. } MIDIHDR,*PMIDIHDR,*NPMIDIHDR,*LPMIDIHDR;
  1191. typedef struct _midievent {
  1192.     DWORD dwDeltaTime;
  1193.     DWORD dwStreamID;
  1194.     DWORD dwEvent;
  1195.     DWORD dwParms[1];
  1196. } MIDIEVENT;
  1197.  
  1198. typedef struct _midistrmbuffver {
  1199.     DWORD dwVersion;
  1200.     DWORD dwMid;
  1201.     DWORD dwOEMVersion;
  1202. } MIDISTRMBUFFVER;
  1203. typedef struct _midiproptimediv {
  1204.     DWORD cbStruct;
  1205.     DWORD dwTimeDiv;
  1206. } MIDIPROPTIMEDIV,*LPMIDIPROPTIMEDIV;
  1207. typedef struct _midiproptempo {
  1208.     DWORD cbStruct;
  1209.     DWORD dwTempo;
  1210. } MIDIPROPTEMPO,*LPMIDIPROPTEMPO;
  1211. typedef struct _AUXCAPSA {
  1212.     WORD wMid;
  1213.     WORD wPid;
  1214.     MMVERSION vDriverVersion;
  1215.     CHAR szPname[MAXPNAMELEN];
  1216.     WORD wTechnology;
  1217.     WORD wReserved1;
  1218.     DWORD dwSupport;
  1219. } AUXCAPSA,*PAUXCAPSA,*NPAUXCAPSA,*LPAUXCAPSA;
  1220. typedef struct _AUXCAPSW {
  1221.     WORD wMid;
  1222.     WORD wPid;
  1223.     MMVERSION vDriverVersion;
  1224.     WCHAR szPname[MAXPNAMELEN];
  1225.     WORD wTechnology;
  1226.     WORD wReserved1;
  1227.     DWORD dwSupport;
  1228. } AUXCAPSW,*PAUXCAPSW,*NPAUXCAPSW,*LPAUXCAPSW;
  1229. #ifdef UNICODE
  1230. typedef AUXCAPSW AUXCAPS;
  1231. typedef PAUXCAPSW PAUXCAPS;
  1232. typedef NPAUXCAPSW NPAUXCAPS;
  1233. typedef LPAUXCAPSW LPAUXCAPS;
  1234. #else
  1235. typedef AUXCAPSA AUXCAPS;
  1236. typedef PAUXCAPSA PAUXCAPS;
  1237. typedef NPAUXCAPSA NPAUXCAPS;
  1238. typedef LPAUXCAPSA LPAUXCAPS;
  1239. #endif
  1240. typedef HANDLE HMIXEROBJ;
  1241. typedef HMIXEROBJ *LPHMIXEROBJ;
  1242. typedef HANDLE HMIXER;
  1243. typedef HMIXER *LPHMIXER;
  1244. UINT mixerGetNumDevs(void);
  1245. typedef struct _MIXERCAPSA {
  1246.     WORD wMid;
  1247.     WORD wPid;
  1248.     MMVERSION vDriverVersion;
  1249.     CHAR szPname[MAXPNAMELEN];
  1250.     DWORD fdwSupport;
  1251.     DWORD cDestinations;
  1252. } MIXERCAPSA,*PMIXERCAPSA,*LPMIXERCAPSA;
  1253. typedef struct _MIXERCAPSW {
  1254.     WORD wMid;
  1255.     WORD wPid;
  1256.     MMVERSION vDriverVersion;
  1257.     WCHAR szPname[MAXPNAMELEN];
  1258.     DWORD fdwSupport;
  1259.     DWORD cDestinations;
  1260. } MIXERCAPSW,*PMIXERCAPSW,*LPMIXERCAPSW;
  1261. #ifdef UNICODE
  1262. typedef MIXERCAPSW MIXERCAPS;
  1263. typedef PMIXERCAPSW PMIXERCAPS;
  1264. typedef LPMIXERCAPSW LPMIXERCAPS;
  1265. #else
  1266. typedef MIXERCAPSA MIXERCAPS;
  1267. typedef PMIXERCAPSA PMIXERCAPS;
  1268. typedef LPMIXERCAPSA LPMIXERCAPS;
  1269. #endif
  1270. typedef struct _MIXERLINEA {
  1271.     DWORD cbStruct;
  1272.     DWORD dwDestination;
  1273.     DWORD dwSource;
  1274.     DWORD dwLineID;
  1275.     DWORD fdwLine;
  1276.     DWORD dwUser;
  1277.     DWORD dwComponentType;
  1278.     DWORD cChannels;
  1279.     DWORD cConnections;
  1280.     DWORD cControls;
  1281.     CHAR szShortName[MIXER_SHORT_NAME_CHARS];
  1282.     CHAR szName[MIXER_LONG_NAME_CHARS];
  1283.     struct {
  1284.     DWORD dwType;
  1285.     DWORD dwDeviceID;
  1286.     WORD wMid;
  1287.     WORD wPid;
  1288.     MMVERSION vDriverVersion;
  1289.     CHAR szPname[MAXPNAMELEN];
  1290.     } Target;
  1291. } MIXERLINEA,*PMIXERLINEA,*LPMIXERLINEA;
  1292. typedef struct _MIXERLINEW {
  1293.     DWORD cbStruct;
  1294.     DWORD dwDestination;
  1295.     DWORD dwSource;
  1296.     DWORD dwLineID;
  1297.     DWORD fdwLine;
  1298.     DWORD dwUser;
  1299.     DWORD dwComponentType;
  1300.     DWORD cChannels;
  1301.     DWORD cConnections;
  1302.     DWORD cControls;
  1303.     WCHAR szShortName[MIXER_SHORT_NAME_CHARS];
  1304.     WCHAR szName[MIXER_LONG_NAME_CHARS];
  1305.     struct {
  1306.         DWORD dwType;
  1307.         DWORD dwDeviceID;
  1308.         WORD wMid;
  1309.         WORD wPid;
  1310.         MMVERSION vDriverVersion;
  1311.         WCHAR szPname[MAXPNAMELEN];
  1312.     } Target;
  1313. } MIXERLINEW,*PMIXERLINEW,*LPMIXERLINEW;
  1314. #ifdef UNICODE
  1315. typedef MIXERLINEW MIXERLINE;
  1316. typedef PMIXERLINEW PMIXERLINE;
  1317. typedef LPMIXERLINEW LPMIXERLINE;
  1318. #else
  1319. typedef MIXERLINEA MIXERLINE;
  1320. typedef PMIXERLINEA PMIXERLINE;
  1321. typedef LPMIXERLINEA LPMIXERLINE;
  1322. #endif
  1323. typedef struct _MIXERCONTROLA {
  1324.     DWORD cbStruct;
  1325.     DWORD dwControlID;
  1326.     DWORD dwControlType;
  1327.     DWORD fdwControl;
  1328.     DWORD cMultipleItems;
  1329.     CHAR szShortName[MIXER_SHORT_NAME_CHARS];
  1330.     CHAR szName[MIXER_LONG_NAME_CHARS];
  1331.     union {
  1332.     struct {
  1333.         LONG lMinimum;
  1334.         LONG lMaximum;
  1335.     };
  1336.     struct {
  1337.         DWORD dwMinimum;
  1338.         DWORD dwMaximum;
  1339.     };
  1340.     DWORD dwReserved[6];
  1341.     } Bounds;
  1342.     union {
  1343.     DWORD cSteps;
  1344.     DWORD cbCustomData;
  1345.     DWORD dwReserved[6];
  1346.     } Metrics;
  1347. } MIXERCONTROLA,*PMIXERCONTROLA,*LPMIXERCONTROLA;
  1348. typedef struct _MIXERCONTROLW {
  1349.     DWORD cbStruct;
  1350.     DWORD dwControlID;
  1351.     DWORD dwControlType;
  1352.     DWORD fdwControl;
  1353.     DWORD cMultipleItems;
  1354.     WCHAR szShortName[MIXER_SHORT_NAME_CHARS];
  1355.     WCHAR szName[MIXER_LONG_NAME_CHARS];
  1356.     union {
  1357.     struct {
  1358.         LONG lMinimum;
  1359.         LONG lMaximum;
  1360.     };
  1361.     struct {
  1362.         DWORD dwMinimum;
  1363.         DWORD dwMaximum;
  1364.     };
  1365.     DWORD dwReserved[6];
  1366.     } Bounds;
  1367.     union {
  1368.     DWORD cSteps;
  1369.     DWORD cbCustomData;
  1370.     DWORD dwReserved[6];
  1371.     } Metrics;
  1372. } MIXERCONTROLW,*PMIXERCONTROLW,*LPMIXERCONTROLW;
  1373. #ifdef UNICODE
  1374. typedef MIXERCONTROLW MIXERCONTROL;
  1375. typedef PMIXERCONTROLW PMIXERCONTROL;
  1376. typedef LPMIXERCONTROLW LPMIXERCONTROL;
  1377. #else
  1378. typedef MIXERCONTROLA MIXERCONTROL;
  1379. typedef PMIXERCONTROLA PMIXERCONTROL;
  1380. typedef LPMIXERCONTROLA LPMIXERCONTROL;
  1381. #endif
  1382. typedef struct _MIXERLINECONTROLSA {
  1383.     DWORD cbStruct;
  1384.     DWORD dwLineID;
  1385.     union {
  1386.     DWORD dwControlID;
  1387.     DWORD dwControlType;
  1388.     };
  1389.     DWORD cControls;
  1390.     DWORD cbmxctrl;
  1391.     LPMIXERCONTROLA pamxctrl;
  1392. } MIXERLINECONTROLSA,*PMIXERLINECONTROLSA,*LPMIXERLINECONTROLSA;
  1393. typedef struct _MIXERLINECONTROLSW {
  1394.     DWORD cbStruct;
  1395.     DWORD dwLineID;
  1396.     union {
  1397.         DWORD dwControlID;
  1398.         DWORD dwControlType;
  1399.     };
  1400.     DWORD cControls;
  1401.     DWORD cbmxctrl;
  1402.     LPMIXERCONTROLW pamxctrl;
  1403. } MIXERLINECONTROLSW,*PMIXERLINECONTROLSW,*LPMIXERLINECONTROLSW;
  1404. #ifdef UNICODE
  1405. typedef MIXERLINECONTROLSW MIXERLINECONTROLS;
  1406. typedef PMIXERLINECONTROLSW PMIXERLINECONTROLS;
  1407. typedef LPMIXERLINECONTROLSW LPMIXERLINECONTROLS;
  1408. #else
  1409. typedef MIXERLINECONTROLSA MIXERLINECONTROLS;
  1410. typedef PMIXERLINECONTROLSA PMIXERLINECONTROLS;
  1411. typedef LPMIXERLINECONTROLSA LPMIXERLINECONTROLS;
  1412. #endif
  1413. typedef struct tMIXERCONTROLDETAILS {
  1414.     DWORD cbStruct;
  1415.     DWORD dwControlID;
  1416.     DWORD cChannels;
  1417.     union {
  1418.     HWND hwndOwner;
  1419.     DWORD cMultipleItems;
  1420.     };
  1421.     DWORD cbDetails;
  1422.     LPVOID paDetails;
  1423. } MIXERCONTROLDETAILS,*PMIXERCONTROLDETAILS,*LPMIXERCONTROLDETAILS;
  1424. typedef struct _MIXERCONTROLDETAILS_LISTTEXTA {
  1425.     DWORD dwParam1;
  1426.     DWORD dwParam2;
  1427.     CHAR szName[MIXER_LONG_NAME_CHARS];
  1428. } MIXERCONTROLDETAILS_LISTTEXTA,*PMIXERCONTROLDETAILS_LISTTEXTA,*LPMIXERCONTROLDETAILS_LISTTEXTA;
  1429. typedef struct _MIXERCONTROLDETAILS_LISTTEXTW {
  1430.     DWORD dwParam1;
  1431.     DWORD dwParam2;
  1432.     WCHAR szName[MIXER_LONG_NAME_CHARS];
  1433. } MIXERCONTROLDETAILS_LISTTEXTW,*PMIXERCONTROLDETAILS_LISTTEXTW,*LPMIXERCONTROLDETAILS_LISTTEXTW;
  1434. #ifdef UNICODE
  1435. typedef MIXERCONTROLDETAILS_LISTTEXTW MIXERCONTROLDETAILS_LISTTEXT;
  1436. typedef PMIXERCONTROLDETAILS_LISTTEXTW PMIXERCONTROLDETAILS_LISTTEXT;
  1437. typedef LPMIXERCONTROLDETAILS_LISTTEXTW LPMIXERCONTROLDETAILS_LISTTEXT;
  1438. #else
  1439. typedef MIXERCONTROLDETAILS_LISTTEXTA MIXERCONTROLDETAILS_LISTTEXT;
  1440. typedef PMIXERCONTROLDETAILS_LISTTEXTA PMIXERCONTROLDETAILS_LISTTEXT;
  1441. typedef LPMIXERCONTROLDETAILS_LISTTEXTA LPMIXERCONTROLDETAILS_LISTTEXT;
  1442. #endif
  1443. typedef struct _MIXERCONTROLDETAILS_BOOLEAN {
  1444.     LONG fValue;
  1445. } MIXERCONTROLDETAILS_BOOLEAN,
  1446.     *PMIXERCONTROLDETAILS_BOOLEAN,
  1447.     *LPMIXERCONTROLDETAILS_BOOLEAN;
  1448. typedef struct _MIXERCONTROLDETAILS_SIGNED {
  1449.     LONG lValue;
  1450. } MIXERCONTROLDETAILS_SIGNED,
  1451.     *PMIXERCONTROLDETAILS_SIGNED,
  1452.     *LPMIXERCONTROLDETAILS_SIGNED;
  1453.  
  1454. typedef struct _MIXERCONTROLDETAILS_UNSIGNED {
  1455.     DWORD dwValue;
  1456. } MIXERCONTROLDETAILS_UNSIGNED,
  1457.     *PMIXERCONTROLDETAILS_UNSIGNED,
  1458.     *LPMIXERCONTROLDETAILS_UNSIGNED;
  1459. typedef void (CALLBACK TIMECALLBACK)(UINT uTimerID,UINT uMsg,DWORD dwUser,DWORD dw1,DWORD dw2);
  1460. typedef TIMECALLBACK *LPTIMECALLBACK;
  1461. typedef struct _timecaps {
  1462.     UINT wPeriodMin;
  1463.     UINT wPeriodMax;
  1464. } TIMECAPS,*PTIMECAPS,*NPTIMECAPS,*LPTIMECAPS;
  1465. typedef struct _JOYCAPSA {
  1466.     WORD wMid;
  1467.     WORD wPid;
  1468.     CHAR szPname[MAXPNAMELEN];
  1469.     UINT wXmin;
  1470.     UINT wXmax;
  1471.     UINT wYmin;
  1472.     UINT wYmax;
  1473.     UINT wZmin;
  1474.     UINT wZmax;
  1475.     UINT wNumButtons;
  1476.     UINT wPeriodMin;
  1477.     UINT wPeriodMax;
  1478.     UINT wRmin;
  1479.     UINT wRmax;
  1480.     UINT wUmin;
  1481.     UINT wUmax;
  1482.     UINT wVmin;
  1483.     UINT wVmax;
  1484.     UINT wCaps;
  1485.     UINT wMaxAxes;
  1486.     UINT wNumAxes;
  1487.     UINT wMaxButtons;
  1488.     CHAR szRegKey[MAXPNAMELEN];
  1489.     CHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME];
  1490. } JOYCAPSA,*PJOYCAPSA,*NPJOYCAPSA,*LPJOYCAPSA;
  1491. typedef struct _JOYCAPSW {
  1492.     WORD wMid;
  1493.     WORD wPid;
  1494.     WCHAR szPname[MAXPNAMELEN];
  1495.     UINT wXmin;
  1496.     UINT wXmax;
  1497.     UINT wYmin;
  1498.     UINT wYmax;
  1499.     UINT wZmin;
  1500.     UINT wZmax;
  1501.     UINT wNumButtons;
  1502.     UINT wPeriodMin;
  1503.     UINT wPeriodMax;
  1504.     UINT wRmin;
  1505.     UINT wRmax;
  1506.     UINT wUmin;
  1507.     UINT wUmax;
  1508.     UINT wVmin;
  1509.     UINT wVmax;
  1510.     UINT wCaps;
  1511.     UINT wMaxAxes;
  1512.     UINT wNumAxes;
  1513.     UINT wMaxButtons;
  1514.     WCHAR szRegKey[MAXPNAMELEN];
  1515.     WCHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME];
  1516. } JOYCAPSW,*PJOYCAPSW,*NPJOYCAPSW,*LPJOYCAPSW;
  1517. #ifdef UNICODE
  1518. typedef JOYCAPSW JOYCAPS;
  1519. typedef PJOYCAPSW PJOYCAPS;
  1520. typedef NPJOYCAPSW NPJOYCAPS;
  1521. typedef LPJOYCAPSW LPJOYCAPS;
  1522. #else
  1523. typedef JOYCAPSA JOYCAPS;
  1524. typedef PJOYCAPSA PJOYCAPS;
  1525. typedef NPJOYCAPSA NPJOYCAPS;
  1526. typedef LPJOYCAPSA LPJOYCAPS;
  1527. #endif
  1528. typedef struct _joyinfo {
  1529.     UINT wXpos;
  1530.     UINT wYpos;
  1531.     UINT wZpos;
  1532.     UINT wButtons;
  1533. } JOYINFO,*PJOYINFO,*NPJOYINFO,*LPJOYINFO;
  1534. typedef struct _joyinfoex {
  1535.     DWORD dwSize;
  1536.     DWORD dwFlags;
  1537.     DWORD dwXpos;
  1538.     DWORD dwYpos;
  1539.     DWORD dwZpos;
  1540.     DWORD dwRpos;
  1541.     DWORD dwUpos;
  1542.     DWORD dwVpos;
  1543.     DWORD dwButtons;
  1544.     DWORD dwButtonNumber;
  1545.     DWORD dwPOV;
  1546.     DWORD dwReserved1;
  1547.     DWORD dwReserved2;
  1548. } JOYINFOEX,*PJOYINFOEX,*NPJOYINFOEX,*LPJOYINFOEX;
  1549. typedef DWORD FOURCC;
  1550. typedef char * HPSTR;
  1551. typedef HANDLE HMMIO;
  1552. typedef LRESULT (CALLBACK MMIOPROC)(LPSTR,UINT,LPARAM,LPARAM);
  1553. typedef MMIOPROC *LPMMIOPROC;
  1554. typedef struct _MMIOINFO {
  1555.     DWORD dwFlags;
  1556.     FOURCC fccIOProc;
  1557.     LPMMIOPROC pIOProc;
  1558.     UINT wErrorRet;
  1559.     HTASK htask;
  1560.     LONG cchBuffer;
  1561.     HPSTR pchBuffer;
  1562.     HPSTR pchNext;
  1563.     HPSTR pchEndRead;
  1564.     HPSTR pchEndWrite;
  1565.     LONG lBufOffset;
  1566.     LONG lDiskOffset;
  1567.     DWORD adwInfo[3];
  1568.     DWORD dwReserved1;
  1569.     DWORD dwReserved2;
  1570.     HMMIO hmmio;
  1571. } MMIOINFO,*PMMIOINFO,*NPMMIOINFO,*LPMMIOINFO;
  1572. typedef MMIOINFO *LPCMMIOINFO;
  1573. typedef struct _MMCKINFO {
  1574.     FOURCC ckid;
  1575.     DWORD cksize;
  1576.     FOURCC fccType;
  1577.     DWORD dwDataOffset;
  1578.     DWORD dwFlags;
  1579. } MMCKINFO,*PMMCKINFO,*NPMMCKINFO,*LPMMCKINFO;
  1580. typedef MMCKINFO *LPCMMCKINFO;
  1581. #ifndef _MCIERROR_
  1582. #define _MCIERROR_
  1583. typedef DWORD MCIERROR;
  1584. #endif
  1585. #ifndef _MCIDEVICEID_
  1586. #define _MCIDEVICEID_
  1587. typedef UINT MCIDEVICEID;
  1588. #endif
  1589. typedef UINT (CALLBACK *YIELDPROC)(MCIDEVICEID mciId,DWORD dwYieldData);
  1590. typedef struct _MCI_GENERIC_PARMS {
  1591.     DWORD dwCallback;
  1592. } MCI_GENERIC_PARMS,*PMCI_GENERIC_PARMS,*LPMCI_GENERIC_PARMS;
  1593. typedef struct _MCI_OPEN_PARMSA {
  1594.     DWORD dwCallback;
  1595.     MCIDEVICEID wDeviceID;
  1596.     LPCSTR lpstrDeviceType;
  1597.     LPCSTR lpstrElementName;
  1598.     LPCSTR lpstrAlias;
  1599. } MCI_OPEN_PARMSA,*PMCI_OPEN_PARMSA,*LPMCI_OPEN_PARMSA;
  1600. typedef struct _MCI_OPEN_PARMSW {
  1601.     DWORD dwCallback;
  1602.     MCIDEVICEID wDeviceID;
  1603.     LPCWSTR lpstrDeviceType;
  1604.     LPCWSTR lpstrElementName;
  1605.     LPCWSTR lpstrAlias;
  1606. } MCI_OPEN_PARMSW,*PMCI_OPEN_PARMSW,*LPMCI_OPEN_PARMSW;
  1607. #ifdef UNICODE
  1608. typedef MCI_OPEN_PARMSW MCI_OPEN_PARMS;
  1609. typedef PMCI_OPEN_PARMSW PMCI_OPEN_PARMS;
  1610. typedef LPMCI_OPEN_PARMSW LPMCI_OPEN_PARMS;
  1611. #else
  1612. typedef MCI_OPEN_PARMSA MCI_OPEN_PARMS;
  1613. typedef PMCI_OPEN_PARMSA PMCI_OPEN_PARMS;
  1614. typedef LPMCI_OPEN_PARMSA LPMCI_OPEN_PARMS;
  1615. #endif
  1616. typedef struct _MCI_PLAY_PARMS {
  1617.     DWORD dwCallback;
  1618.     DWORD dwFrom;
  1619.     DWORD dwTo;
  1620. } MCI_PLAY_PARMS,*PMCI_PLAY_PARMS,*LPMCI_PLAY_PARMS;
  1621. typedef struct _MCI_SEEK_PARMS {
  1622.     DWORD dwCallback;
  1623.     DWORD dwTo;
  1624. } MCI_SEEK_PARMS,*PMCI_SEEK_PARMS,*LPMCI_SEEK_PARMS;
  1625. typedef struct _MCI_STATUS_PARMS {
  1626.     DWORD dwCallback;
  1627.     DWORD dwReturn;
  1628.     DWORD dwItem;
  1629.     DWORD dwTrack;
  1630. } MCI_STATUS_PARMS,*PMCI_STATUS_PARMS,* LPMCI_STATUS_PARMS;
  1631. typedef struct _MCI_INFO_PARMSA {
  1632.     DWORD dwCallback;
  1633.     LPSTR lpstrReturn;
  1634.     DWORD dwRetSize;
  1635. } MCI_INFO_PARMSA,* LPMCI_INFO_PARMSA;
  1636. typedef struct _MCI_INFO_PARMSW {
  1637.     DWORD dwCallback;
  1638.     LPWSTR lpstrReturn;
  1639.     DWORD dwRetSize;
  1640. } MCI_INFO_PARMSW,* LPMCI_INFO_PARMSW;
  1641. #ifdef UNICODE
  1642. typedef MCI_INFO_PARMSW MCI_INFO_PARMS;
  1643. typedef LPMCI_INFO_PARMSW LPMCI_INFO_PARMS;
  1644. #else
  1645. typedef MCI_INFO_PARMSA MCI_INFO_PARMS;
  1646. typedef LPMCI_INFO_PARMSA LPMCI_INFO_PARMS;
  1647. #endif
  1648. typedef struct _MCI_GETDEVCAPS_PARMS {
  1649.     DWORD dwCallback;
  1650.     DWORD dwReturn;
  1651.     DWORD dwItem;
  1652. } MCI_GETDEVCAPS_PARMS,*PMCI_GETDEVCAPS_PARMS,* LPMCI_GETDEVCAPS_PARMS;
  1653. typedef struct _MCI_SYSINFO_PARMSA {
  1654.     DWORD dwCallback;
  1655.     LPSTR lpstrReturn;
  1656.     DWORD dwRetSize;
  1657.     DWORD dwNumber;
  1658.     UINT wDeviceType;
  1659. } MCI_SYSINFO_PARMSA,*PMCI_SYSINFO_PARMSA,* LPMCI_SYSINFO_PARMSA;
  1660. typedef struct _MCI_SYSINFO_PARMSW {
  1661.     DWORD dwCallback;
  1662.     LPWSTR lpstrReturn;
  1663.     DWORD dwRetSize;
  1664.     DWORD dwNumber;
  1665.     UINT wDeviceType;
  1666. } MCI_SYSINFO_PARMSW,*PMCI_SYSINFO_PARMSW,* LPMCI_SYSINFO_PARMSW;
  1667. #ifdef UNICODE
  1668. typedef MCI_SYSINFO_PARMSW MCI_SYSINFO_PARMS;
  1669. typedef PMCI_SYSINFO_PARMSW PMCI_SYSINFO_PARMS;
  1670. typedef LPMCI_SYSINFO_PARMSW LPMCI_SYSINFO_PARMS;
  1671. #else
  1672. typedef MCI_SYSINFO_PARMSA MCI_SYSINFO_PARMS;
  1673. typedef PMCI_SYSINFO_PARMSA PMCI_SYSINFO_PARMS;
  1674. typedef LPMCI_SYSINFO_PARMSA LPMCI_SYSINFO_PARMS;
  1675. #endif
  1676. typedef struct _MCI_SET_PARMS {
  1677.     DWORD dwCallback;
  1678.     DWORD dwTimeFormat;
  1679.     DWORD dwAudio;
  1680. } MCI_SET_PARMS,*PMCI_SET_PARMS,*LPMCI_SET_PARMS;
  1681. typedef struct _MCI_BREAK_PARMS {
  1682.     DWORD dwCallback;
  1683.     int nVirtKey;
  1684.     HWND hwndBreak;
  1685. } MCI_BREAK_PARMS,*PMCI_BREAK_PARMS,* LPMCI_BREAK_PARMS;
  1686. typedef struct _MCI_SAVE_PARMSA {
  1687.     DWORD dwCallback;
  1688.     LPCSTR lpfilename;
  1689. } MCI_SAVE_PARMSA,*PMCI_SAVE_PARMSA,* LPMCI_SAVE_PARMSA;
  1690. typedef struct _MCI_SAVE_PARMSW {
  1691.     DWORD dwCallback;
  1692.     LPCWSTR lpfilename;
  1693. } MCI_SAVE_PARMSW,*PMCI_SAVE_PARMSW,* LPMCI_SAVE_PARMSW;
  1694. #ifdef UNICODE
  1695. typedef MCI_SAVE_PARMSW MCI_SAVE_PARMS;
  1696. typedef PMCI_SAVE_PARMSW PMCI_SAVE_PARMS;
  1697. typedef LPMCI_SAVE_PARMSW LPMCI_SAVE_PARMS;
  1698. #else
  1699. typedef MCI_SAVE_PARMSA MCI_SAVE_PARMS;
  1700. typedef PMCI_SAVE_PARMSA PMCI_SAVE_PARMS;
  1701. typedef LPMCI_SAVE_PARMSA LPMCI_SAVE_PARMS;
  1702. #endif
  1703. typedef struct _MCI_LOAD_PARMSA {
  1704.     DWORD dwCallback;
  1705.     LPCSTR lpfilename;
  1706. } MCI_LOAD_PARMSA,*PMCI_LOAD_PARMSA,* LPMCI_LOAD_PARMSA;
  1707. typedef struct _MCI_LOAD_PARMSW {
  1708.     DWORD dwCallback;
  1709.     LPCWSTR lpfilename;
  1710. } MCI_LOAD_PARMSW,*PMCI_LOAD_PARMSW,* LPMCI_LOAD_PARMSW;
  1711. #ifdef UNICODE
  1712. typedef MCI_LOAD_PARMSW MCI_LOAD_PARMS;
  1713. typedef PMCI_LOAD_PARMSW PMCI_LOAD_PARMS;
  1714. typedef LPMCI_LOAD_PARMSW LPMCI_LOAD_PARMS;
  1715. #else
  1716. typedef MCI_LOAD_PARMSA MCI_LOAD_PARMS;
  1717. typedef PMCI_LOAD_PARMSA PMCI_LOAD_PARMS;
  1718. typedef LPMCI_LOAD_PARMSA LPMCI_LOAD_PARMS;
  1719. #endif
  1720. typedef struct _MCI_RECORD_PARMS {
  1721.     DWORD dwCallback;
  1722.     DWORD dwFrom;
  1723.     DWORD dwTo;
  1724. } MCI_RECORD_PARMS,*LPMCI_RECORD_PARMS;
  1725. typedef struct _MCI_VD_PLAY_PARMS {
  1726.     DWORD dwCallback;
  1727.     DWORD dwFrom;
  1728.     DWORD dwTo;
  1729.     DWORD dwSpeed;
  1730. } MCI_VD_PLAY_PARMS,*PMCI_VD_PLAY_PARMS,*LPMCI_VD_PLAY_PARMS;
  1731. typedef struct _MCI_VD_STEP_PARMS {
  1732.     DWORD dwCallback;
  1733.     DWORD dwFrames;
  1734. } MCI_VD_STEP_PARMS,*PMCI_VD_STEP_PARMS,*LPMCI_VD_STEP_PARMS;
  1735. typedef struct _MCI_VD_ESCAPE_PARMSA {
  1736.     DWORD dwCallback;
  1737.     LPCSTR lpstrCommand;
  1738. } MCI_VD_ESCAPE_PARMSA,*PMCI_VD_ESCAPE_PARMSA,*LPMCI_VD_ESCAPE_PARMSA;
  1739. typedef struct _MCI_VD_ESCAPE_PARMSW {
  1740.     DWORD dwCallback;
  1741.     LPCWSTR lpstrCommand;
  1742. } MCI_VD_ESCAPE_PARMSW,*PMCI_VD_ESCAPE_PARMSW,*LPMCI_VD_ESCAPE_PARMSW;
  1743. #ifdef UNICODE
  1744. typedef MCI_VD_ESCAPE_PARMSW MCI_VD_ESCAPE_PARMS;
  1745. typedef PMCI_VD_ESCAPE_PARMSW PMCI_VD_ESCAPE_PARMS;
  1746. typedef LPMCI_VD_ESCAPE_PARMSW LPMCI_VD_ESCAPE_PARMS;
  1747. #else
  1748. typedef MCI_VD_ESCAPE_PARMSA MCI_VD_ESCAPE_PARMS;
  1749. typedef PMCI_VD_ESCAPE_PARMSA PMCI_VD_ESCAPE_PARMS;
  1750. typedef LPMCI_VD_ESCAPE_PARMSA LPMCI_VD_ESCAPE_PARMS;
  1751. #endif
  1752. typedef struct _MCI_WAVE_OPEN_PARMSA {
  1753.     DWORD dwCallback;
  1754.     MCIDEVICEID wDeviceID;
  1755.     LPCSTR lpstrDeviceType;
  1756.     LPCSTR lpstrElementName;
  1757.     LPCSTR lpstrAlias;
  1758.     DWORD dwBufferSeconds;
  1759. } MCI_WAVE_OPEN_PARMSA,*PMCI_WAVE_OPEN_PARMSA,*LPMCI_WAVE_OPEN_PARMSA;
  1760. typedef struct _MCI_WAVE_OPEN_PARMSW {
  1761.     DWORD dwCallback;
  1762.     MCIDEVICEID wDeviceID;
  1763.     LPCWSTR lpstrDeviceType;
  1764.     LPCWSTR lpstrElementName;
  1765.     LPCWSTR lpstrAlias;
  1766.     DWORD dwBufferSeconds;
  1767. } MCI_WAVE_OPEN_PARMSW,*PMCI_WAVE_OPEN_PARMSW,*LPMCI_WAVE_OPEN_PARMSW;
  1768. #ifdef UNICODE
  1769. typedef MCI_WAVE_OPEN_PARMSW MCI_WAVE_OPEN_PARMS;
  1770. typedef PMCI_WAVE_OPEN_PARMSW PMCI_WAVE_OPEN_PARMS;
  1771. typedef LPMCI_WAVE_OPEN_PARMSW LPMCI_WAVE_OPEN_PARMS;
  1772. #else
  1773. typedef MCI_WAVE_OPEN_PARMSA MCI_WAVE_OPEN_PARMS;
  1774. typedef PMCI_WAVE_OPEN_PARMSA PMCI_WAVE_OPEN_PARMS;
  1775. typedef LPMCI_WAVE_OPEN_PARMSA LPMCI_WAVE_OPEN_PARMS;
  1776. #endif
  1777. typedef struct _MCI_WAVE_DELETE_PARMS {
  1778.     DWORD dwCallback;
  1779.     DWORD dwFrom;
  1780.     DWORD dwTo;
  1781. } MCI_WAVE_DELETE_PARMS,*PMCI_WAVE_DELETE_PARMS,*LPMCI_WAVE_DELETE_PARMS;
  1782. typedef struct _MCI_WAVE_SET_PARMS {
  1783.     DWORD dwCallback;
  1784.     DWORD dwTimeFormat;
  1785.     DWORD dwAudio;
  1786.     UINT wInput;
  1787.     UINT wOutput;
  1788.     WORD wFormatTag;
  1789.     WORD wReserved2;
  1790.     WORD nChannels;
  1791.     WORD wReserved3;
  1792.     DWORD nSamplesPerSec;
  1793.     DWORD nAvgBytesPerSec;
  1794.     WORD nBlockAlign;
  1795.     WORD wReserved4;
  1796.     WORD wBitsPerSample;
  1797.     WORD wReserved5;
  1798. } MCI_WAVE_SET_PARMS,*PMCI_WAVE_SET_PARMS,* LPMCI_WAVE_SET_PARMS;
  1799. typedef struct _MCI_SEQ_SET_PARMS {
  1800.     DWORD dwCallback;
  1801.     DWORD dwTimeFormat;
  1802.     DWORD dwAudio;
  1803.     DWORD dwTempo;
  1804.     DWORD dwPort;
  1805.     DWORD dwSlave;
  1806.     DWORD dwMaster;
  1807.     DWORD dwOffset;
  1808. } MCI_SEQ_SET_PARMS,*PMCI_SEQ_SET_PARMS,* LPMCI_SEQ_SET_PARMS;
  1809. typedef struct _MCI_ANIM_OPEN_PARMSA {
  1810.     DWORD dwCallback;
  1811.     MCIDEVICEID wDeviceID;
  1812.     LPCSTR lpstrDeviceType;
  1813.     LPCSTR lpstrElementName;
  1814.     LPCSTR lpstrAlias;
  1815.     DWORD dwStyle;
  1816.     HWND hWndParent;
  1817. } MCI_ANIM_OPEN_PARMSA,*PMCI_ANIM_OPEN_PARMSA,*LPMCI_ANIM_OPEN_PARMSA;
  1818. typedef struct _MCI_ANIM_OPEN_PARMSW {
  1819.     DWORD dwCallback;
  1820.     MCIDEVICEID wDeviceID;
  1821.     LPCWSTR lpstrDeviceType;
  1822.     LPCWSTR lpstrElementName;
  1823.     LPCWSTR lpstrAlias;
  1824.     DWORD dwStyle;
  1825.     HWND hWndParent;
  1826. } MCI_ANIM_OPEN_PARMSW,*PMCI_ANIM_OPEN_PARMSW,*LPMCI_ANIM_OPEN_PARMSW;
  1827. #ifdef UNICODE
  1828. typedef MCI_ANIM_OPEN_PARMSW MCI_ANIM_OPEN_PARMS;
  1829. typedef PMCI_ANIM_OPEN_PARMSW PMCI_ANIM_OPEN_PARMS;
  1830. typedef LPMCI_ANIM_OPEN_PARMSW LPMCI_ANIM_OPEN_PARMS;
  1831. #else
  1832. typedef MCI_ANIM_OPEN_PARMSA MCI_ANIM_OPEN_PARMS;
  1833. typedef PMCI_ANIM_OPEN_PARMSA PMCI_ANIM_OPEN_PARMS;
  1834. typedef LPMCI_ANIM_OPEN_PARMSA LPMCI_ANIM_OPEN_PARMS;
  1835. #endif
  1836. typedef struct _MCI_ANIM_WINDOW_PARMSW {
  1837.     DWORD dwCallback;
  1838.     HWND hWnd;
  1839.     UINT nCmdShow;
  1840.     LPCWSTR lpstrText;
  1841. } MCI_ANIM_WINDOW_PARMSW,*PMCI_ANIM_WINDOW_PARMSW,* LPMCI_ANIM_WINDOW_PARMSW;
  1842. typedef struct _MCI_ANIM_STEP_PARMS {
  1843.     DWORD dwCallback;
  1844.     DWORD dwFrames;
  1845. } MCI_ANIM_STEP_PARMS,*PMCI_ANIM_STEP_PARMS,*LPMCI_ANIM_STEP_PARMS;
  1846. typedef struct _MCI_ANIM_WINDOW_PARMSA {
  1847.     DWORD dwCallback;
  1848.     HWND hWnd;
  1849.     UINT nCmdShow;
  1850.     LPCSTR lpstrText;
  1851. } MCI_ANIM_WINDOW_PARMSA,*PMCI_ANIM_WINDOW_PARMSA,* LPMCI_ANIM_WINDOW_PARMSA;
  1852. typedef struct _MCI_ANIM_PLAY_PARMS {
  1853.     DWORD dwCallback;
  1854.     DWORD dwFrom;
  1855.     DWORD dwTo;
  1856.     DWORD dwSpeed;
  1857. } MCI_ANIM_PLAY_PARMS,*PMCI_ANIM_PLAY_PARMS,*LPMCI_ANIM_PLAY_PARMS;
  1858. #ifdef UNICODE
  1859. typedef MCI_ANIM_WINDOW_PARMSW MCI_ANIM_WINDOW_PARMS;
  1860. typedef PMCI_ANIM_WINDOW_PARMSW PMCI_ANIM_WINDOW_PARMS;
  1861. typedef LPMCI_ANIM_WINDOW_PARMSW LPMCI_ANIM_WINDOW_PARMS;
  1862. #else
  1863. typedef MCI_ANIM_WINDOW_PARMSA MCI_ANIM_WINDOW_PARMS;
  1864. typedef PMCI_ANIM_WINDOW_PARMSA PMCI_ANIM_WINDOW_PARMS;
  1865. typedef LPMCI_ANIM_WINDOW_PARMSA LPMCI_ANIM_WINDOW_PARMS;
  1866. #endif
  1867. typedef struct _MCI_ANIM_RECT_PARMS {
  1868.     DWORD dwCallback;
  1869.     RECT rc;
  1870. } MCI_ANIM_RECT_PARMS;
  1871. typedef MCI_ANIM_RECT_PARMS * PMCI_ANIM_RECT_PARMS;
  1872. typedef MCI_ANIM_RECT_PARMS * LPMCI_ANIM_RECT_PARMS;
  1873. typedef struct _MCI_ANIM_UPDATE_PARMS {
  1874.     DWORD dwCallback;
  1875.     RECT rc;
  1876.     HDC hDC;
  1877. } MCI_ANIM_UPDATE_PARMS,*PMCI_ANIM_UPDATE_PARMS,* LPMCI_ANIM_UPDATE_PARMS;
  1878. typedef struct _MCI_OVLY_OPEN_PARMSA {
  1879.     DWORD dwCallback;
  1880.     MCIDEVICEID wDeviceID;
  1881.     LPCSTR lpstrDeviceType;
  1882.     LPCSTR lpstrElementName;
  1883.     LPCSTR lpstrAlias;
  1884.     DWORD dwStyle;
  1885.     HWND hWndParent;
  1886. } MCI_OVLY_OPEN_PARMSA,*PMCI_OVLY_OPEN_PARMSA,*LPMCI_OVLY_OPEN_PARMSA;
  1887. typedef struct _MCI_OVLY_OPEN_PARMSW {
  1888.     DWORD dwCallback;
  1889.     MCIDEVICEID wDeviceID;
  1890.     LPCWSTR lpstrDeviceType;
  1891.     LPCWSTR lpstrElementName;
  1892.     LPCWSTR lpstrAlias;
  1893.     DWORD dwStyle;
  1894.     HWND hWndParent;
  1895. } MCI_OVLY_OPEN_PARMSW,*PMCI_OVLY_OPEN_PARMSW,*LPMCI_OVLY_OPEN_PARMSW;
  1896. #ifdef UNICODE
  1897. typedef MCI_OVLY_OPEN_PARMSW MCI_OVLY_OPEN_PARMS;
  1898. typedef PMCI_OVLY_OPEN_PARMSW PMCI_OVLY_OPEN_PARMS;
  1899. typedef LPMCI_OVLY_OPEN_PARMSW LPMCI_OVLY_OPEN_PARMS;
  1900. #else
  1901. typedef MCI_OVLY_OPEN_PARMSA MCI_OVLY_OPEN_PARMS;
  1902. typedef PMCI_OVLY_OPEN_PARMSA PMCI_OVLY_OPEN_PARMS;
  1903. typedef LPMCI_OVLY_OPEN_PARMSA LPMCI_OVLY_OPEN_PARMS;
  1904. #endif
  1905. typedef struct _MCI_OVLY_WINDOW_PARMSA {
  1906.     DWORD dwCallback;
  1907.     HWND hWnd;
  1908.     UINT nCmdShow;
  1909.     LPCSTR lpstrText;
  1910. } MCI_OVLY_WINDOW_PARMSA,*PMCI_OVLY_WINDOW_PARMSA,* LPMCI_OVLY_WINDOW_PARMSA;
  1911. typedef struct _MCI_OVLY_WINDOW_PARMSW {
  1912.     DWORD dwCallback;
  1913.     HWND hWnd;
  1914.     UINT nCmdShow;
  1915.     LPCWSTR lpstrText;
  1916. } MCI_OVLY_WINDOW_PARMSW,*PMCI_OVLY_WINDOW_PARMSW,* LPMCI_OVLY_WINDOW_PARMSW;
  1917. #ifdef UNICODE
  1918. typedef MCI_OVLY_WINDOW_PARMSW MCI_OVLY_WINDOW_PARMS;
  1919. typedef PMCI_OVLY_WINDOW_PARMSW PMCI_OVLY_WINDOW_PARMS;
  1920. typedef LPMCI_OVLY_WINDOW_PARMSW LPMCI_OVLY_WINDOW_PARMS;
  1921. #else
  1922. typedef MCI_OVLY_WINDOW_PARMSA MCI_OVLY_WINDOW_PARMS;
  1923. typedef PMCI_OVLY_WINDOW_PARMSA PMCI_OVLY_WINDOW_PARMS;
  1924. typedef LPMCI_OVLY_WINDOW_PARMSA LPMCI_OVLY_WINDOW_PARMS;
  1925. #endif
  1926. typedef struct _MCI_OVLY_RECT_PARMS {
  1927.     DWORD dwCallback;
  1928.     RECT rc;
  1929. } MCI_OVLY_RECT_PARMS,*PMCI_OVLY_RECT_PARMS,* LPMCI_OVLY_RECT_PARMS;
  1930. typedef struct _MCI_OVLY_SAVE_PARMSA {
  1931.     DWORD dwCallback;
  1932.     LPCSTR lpfilename;
  1933.     RECT rc;
  1934. } MCI_OVLY_SAVE_PARMSA,*PMCI_OVLY_SAVE_PARMSA,* LPMCI_OVLY_SAVE_PARMSA;
  1935. typedef struct _MCI_OVLY_SAVE_PARMSW {
  1936.     DWORD dwCallback;
  1937.     LPCWSTR lpfilename;
  1938.     RECT rc;
  1939. } MCI_OVLY_SAVE_PARMSW,*PMCI_OVLY_SAVE_PARMSW,* LPMCI_OVLY_SAVE_PARMSW;
  1940. #ifdef UNICODE
  1941. typedef MCI_OVLY_SAVE_PARMSW MCI_OVLY_SAVE_PARMS;
  1942. typedef PMCI_OVLY_SAVE_PARMSW PMCI_OVLY_SAVE_PARMS;
  1943. typedef LPMCI_OVLY_SAVE_PARMSW LPMCI_OVLY_SAVE_PARMS;
  1944. #else
  1945. typedef MCI_OVLY_SAVE_PARMSA MCI_OVLY_SAVE_PARMS;
  1946. typedef PMCI_OVLY_SAVE_PARMSA PMCI_OVLY_SAVE_PARMS;
  1947. typedef LPMCI_OVLY_SAVE_PARMSA LPMCI_OVLY_SAVE_PARMS;
  1948. #endif
  1949. typedef struct _MCI_OVLY_LOAD_PARMSA {
  1950.     DWORD dwCallback;
  1951.     LPCSTR lpfilename;
  1952.     RECT rc;
  1953. } MCI_OVLY_LOAD_PARMSA,*PMCI_OVLY_LOAD_PARMSA,* LPMCI_OVLY_LOAD_PARMSA;
  1954. typedef struct _MCI_OVLY_LOAD_PARMSW {
  1955.     DWORD dwCallback;
  1956.     LPCWSTR lpfilename;
  1957.     RECT rc;
  1958. } MCI_OVLY_LOAD_PARMSW,*PMCI_OVLY_LOAD_PARMSW,* LPMCI_OVLY_LOAD_PARMSW;
  1959. #ifdef UNICODE
  1960. typedef MCI_OVLY_LOAD_PARMSW MCI_OVLY_LOAD_PARMS;
  1961. typedef PMCI_OVLY_LOAD_PARMSW PMCI_OVLY_LOAD_PARMS;
  1962. typedef LPMCI_OVLY_LOAD_PARMSW LPMCI_OVLY_LOAD_PARMS;
  1963. #else
  1964. typedef MCI_OVLY_LOAD_PARMSA MCI_OVLY_LOAD_PARMS;
  1965. typedef PMCI_OVLY_LOAD_PARMSA PMCI_OVLY_LOAD_PARMS;
  1966. typedef LPMCI_OVLY_LOAD_PARMSA LPMCI_OVLY_LOAD_PARMS;
  1967. #endif
  1968. //////////////////////////////////////////////////////////
  1969. // Function prototypes
  1970. //////////////////////////////////////////////////////////
  1971. FOURCC _stdcall mmioStringToFOURCCA(LPCSTR,UINT);
  1972. FOURCC _stdcall mmioStringToFOURCCW(LPCWSTR,UINT);
  1973. LPMMIOPROC _stdcall mmioInstallIOProcA(FOURCC,LPMMIOPROC,DWORD);
  1974. LPMMIOPROC _stdcall mmioInstallIOProcW(FOURCC,LPMMIOPROC,DWORD);
  1975. HMMIO _stdcall mmioOpenA(LPSTR,LPMMIOINFO,DWORD);
  1976. HMMIO _stdcall mmioOpenW(LPWSTR,LPMMIOINFO,DWORD);
  1977. MMRESULT _stdcall  mmioRenameA(LPCSTR,LPCSTR,LPCMMIOINFO,DWORD);
  1978. MMRESULT _stdcall  mmioRenameW(LPCWSTR,LPCWSTR,LPCMMIOINFO,DWORD);
  1979. MMRESULT _stdcall  mmioClose(HMMIO,UINT);
  1980. LONG _stdcall mmioRead(HMMIO,HPSTR,LONG);
  1981. LONG _stdcall mmioWrite(HMMIO,char *,LONG);
  1982. LONG _stdcall mmioSeek(HMMIO,LONG,int);
  1983. MMRESULT _stdcall  mmioGetInfo(HMMIO,LPMMIOINFO,UINT);
  1984. MMRESULT _stdcall  mmioSetInfo(HMMIO,LPCMMIOINFO,UINT);
  1985. MMRESULT _stdcall  mmioSetBuffer(HMMIO,LPSTR,LONG,UINT);
  1986. MMRESULT _stdcall  mmioFlush(HMMIO,UINT);
  1987. MMRESULT _stdcall  mmioAdvance(HMMIO,LPMMIOINFO,UINT);
  1988. LRESULT _stdcall mmioSendMessage(HMMIO,UINT,LPARAM,LPARAM);
  1989. MMRESULT _stdcall  mmioDescend(HMMIO,LPMMCKINFO,MMCKINFO *,UINT);
  1990. MMRESULT _stdcall  mmioAscend(HMMIO,LPMMCKINFO,UINT);
  1991. MMRESULT _stdcall  mmioCreateChunk(HMMIO,LPMMCKINFO,UINT);
  1992. MCIERROR _stdcall  mciSendCommandA(MCIDEVICEID,UINT,DWORD,DWORD);
  1993. MCIERROR _stdcall  mciSendCommandW(MCIDEVICEID,UINT,DWORD,DWORD);
  1994. MCIERROR _stdcall  mciSendStringA(LPCSTR,LPSTR,UINT,HWND);
  1995. MCIERROR _stdcall  mciSendStringW(LPCWSTR,LPWSTR,UINT,HWND);
  1996. MCIDEVICEID _stdcall  mciGetDeviceIDA(LPCSTR);
  1997. MCIDEVICEID _stdcall  mciGetDeviceIDW(LPCWSTR);
  1998. MCIDEVICEID _stdcall  mciGetDeviceIDFromElementIDA(DWORD,LPCSTR);
  1999. MCIDEVICEID _stdcall  mciGetDeviceIDFromElementIDW(DWORD,LPCWSTR);
  2000. BOOL _stdcall  mciGetErrorStringA(MCIERROR,LPSTR,UINT);
  2001. BOOL _stdcall  mciGetErrorStringW(MCIERROR,LPWSTR,UINT);
  2002. BOOL _stdcall  mciSetYieldProc(MCIDEVICEID,YIELDPROC,DWORD);
  2003. HTASK _stdcall mciGetCreatorTask(MCIDEVICEID);
  2004. YIELDPROC _stdcall mciGetYieldProc(MCIDEVICEID,LPDWORD);
  2005. BOOL _stdcall  mciExecute(LPCSTR);
  2006. MMRESULT _stdcall  joyGetPos(UINT,LPJOYINFO);
  2007. MMRESULT _stdcall  joyGetPosEx(UINT,LPJOYINFOEX);
  2008. MMRESULT _stdcall  joyGetThreshold(UINT,LPUINT);
  2009. MMRESULT _stdcall  joyReleaseCapture(UINT);
  2010. MMRESULT _stdcall  joySetCapture(HWND,UINT,UINT,BOOL);
  2011. MMRESULT _stdcall  joySetThreshold(UINT,UINT);
  2012. UINT _stdcall  waveOutGetNumDevs(void);
  2013. MMRESULT _stdcall  waveOutGetDevCapsA(UINT,LPWAVEOUTCAPSA,UINT);
  2014. MMRESULT _stdcall  waveOutGetDevCapsW(UINT,LPWAVEOUTCAPSW,UINT);
  2015. MMRESULT _stdcall  waveOutGetVolume(HWAVEOUT,LPDWORD);
  2016. MMRESULT _stdcall  waveOutSetVolume(HWAVEOUT,DWORD);
  2017. MMRESULT _stdcall  waveOutGetErrorTextA(MMRESULT,LPSTR,UINT);
  2018. MMRESULT _stdcall  waveOutGetErrorTextW(MMRESULT,LPWSTR,UINT);
  2019. MMRESULT _stdcall  waveOutOpen(LPHWAVEOUT,UINT,LPCWAVEFORMATEX,DWORD,DWORD,DWORD);
  2020. MMRESULT _stdcall  waveOutClose(HWAVEOUT);
  2021. MMRESULT _stdcall  waveOutPrepareHeader(HWAVEOUT,LPWAVEHDR,UINT);
  2022. MMRESULT _stdcall  waveOutUnprepareHeader(HWAVEOUT,LPWAVEHDR,UINT);
  2023. MMRESULT _stdcall  waveOutWrite(HWAVEOUT,LPWAVEHDR,UINT);
  2024. MMRESULT _stdcall  waveOutPause(HWAVEOUT);
  2025. MMRESULT _stdcall  waveOutRestart(HWAVEOUT);
  2026. MMRESULT _stdcall  waveOutReset(HWAVEOUT);
  2027. MMRESULT _stdcall  waveOutBreakLoop(HWAVEOUT);
  2028. MMRESULT _stdcall  waveOutGetPosition(HWAVEOUT,LPMMTIME,UINT);
  2029. MMRESULT _stdcall  waveOutGetPitch(HWAVEOUT,LPDWORD);
  2030. MMRESULT _stdcall  waveOutSetPitch(HWAVEOUT,DWORD);
  2031. MMRESULT _stdcall  waveOutGetPlaybackRate(HWAVEOUT,LPDWORD);
  2032. MMRESULT _stdcall  waveOutSetPlaybackRate(HWAVEOUT,DWORD);
  2033. MMRESULT _stdcall  waveOutGetID(HWAVEOUT,LPUINT);
  2034. MMRESULT _stdcall  waveOutMessage(HWAVEOUT,UINT,DWORD,DWORD);
  2035. UINT _stdcall  waveInGetNumDevs(void);
  2036. MMRESULT _stdcall  waveInGetDevCapsA(UINT,LPWAVEINCAPSA,UINT);
  2037. MMRESULT _stdcall  waveInGetDevCapsW(UINT,LPWAVEINCAPSW,UINT);
  2038. MMRESULT _stdcall  waveInGetErrorTextA(MMRESULT,LPSTR,UINT);
  2039. MMRESULT _stdcall  waveInGetErrorTextW(MMRESULT,LPWSTR,UINT);
  2040. MMRESULT _stdcall  waveInOpen(LPHWAVEIN,UINT,LPCWAVEFORMATEX,DWORD,DWORD,DWORD);
  2041. MMRESULT _stdcall  waveInClose(HWAVEIN);
  2042. MMRESULT _stdcall  waveInPrepareHeader(HWAVEIN,LPWAVEHDR,UINT);
  2043. MMRESULT _stdcall  waveInUnprepareHeader(HWAVEIN,LPWAVEHDR,UINT);
  2044. MMRESULT _stdcall  waveInAddBuffer(HWAVEIN,LPWAVEHDR,UINT);
  2045. MMRESULT _stdcall  waveInStart(HWAVEIN);
  2046. MMRESULT _stdcall  waveInStop(HWAVEIN);
  2047. MMRESULT _stdcall  waveInReset(HWAVEIN);
  2048. MMRESULT _stdcall  waveInGetPosition(HWAVEIN,LPMMTIME,UINT);
  2049. MMRESULT _stdcall  waveInGetID(HWAVEIN,LPUINT);
  2050. MMRESULT _stdcall  waveInMessage(HWAVEIN,UINT,DWORD,DWORD);
  2051. MMRESULT _stdcall  mixerGetLineControlsA(HMIXEROBJ,LPMIXERLINECONTROLSA,DWORD);
  2052. MMRESULT _stdcall  mixerGetLineControlsW(HMIXEROBJ,LPMIXERLINECONTROLSW,DWORD);
  2053. UINT _stdcall  joyGetNumDevs(void);
  2054. MMRESULT _stdcall  joyGetDevCapsA(UINT,LPJOYCAPSA,UINT);
  2055. MMRESULT _stdcall  joyGetDevCapsW(UINT,LPJOYCAPSW,UINT);
  2056. MMRESULT _stdcall  mixerGetControlDetailsA(HMIXEROBJ,LPMIXERCONTROLDETAILS,DWORD);
  2057. MMRESULT _stdcall  mixerGetControlDetailsW(HMIXEROBJ,LPMIXERCONTROLDETAILS,DWORD);
  2058. MMRESULT _stdcall  timeGetSystemTime(LPMMTIME,UINT);
  2059. DWORD _stdcall timeGetTime(void);
  2060. MMRESULT _stdcall  timeSetEvent(UINT,UINT,LPTIMECALLBACK,DWORD,UINT);
  2061. MMRESULT _stdcall  timeKillEvent(UINT);
  2062. MMRESULT _stdcall  timeGetDevCaps(LPTIMECAPS,UINT);
  2063. MMRESULT _stdcall  timeBeginPeriod(UINT);
  2064. MMRESULT _stdcall  timeEndPeriod(UINT);
  2065. MMRESULT _stdcall  mixerGetDevCapsA(UINT,LPMIXERCAPSA,UINT);
  2066. MMRESULT _stdcall  mixerGetDevCapsW(UINT,LPMIXERCAPSW,UINT);
  2067. MMRESULT _stdcall  mixerOpen(LPHMIXER,UINT,DWORD,DWORD,DWORD);
  2068. MMRESULT _stdcall  mixerClose(HMIXER);
  2069. DWORD _stdcall mixerMessage(HMIXER,UINT,DWORD,DWORD);
  2070. UINT _stdcall  auxGetNumDevs(void);
  2071. MMRESULT _stdcall  auxGetDevCapsA(UINT,LPAUXCAPSA ,UINT);
  2072. MMRESULT _stdcall  auxGetDevCapsW(UINT,LPAUXCAPSW ,UINT);
  2073. MMRESULT _stdcall  auxSetVolume(UINT,DWORD);
  2074. MMRESULT _stdcall  auxGetVolume(UINT,LPDWORD);
  2075. MMRESULT _stdcall  auxOutMessage(UINT,UINT,DWORD,DWORD);
  2076. UINT _stdcall  midiOutGetNumDevs(void);
  2077. MMRESULT _stdcall  midiStreamOpen(LPHMIDISTRM,LPUINT,DWORD,DWORD,DWORD,DWORD);
  2078. MMRESULT _stdcall  midiStreamClose(HMIDISTRM);
  2079. MMRESULT _stdcall  midiStreamProperty(HMIDISTRM,LPBYTE,DWORD);
  2080. MMRESULT _stdcall  midiStreamPosition(HMIDISTRM,LPMMTIME,UINT);
  2081. MMRESULT _stdcall  midiStreamOut(HMIDISTRM,LPMIDIHDR,UINT);
  2082. MMRESULT _stdcall  midiStreamPause(HMIDISTRM);
  2083. MMRESULT _stdcall  midiStreamRestart(HMIDISTRM);
  2084. MMRESULT _stdcall  midiStreamStop(HMIDISTRM);
  2085. MMRESULT _stdcall  midiConnect(HMIDI,HMIDIOUT,LPVOID);
  2086. MMRESULT _stdcall  midiDisconnect(HMIDI,HMIDIOUT,LPVOID);
  2087. MMRESULT _stdcall  midiOutGetDevCapsA(UINT,LPMIDIOUTCAPSA,UINT);
  2088. MMRESULT _stdcall  midiOutGetDevCapsW(UINT,LPMIDIOUTCAPSW,UINT);
  2089. MMRESULT _stdcall  midiOutGetVolume(HMIDIOUT,LPDWORD);
  2090. MMRESULT _stdcall  midiOutSetVolume(HMIDIOUT,DWORD);
  2091. MMRESULT _stdcall  midiOutGetErrorTextA(MMRESULT,LPSTR,UINT);
  2092. MMRESULT _stdcall  midiOutGetErrorTextW(MMRESULT,LPWSTR,UINT);
  2093. MMRESULT _stdcall  midiOutOpen(LPHMIDIOUT,UINT,DWORD,DWORD,DWORD);
  2094. MMRESULT _stdcall  midiOutClose(HMIDIOUT);
  2095. MMRESULT _stdcall  midiOutPrepareHeader(HMIDIOUT,LPMIDIHDR,UINT);
  2096. MMRESULT _stdcall  midiOutUnprepareHeader(HMIDIOUT,LPMIDIHDR,UINT);
  2097. MMRESULT _stdcall  midiOutShortMsg(HMIDIOUT,DWORD);
  2098. MMRESULT _stdcall  midiOutLongMsg(HMIDIOUT,LPMIDIHDR,UINT);
  2099. MMRESULT _stdcall  midiOutReset(HMIDIOUT);
  2100. MMRESULT _stdcall  midiOutCachePatches(HMIDIOUT,UINT,LPWORD,UINT);
  2101. MMRESULT _stdcall  midiOutCacheDrumPatches(HMIDIOUT,UINT,LPWORD,UINT);
  2102. MMRESULT _stdcall  midiOutGetID(HMIDIOUT,LPUINT);
  2103. MMRESULT _stdcall  midiOutMessage(HMIDIOUT,UINT,DWORD,DWORD);
  2104. UINT _stdcall  midiInGetNumDevs(void);
  2105. MMRESULT _stdcall  midiInGetDevCapsA(UINT,LPMIDIINCAPSA,UINT);
  2106. MMRESULT _stdcall  midiInGetDevCapsW(UINT,LPMIDIINCAPSW,UINT);
  2107. MMRESULT _stdcall  midiInGetErrorTextA(MMRESULT,LPSTR,UINT);
  2108. MMRESULT _stdcall  midiInGetErrorTextW(MMRESULT,LPWSTR,UINT);
  2109. MMRESULT _stdcall  midiInOpen(LPHMIDIIN,UINT,DWORD,DWORD,DWORD);
  2110. MMRESULT _stdcall  midiInClose(HMIDIIN);
  2111. MMRESULT _stdcall  midiInPrepareHeader(HMIDIIN,LPMIDIHDR,UINT);
  2112. MMRESULT _stdcall  midiInUnprepareHeader(HMIDIIN,LPMIDIHDR,UINT);
  2113. MMRESULT _stdcall  midiInAddBuffer(HMIDIIN,LPMIDIHDR,UINT);
  2114. MMRESULT _stdcall  midiInStart(HMIDIIN);
  2115. MMRESULT _stdcall  midiInStop(HMIDIIN);
  2116. MMRESULT _stdcall  midiInReset(HMIDIIN);
  2117. MMRESULT _stdcall  midiInGetID(HMIDIIN,LPUINT);
  2118. MMRESULT _stdcall  midiInMessage(HMIDIIN,UINT,DWORD,DWORD);
  2119. MMRESULT _stdcall  mixerGetLineInfoA(HMIXEROBJ,LPMIXERLINEA,DWORD);
  2120. MMRESULT _stdcall  mixerGetLineInfoW(HMIXEROBJ,LPMIXERLINEW,DWORD);
  2121. MMRESULT _stdcall  mixerGetID(HMIXEROBJ,UINT *,DWORD);
  2122. BOOL _stdcall PlaySoundA(LPCSTR,HMODULE,DWORD);
  2123. BOOL _stdcall PlaySoundW(LPCWSTR,HMODULE,DWORD);
  2124. #endif // _GNU_MMSYSTEM
  2125.  
  2126.