mmsystem.h
上传用户:xiejiait
上传日期:2007-01-06
资源大小:881k
文件大小:7k
源码类别:

SCSI/ASPI

开发平台:

MultiPlatform

  1. /* @(#)mmsystem.h 1.4 00/01/03 Copyright 1998,1999,2000 Heiko Eissfeldt */
  2. #ifndef _MMSYSTEM_H
  3. #define _MMSYSTEM_H
  4. /* Result code definition */
  5. typedef UINT MMRESULT;
  6. typedef DWORD MCIERROR;
  7. /* Various error values */
  8. #define MAXERRORLENGTH 256 /* Maximum length of error message */
  9. #define MMSYSERR_NOERROR 0
  10. #define TIMERR_NOERROR MMSYSERR_NOERROR
  11. #define TIMERR_NOCANDO 97
  12. /* Wave out device handle */
  13. typedef HANDLE HWAVEOUT;
  14. /* MCI device handle */
  15. typedef UINT MCIDEVICEID;
  16. /* Have the system choose a wave device */
  17. #define WAVE_MAPPER ((UINT)-1)
  18. /* Specify the type of wave event callback */
  19. #define CALLBACK_FUNCTION 0x00030000
  20. #define CALLBACK_EVENT 0x00050000
  21. /* Messages sent to the waveOut callback function */
  22. #define WOM_DONE 0x3BD
  23. /* The wave buffer header used by waveOut functions */
  24. typedef struct WAVEHDR {
  25. LPSTR lpData;
  26. DWORD dwBufferLength;
  27. DWORD dwBytesRecorded;
  28. DWORD dwUser;
  29. DWORD dwFlags;
  30. DWORD dwLoops;
  31. struct WAVEHDR *lpNext;
  32. DWORD reserved;
  33. } WAVEHDR;
  34. /* WAVEHDR.dwFlags */
  35. #define WHDR_DONE 0x00000001
  36. #define WHDR_BEGINLOOP 0x00000004
  37. #define WHDR_ENDLOOP 0x00000008
  38. #define WHDR_INQUEUE 0x00000010
  39. /* Structure used in querying the capabilities of a wave device */
  40. typedef struct {
  41. WORD wMid;
  42. WORD wPid;
  43. UINT vDriverVersion;
  44. CHAR szPname[32];
  45. DWORD dwFormats;
  46. WORD wReserved1;
  47. DWORD dwSupport;
  48. } WAVEOUTCAPS;
  49. /* The only kind of sound data we handle here */
  50. #define WAVE_FORMAT_PCM 1
  51. /* Old wave format structure */
  52. typedef struct {
  53. WORD    wFormatTag;
  54. WORD    nChannels;
  55. DWORD   nSamplesPerSec;
  56. DWORD   nAvgBytesPerSec;
  57. WORD    nBlockAlign;
  58. } WAVEFORMAT, *LPWAVEFORMAT;
  59. /* PCM wave format structure */
  60. typedef struct {
  61. WAVEFORMAT  wf;
  62. WORD        wBitsPerSample;
  63. } PCMWAVEFORMAT;
  64. /* Wave format structure (used by dsound.h) */
  65. typedef struct {
  66. WORD  wFormatTag;
  67. WORD  nChannels;
  68. DWORD nSamplesPerSec;
  69. DWORD nAvgBytesPerSec;
  70. WORD  nBlockAlign;
  71. WORD  wBitsPerSample;
  72. WORD  cbSize;
  73. } WAVEFORMATEX, *LPWAVEFORMATEX;
  74. /* Constants used as arguments and flags to mciSendCommand() */
  75. /* CD device type */
  76. #define MCI_STRING_OFFSET 512
  77. #define MCI_DEVTYPE_CD_AUDIO (MCI_STRING_OFFSET + 4)
  78. /* MCI commands */
  79. #define MCI_OPEN 0x0803
  80. #define MCI_CLOSE 0x0804
  81. #define MCI_PLAY 0x0806
  82. #define MCI_STOP 0x0808
  83. #define MCI_PAUSE 0x0809
  84. #define MCI_SET 0x080D
  85. #define MCI_STATUS 0x0814
  86. #define MCI_RESUME 0x0855
  87. /* Flags for MCI commands */
  88. #define MCI_NOTIFY 0x00000001
  89. #define MCI_WAIT 0x00000002
  90. #define MCI_FROM 0x00000004
  91. #define MCI_TO 0x00000008
  92. #define MCI_TRACK 0x00000010
  93. /* Flags for MCI Play command */
  94. #define MCI_OPEN_SHAREABLE 0x00000100
  95. #define MCI_OPEN_ELEMENT 0x00000200
  96. #define MCI_OPEN_TYPE_ID 0x00001000
  97. #define MCI_OPEN_TYPE 0x00002000
  98. /* Flags for MCI Status command */
  99. #define MCI_STATUS_ITEM 0x00000100
  100. #define MCI_STATUS_LENGTH 0x00000001
  101. #define MCI_STATUS_POSITION 0x00000002
  102. #define MCI_STATUS_NUMBER_OF_TRACKS 0x00000003
  103. #define MCI_STATUS_MODE 0x00000004
  104. #define MCI_STATUS_MEDIA_PRESENT 0x00000005
  105. #define MCI_STATUS_TIME_FORMAT 0x00000006
  106. #define MCI_STATUS_READY 0x00000007
  107. #define MCI_STATUS_CURRENT_TRACK 0x00000008
  108. /* Flags for MCI Set command */
  109. #define MCI_SET_DOOR_OPEN 0x00000100
  110. #define MCI_SET_DOOR_CLOSED 0x00000200
  111. #define MCI_SET_TIME_FORMAT 0x00000400
  112. /* MCI device status flags */
  113. #define MCI_MODE_NOT_READY (MCI_STRING_OFFSET + 12)
  114. #define MCI_MODE_STOP (MCI_STRING_OFFSET + 13)
  115. #define MCI_MODE_PLAY (MCI_STRING_OFFSET + 14)
  116. #define MCI_MODE_RECORD (MCI_STRING_OFFSET + 15)
  117. #define MCI_MODE_SEEK (MCI_STRING_OFFSET + 16)
  118. #define MCI_MODE_PAUSE (MCI_STRING_OFFSET + 17)
  119. #define MCI_MODE_OPEN (MCI_STRING_OFFSET + 18)
  120. /* Constants used to specify MCI time formats */
  121. #define MCI_FORMAT_MILLISECONDS 0
  122. #define MCI_FORMAT_HMS 1
  123. #define MCI_FORMAT_MSF 2
  124. #define MCI_FORMAT_FRAMES 3
  125. #define MCI_FORMAT_BYTES 8
  126. #define MCI_FORMAT_SAMPLES 9
  127. #define MCI_FORMAT_TMSF 10
  128. #define MCI_MSF_MINUTE(msf) ((BYTE)(msf))
  129. #define MCI_MSF_SECOND(msf) ((BYTE)(((WORD)(msf)) >> 8))
  130. #define MCI_MSF_FRAME(msf) ((BYTE)((msf)>>16))
  131. #define MCI_MAKE_MSF(m, s, f)
  132. ((DWORD)(((BYTE)(m)|((WORD)(s)<<8))|(((DWORD)(BYTE)(f))<<16)))
  133. /* Structures passed as arguments to mciSendCommand() */
  134. typedef struct {
  135. DWORD  dwCallback;
  136. MCIDEVICEID wDeviceID;
  137. LPCSTR lpstrDeviceType;
  138. LPCSTR lpstrElementName;
  139. LPCSTR lpstrAlias;
  140. } MCI_OPEN_PARMS;
  141. typedef struct {
  142. DWORD dwCallback;
  143. DWORD dwTimeFormat;
  144. DWORD dwAudio;
  145. } MCI_SET_PARMS;
  146. typedef struct {
  147. DWORD dwCallback;
  148. DWORD dwFrom;
  149. DWORD dwTo;
  150. } MCI_PLAY_PARMS;
  151. typedef struct {
  152. DWORD dwCallback;
  153. DWORD dwReturn;
  154. DWORD dwItem;
  155. DWORD dwTrack;
  156. } MCI_STATUS_PARMS;
  157. /* Convert a string to a 4 byte multimedia code */
  158. #ifndef mmioFOURCC
  159. #define mmioFOURCC(c0, c1, c2, c3)
  160. ((DWORD)(c0)|((DWORD)(c1)<<8)|((DWORD)(c2)<<16)|((DWORD)(c3)<<24))
  161. #endif
  162. /* timer callback function prototype */
  163. typedef void (CALLBACK TIMECALLBACK)(UINT uTimerID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2);
  164. /* What type of timer to set */
  165. #define TIME_ONESHOT    0x0000   /* program timer for single event */
  166. #define TIME_PERIODIC   0x0001   /* program for continuous periodic event */
  167. /* Multimedia timer function declarations */
  168. extern MMRESULT WINAPI timeSetEvent(UINT uDelay, UINT uResolution,
  169. TIMECALLBACK *fptc, DWORD dwUser, UINT fuEvent);
  170. extern MMRESULT WINAPI timeKillEvent(UINT uTimerID);
  171. extern MMRESULT WINAPI timeBeginPeriod(UINT uPeriod);
  172. extern MMRESULT WINAPI timeEndPeriod(UINT uPeriod);
  173. /* The waveOut* function declarations */
  174. extern UINT WINAPI waveOutGetNumDevs(VOID);
  175. extern MMRESULT WINAPI waveOutOpen(HWAVEOUT *phwo, UINT uDeviceID,
  176. WAVEFORMATEX *pwfx, DWORD dwCallback, DWORD dwInstance, DWORD fdwOpen);
  177. extern MMRESULT WINAPI waveOutClose(HWAVEOUT hwo);
  178. extern MMRESULT WINAPI waveOutPrepareHeader(HWAVEOUT hwo, WAVEHDR *pwh, UINT cbwh);
  179. extern MMRESULT WINAPI waveOutUnprepareHeader(HWAVEOUT hwo, WAVEHDR *pwh, UINT cbwh);
  180. extern MMRESULT WINAPI waveOutWrite(HWAVEOUT hwo, WAVEHDR *pwh, UINT cbwh);
  181. extern MMRESULT WINAPI waveOutPause(HWAVEOUT hwo);
  182. extern MMRESULT WINAPI waveOutRestart(HWAVEOUT hwo);
  183. extern MMRESULT WINAPI waveOutReset(HWAVEOUT hwo);
  184. extern MMRESULT WINAPI waveOutBreakLoop(HWAVEOUT hwo);
  185. #define waveOutGetDevCaps waveOutGetDevCapsA
  186. extern MMRESULT WINAPI waveOutGetDevCapsA(UINT uDeviceID, WAVEOUTCAPS *pwoc, UINT cbwoc);
  187. #define waveOutGetErrorText waveOutGetErrorTextA
  188. extern MMRESULT WINAPI waveOutGetErrorTextA(MMRESULT mmrError, LPSTR pszText, UINT cchText);
  189. /* The MCI command interface */
  190. #define mciSendCommand mciSendCommandA
  191. extern MCIERROR WINAPI mciSendCommandA(MCIDEVICEID mciId, UINT uMsg, DWORD dwParam1, DWORD dwParam2);
  192. #define mciGetErrorString mciGetErrorStringA
  193. extern int WINAPI mciGetErrorStringA(DWORD hErr, LPCSTR lpBuf, DWORD dwLen);
  194. #endif /* _MMSYSTEM_H */