home *** CD-ROM | disk | FTP | other *** search
/ Team Palmtops 7 / Palmtops_numero07.iso / WinCE / SDKWindowsCE / AutoPC / apcsdk10.exe / data1.cab / Emulation_Include_Files / mmsystem.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-05-13  |  19.8 KB  |  483 lines

  1. /*++
  2.  
  3. Copyright (c) 1995  Microsoft Corporation
  4.  
  5. Module Name:mmsystem.h -- Include file for Multimedia API's  
  6.  
  7.  *    If defined, the following flags inhibit inclusion
  8.  *    of the indicated items:
  9.  *
  10.  *      MMNOSOUND       Sound support
  11.  *      MMNOWAVE        Waveform support
  12.  *
  13.  */
  14.  
  15. #ifndef _INC_MMSYSTEM
  16. #define _INC_MMSYSTEM   // to prevent multiple inclusion of mmsystem.h
  17.  
  18. #include "pshpack1.h"   // Assume byte packing throughout
  19.  
  20. #ifdef __cplusplus
  21. extern "C" {            // Assume C declarations for C++
  22. #endif  // __cplusplus
  23.  
  24. /****************************************************************************
  25.  
  26.                     General constants and data types
  27.  
  28. ****************************************************************************/
  29.  
  30. /* general constants */
  31. #define MAXPNAMELEN      32     // max product name length (including NULL)
  32. #define MAXERRORLENGTH   128    // max error text length (including final NULL)
  33.  
  34. /*
  35.  *  Microsoft Manufacturer and Product ID's
  36.  *
  37.     Used with wMid and wPid fields in WAVEOUTCAPS, WAVEINCAPS,
  38.     MIDIOUTCAPS, MIDIINCAPS, AUXCAPS, JOYCAPS structures.
  39.  */
  40. /*
  41.  *  (these have been moved to
  42.  *  MMREG.H for Windows 4.00 and above).
  43.  */
  44. /* manufacturer IDs */
  45. #ifndef MM_MICROSOFT
  46. #define MM_MICROSOFT            1        // Microsoft Corporation
  47. #endif // MM_MICROSOFT
  48.  
  49.  
  50.  
  51. /* general data types */
  52. typedef UINT    MMVERSION;      // major (high byte), minor (low byte)
  53.  
  54. typedef UINT    MMRESULT;       // error return code, 0 means no error
  55.                                 // call as if(err=xxxx(...)) Error(err); else
  56.  
  57. #define _MMRESULT_              // ??? Not needed for NT, but probably harmless.
  58.  
  59. typedef UINT       *LPUINT;
  60.  
  61.  
  62. /* MMTIME data structure */
  63. typedef struct mmtime_tag
  64. {
  65.     UINT            wType;      /* indicates the contents of the union */
  66.     union
  67.     {
  68.     DWORD       ms;         /* milliseconds */
  69.     DWORD       sample;     /* samples */
  70.     DWORD       cb;         /* byte count */
  71.     DWORD       ticks;      /* ticks in MIDI stream */
  72.  
  73.     /* SMPTE */
  74.     struct
  75.     {
  76.         BYTE    hour;       /* hours */
  77.         BYTE    min;        /* minutes */
  78.         BYTE    sec;        /* seconds */
  79.         BYTE    frame;      /* frames  */
  80.         BYTE    fps;        /* frames per second */
  81.         BYTE    dummy;      /* pad */
  82. #ifdef _WIN32
  83.         BYTE    pad[2];
  84. #endif
  85.     } smpte;
  86.  
  87.     /* MIDI */
  88.     struct
  89.     {
  90.         DWORD songptrpos;   /* song pointer position */
  91.     } midi;
  92.     } u;
  93. } MMTIME, *PMMTIME, NEAR *NPMMTIME, FAR *LPMMTIME;
  94.  
  95. /* types for wType field in MMTIME struct */
  96. #define TIME_MS         0x0001  /* time in milliseconds */
  97. #define TIME_SAMPLES    0x0002  /* number of wave samples */
  98. #define TIME_BYTES      0x0004  /* current byte offset */
  99. #define TIME_SMPTE      0x0008  /* SMPTE time */
  100. #define TIME_MIDI       0x0010  /* MIDI time */
  101. #define TIME_TICKS      0x0020  /* Ticks within MIDI stream */
  102.  
  103. #define MAKEFOURCC(ch0, ch1, ch2, ch3)                              \
  104.         ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) |   \
  105.         ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
  106.  
  107. #define mmioFOURCC(ch0, ch1, ch2, ch3)  MAKEFOURCC(ch0, ch1, ch2, ch3)
  108.  
  109. /****************************************************************************
  110.  
  111.             Multimedia Extensions Window Messages
  112.  
  113. ****************************************************************************/
  114.  
  115. #define MM_WOM_OPEN         0x3BB           /* waveform output */
  116. #define MM_WOM_CLOSE        0x3BC
  117. #define MM_WOM_DONE         0x3BD
  118.  
  119. #define MM_WIM_OPEN         0x3BE           /* waveform input */
  120. #define MM_WIM_CLOSE        0x3BF
  121. #define MM_WIM_DATA         0x3C0
  122.  
  123.  
  124. /* these are used by msacm.h */
  125. #define MM_STREAM_OPEN      0x3D4
  126. #define MM_STREAM_CLOSE     0x3D5
  127. #define MM_STREAM_DONE      0x3D6
  128. #define MM_STREAM_ERROR     0x3D7
  129.  
  130.  
  131. /****************************************************************************
  132.  
  133.         String resource number bases (internal use)
  134.  
  135. ****************************************************************************/
  136.  
  137. #define MMSYSERR_BASE          0
  138. #define WAVERR_BASE            32
  139.  
  140. /****************************************************************************
  141.  
  142.             General error return values
  143.  
  144. ****************************************************************************/
  145.  
  146. /* general error return values */
  147. #define MMSYSERR_NOERROR      0                    /* no error */
  148. #define MMSYSERR_ERROR        (MMSYSERR_BASE + 1)  /* unspecified error */
  149. #define MMSYSERR_BADDEVICEID  (MMSYSERR_BASE + 2)  /* device ID out of range */
  150. #define MMSYSERR_NOTENABLED   (MMSYSERR_BASE + 3)  /* driver failed enable */
  151. #define MMSYSERR_ALLOCATED    (MMSYSERR_BASE + 4)  /* device already allocated */
  152. #define MMSYSERR_INVALHANDLE  (MMSYSERR_BASE + 5)  /* device handle is invalid */
  153. #define MMSYSERR_NODRIVER     (MMSYSERR_BASE + 6)  /* no device driver present */
  154. #define MMSYSERR_NOMEM        (MMSYSERR_BASE + 7)  /* memory allocation error */
  155. #define MMSYSERR_NOTSUPPORTED (MMSYSERR_BASE + 8)  /* function isn't supported */
  156. #define MMSYSERR_BADERRNUM    (MMSYSERR_BASE + 9)  /* error value out of range */
  157. #define MMSYSERR_INVALFLAG    (MMSYSERR_BASE + 10) /* invalid flag passed */
  158. #define MMSYSERR_INVALPARAM   (MMSYSERR_BASE + 11) /* invalid parameter passed */
  159. #define MMSYSERR_HANDLEBUSY   (MMSYSERR_BASE + 12) /* handle being used */
  160.                                                    /* simultaneously on another */
  161.                                                    /* thread (eg callback) */
  162. #define MMSYSERR_INVALIDALIAS (MMSYSERR_BASE + 13) /* specified alias not found */
  163. #define MMSYSERR_BADDB        (MMSYSERR_BASE + 14) /* bad registry database */
  164. #define MMSYSERR_KEYNOTFOUND  (MMSYSERR_BASE + 15) /* registry key not found */
  165. #define MMSYSERR_READERROR    (MMSYSERR_BASE + 16) /* registry read error */
  166. #define MMSYSERR_WRITEERROR   (MMSYSERR_BASE + 17) /* registry write error */
  167. #define MMSYSERR_DELETEERROR  (MMSYSERR_BASE + 18) /* registry delete error */
  168. #define MMSYSERR_VALNOTFOUND  (MMSYSERR_BASE + 19) /* registry value not found */
  169. #define MMSYSERR_NODRIVERCB   (MMSYSERR_BASE + 20) /* driver does not call DriverCallback */
  170. #define MMSYSERR_LASTERROR    (MMSYSERR_BASE + 20) /* last error in range */
  171.  
  172.  
  173. /****************************************************************************
  174.  
  175.               Driver callback support
  176.  
  177. ****************************************************************************/
  178.  
  179. /* flags used with waveOutOpen(), waveInOpen(), midiInOpen(), and */
  180. /* midiOutOpen() to specify the type of the dwCallback parameter. */
  181.  
  182. #define CALLBACK_TYPEMASK   0x00070000l    /* callback type mask */
  183. #define CALLBACK_NULL       0x00000000l    /* no callback */
  184. #define CALLBACK_WINDOW     0x00010000l    /* dwCallback is a HWND */
  185. #define CALLBACK_TASK       0x00020000l    /* dwCallback is a HTASK */
  186. #define CALLBACK_FUNCTION   0x00030000l    /* dwCallback is a FARPROC */
  187. #define CALLBACK_THREAD     (CALLBACK_TASK)/* thread ID replaces 16 bit task */
  188. #define CALLBACK_EVENT      0x00050000l    /* dwCallback is an EVENT Handle */
  189.  
  190.  
  191. typedef void (CALLBACK DRVCALLBACK)(HANDLE hdrvr, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2);
  192.  
  193. typedef DRVCALLBACK FAR *LPDRVCALLBACK;
  194. typedef DRVCALLBACK     *PDRVCALLBACK;
  195.  
  196.  
  197. #ifndef MMNOSOUND
  198.  
  199. BOOL APIENTRY sndPlaySoundW( LPCWSTR lpszSoundName, UINT fuSound );
  200. #ifdef UNICODE
  201. #define sndPlaySound  sndPlaySoundW
  202. #else
  203. #define sndPlaySound  sndPlaySoundA
  204. #endif // !UNICODE
  205.  
  206. BOOL WINAPI PlaySoundA( LPCSTR pszSound, HMODULE hmod, DWORD fdwSound);
  207. BOOL WINAPI PlaySoundW(LPCWSTR pszSound, HMODULE hmod, DWORD fdwSound);
  208. #ifdef UNICODE
  209. #define PlaySound  PlaySoundW
  210. #else
  211. #define PlaySound  PlaySoundA
  212. #endif // !UNICODE
  213.  
  214.  
  215.  
  216. /*
  217.  *  flag values for fuSound arguments on [snd]PlaySound
  218.  *  or dwFlags for PlaySound
  219.  */
  220.  
  221. /* sndAlias creates the alias identifier */
  222. #define sndAlias( ch0, ch1 ) \
  223.                 ( SND_ALIAS_START + (DWORD)(BYTE)(ch0) | ( (DWORD)(BYTE)(ch1) << 8 ))
  224.  
  225. #define SND_ALIAS_SYSTEMASTERISK        sndAlias('S', '*')
  226. #define SND_ALIAS_SYSTEMQUESTION        sndAlias('S', '?')
  227. #define SND_ALIAS_SYSTEMHAND            sndAlias('S', 'H')
  228. #define SND_ALIAS_SYSTEMEXIT            sndAlias('S', 'E')
  229. #define SND_ALIAS_SYSTEMSTART           sndAlias('S', 'S')
  230. #define SND_ALIAS_SYSTEMWELCOME         sndAlias('S', 'W')
  231. #define SND_ALIAS_SYSTEMEXCLAMATION     sndAlias('S', '!')
  232. #define SND_ALIAS_SYSTEMDEFAULT         sndAlias('S', 'D')
  233.  
  234. #define SND_ALIAS      0x00010000   // name is a WIN.INI [sounds] entry
  235. #define SND_FILENAME   0x00020000   // name is a file name
  236. #define SND_RESOURCE   0x00040004   // name is a resource name or atom
  237.  
  238. #define SND_SYNC       0x00000000   // play synchronously (default)
  239. #define SND_ASYNC      0x00000001   // play asynchronously
  240. #define SND_NODEFAULT  0x00000002   // silence not default, if sound not found
  241. #define SND_MEMORY     0x00000004   // lpszSoundName points to a memory file
  242. #define SND_LOOP       0x00000008   // loop the sound until next sndPlaySound
  243. #define SND_NOSTOP     0x00000010   // don't stop any currently playing sound
  244.  
  245. #define SND_NOWAIT     0x00002000   // don't wait if the driver is busy
  246. #define SND_VALIDFLAGS 0x0017201F   // Set of valid flag bits.  Anything outside
  247.                                     // this range will raise an error
  248. #define SND_RESERVED   0xFF000000   // In particular these flags are reserved
  249. #define SND_TYPE_MASK  0x00170007
  250. #define SND_ALIAS_ID   0x00110000   // name is a WIN.INI [sounds] entry identifier
  251. #define SND_ALIAS_START  0      // ??? must be > 4096 to keep strings in same section of resource file
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258. typedef HANDLE HDRVR;
  259. typedef HANDLE          HMMIO;          // a handle to an open file
  260.  
  261.  
  262. #endif  // ifndef MMNOSOUND
  263.  
  264. #ifndef MMNOWAVE
  265. /****************************************************************************
  266.  
  267.                         Waveform audio support
  268.  
  269. ****************************************************************************/
  270.  
  271. /* waveform audio error return values */
  272. #define WAVERR_BADFORMAT      (WAVERR_BASE + 0)    // unsupported wave format
  273. #define WAVERR_STILLPLAYING   (WAVERR_BASE + 1)    // still something playing
  274. #define WAVERR_UNPREPARED     (WAVERR_BASE + 2)    // header not prepared
  275. #define WAVERR_SYNC           (WAVERR_BASE + 3)    // device is synchronous
  276. #define WAVERR_LASTERROR      (WAVERR_BASE + 3)    // last error in range
  277.  
  278. /* waveform audio data types */
  279. DECLARE_HANDLE(HWAVE);
  280. DECLARE_HANDLE(HWAVEIN);
  281. DECLARE_HANDLE(HWAVEOUT);
  282.  
  283. typedef HWAVEIN FAR *LPHWAVEIN;
  284. typedef HWAVEOUT FAR *LPHWAVEOUT;
  285. typedef DRVCALLBACK WAVECALLBACK;
  286. typedef WAVECALLBACK FAR *LPWAVECALLBACK;
  287.  
  288. /* wave callback messages */
  289. #define WOM_OPEN        MM_WOM_OPEN
  290. #define WOM_CLOSE       MM_WOM_CLOSE
  291. #define WOM_DONE        MM_WOM_DONE
  292. #define WIM_OPEN        MM_WIM_OPEN
  293. #define WIM_CLOSE       MM_WIM_CLOSE
  294. #define WIM_DATA        MM_WIM_DATA
  295.  
  296. /* device ID for wave device mapper */
  297. /* device ID for wave device mapper */
  298. #define WAVE_MAPPER     ((DWORD)(-1))
  299.  
  300. /* flags for dwFlags parameter in waveOutOpen() and waveInOpen() */
  301. #define  WAVE_FORMAT_QUERY     0x00000001
  302. #define  WAVE_ALLOWSYNC        0x00000002
  303. #define  WAVE_MAPPED           0x00000004
  304. #define  WAVE_FORMAT_DIRECT    0x00000008
  305. #define  WAVE_FORMAT_DIRECT_QUERY  (WAVE_FORMAT_QUERY | WAVE_FORMAT_DIRECT)
  306.  
  307.  
  308. /* general waveform format (information common to all formats) */
  309. /* as read from a file.  See Multimedia file formats in Programmer Reference */
  310. typedef struct {
  311.     WORD    wFormatTag;        // format type
  312.     WORD    nChannels;         // number of channels (i.e. mono, stereo, etc.)
  313.     DWORD   nSamplesPerSec;    // sample rate
  314.     DWORD   nAvgBytesPerSec;   // for buffer estimation
  315.     WORD    nBlockAlign;       // block size of data
  316. } WAVEFORMAT;
  317. typedef WAVEFORMAT       *PWAVEFORMAT;
  318. typedef WAVEFORMAT      *NPWAVEFORMAT;
  319. typedef WAVEFORMAT      *LPWAVEFORMAT;
  320. typedef CONST WAVEFORMAT  *LPCWAVEFORMAT;
  321.  
  322. /* flags for wFormatTag field of WAVEFORMAT */
  323. #define WAVE_FORMAT_PCM     1  // Needed in resource files so outside #ifndef RC_INVOKED #endif
  324.  
  325.  
  326.  
  327. /* specific waveform format for PCM data */
  328. typedef struct tagPCMWAVEFORMAT {
  329.     WAVEFORMAT  wf;
  330.     WORD        wBitsPerSample;        // corresponds to MCI_WAVE_SET_.... structure
  331. } PCMWAVEFORMAT;
  332. typedef PCMWAVEFORMAT       *PPCMWAVEFORMAT;
  333. typedef PCMWAVEFORMAT      *NPPCMWAVEFORMAT;
  334. typedef PCMWAVEFORMAT      *LPPCMWAVEFORMAT;
  335.  
  336.  
  337. /* wave data block header */
  338. typedef struct wavehdr_tag {
  339.     LPSTR       lpData;                 /* pointer to locked data buffer */
  340.     DWORD       dwBufferLength;         /* length of data buffer */
  341.     DWORD       dwBytesRecorded;        /* used for input only */
  342.     DWORD       dwUser;                 /* for client's use */
  343.     DWORD       dwFlags;                /* assorted flags (see defines) */
  344.     DWORD       dwLoops;                /* loop control counter */
  345.     struct wavehdr_tag FAR *lpNext;     /* reserved for driver */
  346.     DWORD       reserved;               /* reserved for driver */
  347. } WAVEHDR, *PWAVEHDR, NEAR *NPWAVEHDR, FAR *LPWAVEHDR;
  348.  
  349. /* flags for dwFlags field of WAVEHDR */
  350. #define WHDR_DONE       0x00000001  /* done bit */
  351. #define WHDR_PREPARED   0x00000002  /* set if this header has been prepared */
  352. #define WHDR_BEGINLOOP  0x00000004  /* loop start block */
  353. #define WHDR_ENDLOOP    0x00000008  /* loop end block */
  354. #define WHDR_INQUEUE    0x00000010  /* reserved for driver */
  355.  
  356. /* waveform output device capabilities structure */
  357. typedef struct tagWAVEOUTCAPS {
  358.     WORD    wMid;                  /* manufacturer ID */
  359.     WORD    wPid;                  /* product ID */
  360.     MMVERSION vDriverVersion;      /* version of the driver */
  361.     TCHAR   szPname[MAXPNAMELEN];  /* product name (NULL terminated string) */
  362.     DWORD   dwFormats;             /* formats supported */
  363.     WORD    wChannels;             /* number of sources supported */
  364.     WORD    wReserved1;            /* packing */
  365.     DWORD   dwSupport;             /* functionality supported by driver */
  366. } WAVEOUTCAPS, *PWAVEOUTCAPS, *NPWAVEOUTCAPS, *LPWAVEOUTCAPS;
  367.  
  368.  
  369. /* flags for dwSupport field of WAVEOUTCAPS */
  370. #define WAVECAPS_PITCH          0x0001   /* supports pitch control */
  371. #define WAVECAPS_PLAYBACKRATE   0x0002   /* supports playback rate control */
  372. #define WAVECAPS_VOLUME         0x0004   /* supports volume control */
  373. #define WAVECAPS_LRVOLUME       0x0008   /* separate left-right volume control */
  374. #define WAVECAPS_SYNC           0x0010
  375. #define WAVECAPS_SAMPLEACCURATE 0x0020
  376. #define WAVECAPS_DIRECTSOUND    0x0040
  377.  
  378. /* waveform input device capabilities structure */
  379. typedef struct tagWAVEINCAPS {
  380.     WORD    wMid;                    /* manufacturer ID */
  381.     WORD    wPid;                    /* product ID */
  382.     MMVERSION vDriverVersion;        /* version of the driver */
  383.     TCHAR   szPname[MAXPNAMELEN];    /* product name (NULL terminated string) */
  384.     DWORD   dwFormats;               /* formats supported */
  385.     WORD    wChannels;               /* number of channels supported */
  386.     WORD    wReserved1;              /* structure packing */
  387. } WAVEINCAPS, *PWAVEINCAPS, *NPWAVEINCAPS, *LPWAVEINCAPS;
  388.  
  389. /* defines for dwFormat field of WAVEINCAPS and WAVEOUTCAPS */
  390. #define WAVE_INVALIDFORMAT     0x00000000       /* invalid format */
  391. #define WAVE_FORMAT_1M08       0x00000001       /* 11.025 kHz, Mono,   8-bit  */
  392. #define WAVE_FORMAT_1S08       0x00000002       /* 11.025 kHz, Stereo, 8-bit  */
  393. #define WAVE_FORMAT_1M16       0x00000004       /* 11.025 kHz, Mono,   16-bit */
  394. #define WAVE_FORMAT_1S16       0x00000008       /* 11.025 kHz, Stereo, 16-bit */
  395. #define WAVE_FORMAT_2M08       0x00000010       /* 22.05  kHz, Mono,   8-bit  */
  396. #define WAVE_FORMAT_2S08       0x00000020       /* 22.05  kHz, Stereo, 8-bit  */
  397. #define WAVE_FORMAT_2M16       0x00000040       /* 22.05  kHz, Mono,   16-bit */
  398. #define WAVE_FORMAT_2S16       0x00000080       /* 22.05  kHz, Stereo, 16-bit */
  399. #define WAVE_FORMAT_4M08       0x00000100       /* 44.1   kHz, Mono,   8-bit  */
  400. #define WAVE_FORMAT_4S08       0x00000200       /* 44.1   kHz, Stereo, 8-bit  */
  401. #define WAVE_FORMAT_4M16       0x00000400       /* 44.1   kHz, Mono,   16-bit */
  402. #define WAVE_FORMAT_4S16       0x00000800       /* 44.1   kHz, Stereo, 16-bit */
  403.  
  404.  
  405.  
  406. #ifndef _WAVEFORMATEX_
  407. #define _WAVEFORMATEX_
  408.  
  409. /*
  410.  *  extended waveform format structure used for all non-PCM formats. this
  411.  *  structure is common to all non-PCM formats.
  412.  */
  413. typedef struct tWAVEFORMATEX
  414. {
  415.     WORD        wFormatTag;         /* format type */
  416.     WORD        nChannels;          /* number of channels (i.e. mono, stereo...) */
  417.     DWORD       nSamplesPerSec;     /* sample rate */
  418.     DWORD       nAvgBytesPerSec;    /* for buffer estimation */
  419.     WORD        nBlockAlign;        /* block size of data */
  420.     WORD        wBitsPerSample;     /* number of bits per sample of mono data */
  421.     WORD        cbSize;             /* the count in bytes of the size of */
  422.                     /* extra information (after cbSize) */
  423. } WAVEFORMATEX, *PWAVEFORMATEX, NEAR *NPWAVEFORMATEX, FAR *LPWAVEFORMATEX;
  424. typedef const WAVEFORMATEX FAR *LPCWAVEFORMATEX;
  425.  
  426. #endif /* _WAVEFORMATEX_ */
  427.  
  428.  
  429. /* waveform audio function prototypes */
  430. UINT     WINAPI waveOutGetNumDevs(void);
  431. MMRESULT WINAPI waveOutGetDevCaps(UINT uDeviceID, LPWAVEOUTCAPS pwoc, UINT cbwoc);
  432. MMRESULT WINAPI waveOutGetVolume(HWAVEOUT hwo, LPDWORD pdwVolume);
  433. MMRESULT WINAPI waveOutSetVolume(HWAVEOUT hwo, DWORD dwVolume);
  434. MMRESULT WINAPI waveOutGetErrorText(MMRESULT mmrError, LPTSTR pszText, UINT cchText);
  435. MMRESULT WINAPI waveOutClose(HWAVEOUT hwo);
  436. MMRESULT WINAPI waveOutPrepareHeader(HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh);
  437. MMRESULT WINAPI waveOutUnprepareHeader(HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh);
  438. MMRESULT WINAPI waveOutWrite(HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh);
  439. MMRESULT WINAPI waveOutPause(HWAVEOUT hwo);
  440. MMRESULT WINAPI waveOutRestart(HWAVEOUT hwo);
  441. MMRESULT WINAPI waveOutReset(HWAVEOUT hwo);
  442. MMRESULT WINAPI waveOutBreakLoop(HWAVEOUT hwo);
  443. MMRESULT WINAPI waveOutGetPosition(HWAVEOUT hwo, LPMMTIME pmmt, UINT cbmmt);
  444. MMRESULT WINAPI waveOutGetPitch(HWAVEOUT hwo, LPDWORD pdwPitch);
  445. MMRESULT WINAPI waveOutSetPitch(HWAVEOUT hwo, DWORD dwPitch);
  446. MMRESULT WINAPI waveOutGetPlaybackRate(HWAVEOUT hwo, LPDWORD pdwRate);
  447. MMRESULT WINAPI waveOutSetPlaybackRate(HWAVEOUT hwo, DWORD dwRate);
  448. MMRESULT WINAPI waveOutGetID(HWAVEOUT hwo, LPUINT puDeviceID);
  449. MMRESULT WINAPI waveOutMessage(HWAVEOUT hwo, UINT uMsg, DWORD dw1, DWORD dw2);
  450. MMRESULT WINAPI waveOutOpen(LPHWAVEOUT phwo, UINT uDeviceID,
  451.     LPCWAVEFORMATEX pwfx, DWORD dwCallback, DWORD dwInstance, DWORD fdwOpen);
  452.  
  453.  
  454. UINT     WINAPI waveInGetNumDevs(void);
  455. MMRESULT WINAPI waveInGetDevCaps(UINT uDeviceID, LPWAVEINCAPS pwic, UINT cbwic);
  456. MMRESULT WINAPI waveInGetErrorText(MMRESULT mmrError, LPTSTR pszText, UINT cchText);
  457. MMRESULT WINAPI waveInClose(HWAVEIN hwi);
  458. MMRESULT WINAPI waveInPrepareHeader(HWAVEIN hwi, LPWAVEHDR pwh, UINT cbwh);
  459. MMRESULT WINAPI waveInUnprepareHeader(HWAVEIN hwi, LPWAVEHDR pwh, UINT cbwh);
  460. MMRESULT WINAPI waveInAddBuffer(HWAVEIN hwi, LPWAVEHDR pwh, UINT cbwh);
  461. MMRESULT WINAPI waveInStart(HWAVEIN hwi);
  462. MMRESULT WINAPI waveInStop(HWAVEIN hwi);
  463. MMRESULT WINAPI waveInReset(HWAVEIN hwi);
  464. MMRESULT WINAPI waveInGetPosition(HWAVEIN hwi, LPMMTIME pmmt, UINT cbmmt);
  465. MMRESULT WINAPI waveInGetID(HWAVEIN hwi, LPUINT puDeviceID);
  466. MMRESULT WINAPI waveInMessage(HWAVEIN hwi, UINT uMsg, DWORD dw1, DWORD dw2);
  467. MMRESULT WINAPI waveInOpen(LPHWAVEIN phwi, UINT uDeviceID,
  468.     LPCWAVEFORMATEX pwfx, DWORD dwCallback, DWORD dwInstance, DWORD fdwOpen);
  469.  
  470.  
  471.  
  472. #endif  /* ifndef MMNOWAVE */
  473.  
  474.  
  475.  
  476. #ifdef __cplusplus
  477. }                       // End of extern "C" {
  478. #endif  // __cplusplus
  479.  
  480. #include "poppack.h"        /* Revert to default packing */
  481.  
  482. #endif // _INC_MMSYSTEM
  483.