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

  1. //
  2. //  THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  3. //  ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
  4. //  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  5. //  PARTICULAR PURPOSE.
  6. //  Copyright (c) 1995, 1996, 1997  Microsoft Corporation
  7. //  
  8. // -----------------------------------------------------------------------------
  9. //
  10. // @doc     WDEV_EXT
  11. //
  12. // @module  wavedev.h | Provides the device.exe DeviceIoControl control codes
  13. //          for communicating with both waveapi.dll and wavedev.dll.
  14. //
  15. // -----------------------------------------------------------------------------
  16. #ifndef __WAVEDEV_H__
  17. #define __WAVEDEV_H__
  18.  
  19. #include "windev.h"
  20.  
  21.  
  22. //------------------------------------------------------------------------------
  23. //
  24. //  @doc    WDEV_EXT
  25. //
  26. //  @topic  Wave Audio API Manager Device Interface |
  27. //          The COREDLL.DLL Dynamic Link Library gives user applications 
  28. //          access to the Waveform Audio functions.
  29. //
  30. //          The Waveform Audio API Manager exports the waveXXX functions via the 
  31. //          device manager's IOCTL calls. IOCTL_XXX constants are defined in
  32. //          wavedev.h.
  33. //
  34. //  @ex     Software Layers |
  35. //     
  36. // *       ===============    ===============
  37. // *       | Application |    | Application |  Module(s)
  38. // *       ===============    ===============
  39. // *      
  40. // *         --------- MMSYSTEM.H ---------    Interface
  41. // *      
  42. // *       ==================================
  43. // *       |          COREDLL.DLL           |  Module  (coredll.dll)
  44. // *       ==================================
  45. // *      
  46. // *         ---------- WAVEDEV.H ---------    Interface
  47. // *      
  48. // *         ------ DeviceIoControl() -----    PSL API
  49. // *      
  50. // *       ==================================
  51. // *       |     WAPI (Wave API Manager)    |  Module (waveapi.dll)
  52. // *       ==================================
  53. // *      
  54. // *         ---------- WAVEDEV.H ---------    Interface
  55. // *      
  56. // *         ------ DeviceIoControl() -----    PSL API
  57. // *      
  58. // *       ==================================
  59. // *       |            WAVEMDD             |  Module (wavedev.dll)
  60. // *       ==================================
  61. // *      
  62. // *         --------- WAVEDDSI.H ---------    Interface
  63. // *      
  64. // *       ==================================
  65. // *       |            WAVEPDD             |  Module (wavedev.dll)
  66. // *       ==================================
  67. //
  68. //------------------------------------------------------------------------------
  69.  
  70.  
  71.  
  72. //
  73. // DeviceIOControl dwIoControlCode values for Wave In devices
  74. //
  75. #define IOCTL_WAVE_IN_ADD_BUFFER         CTL_CODE(FILE_DEVICE_WAVE_IN, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
  76. #define IOCTL_WAVE_IN_CLOSE              CTL_CODE(FILE_DEVICE_WAVE_IN, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
  77. #define IOCTL_WAVE_IN_GET_DEV_CAPS       CTL_CODE(FILE_DEVICE_WAVE_IN, 3, METHOD_BUFFERED, FILE_ANY_ACCESS)
  78. #define IOCTL_WAVE_IN_GET_ERROR_TEXT     CTL_CODE(FILE_DEVICE_WAVE_IN, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
  79. #define IOCTL_WAVE_IN_GET_ID             CTL_CODE(FILE_DEVICE_WAVE_IN, 5, METHOD_BUFFERED, FILE_ANY_ACCESS)
  80. #define IOCTL_WAVE_IN_GET_NUM_DEVS       CTL_CODE(FILE_DEVICE_WAVE_IN, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
  81. #define IOCTL_WAVE_IN_GET_POSITION       CTL_CODE(FILE_DEVICE_WAVE_IN, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
  82. #define IOCTL_WAVE_IN_MESSAGE            CTL_CODE(FILE_DEVICE_WAVE_IN, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
  83. #define IOCTL_WAVE_IN_OPEN               CTL_CODE(FILE_DEVICE_WAVE_IN, 9, METHOD_BUFFERED, FILE_ANY_ACCESS)
  84. #define IOCTL_WAVE_IN_PREPARE_HEADER     CTL_CODE(FILE_DEVICE_WAVE_IN,10, METHOD_BUFFERED, FILE_ANY_ACCESS)
  85. #define IOCTL_WAVE_IN_RESET              CTL_CODE(FILE_DEVICE_WAVE_IN,11, METHOD_BUFFERED, FILE_ANY_ACCESS)
  86. #define IOCTL_WAVE_IN_START              CTL_CODE(FILE_DEVICE_WAVE_IN,12, METHOD_BUFFERED, FILE_ANY_ACCESS)
  87. #define IOCTL_WAVE_IN_STOP               CTL_CODE(FILE_DEVICE_WAVE_IN,13, METHOD_BUFFERED, FILE_ANY_ACCESS)
  88. #define IOCTL_WAVE_IN_UNPREPARE_HEADER   CTL_CODE(FILE_DEVICE_WAVE_IN,14, METHOD_BUFFERED, FILE_ANY_ACCESS)
  89.  
  90. #define IOCTL_WAVE_OUT_BREAK_LOOP        CTL_CODE(FILE_DEVICE_WAVE_OUT, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
  91. #define IOCTL_WAVE_OUT_CLOSE             CTL_CODE(FILE_DEVICE_WAVE_OUT, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
  92. #define IOCTL_WAVE_OUT_GET_DEV_CAPS      CTL_CODE(FILE_DEVICE_WAVE_OUT, 3, METHOD_BUFFERED, FILE_ANY_ACCESS)
  93. #define IOCTL_WAVE_OUT_GET_ERROR_TEXT    CTL_CODE(FILE_DEVICE_WAVE_OUT, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
  94. #define IOCTL_WAVE_OUT_GET_ID            CTL_CODE(FILE_DEVICE_WAVE_OUT, 5, METHOD_BUFFERED, FILE_ANY_ACCESS)
  95. #define IOCTL_WAVE_OUT_GET_NUM_DEVS      CTL_CODE(FILE_DEVICE_WAVE_OUT, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
  96. #define IOCTL_WAVE_OUT_GET_PITCH         CTL_CODE(FILE_DEVICE_WAVE_OUT, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
  97. #define IOCTL_WAVE_OUT_GET_PLAYBACK_RATE CTL_CODE(FILE_DEVICE_WAVE_OUT, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
  98. #define IOCTL_WAVE_OUT_GET_POSITION      CTL_CODE(FILE_DEVICE_WAVE_OUT, 9, METHOD_BUFFERED, FILE_ANY_ACCESS)
  99. #define IOCTL_WAVE_OUT_GET_VOLUME        CTL_CODE(FILE_DEVICE_WAVE_OUT,10, METHOD_BUFFERED, FILE_ANY_ACCESS)
  100. #define IOCTL_WAVE_OUT_MESSAGE           CTL_CODE(FILE_DEVICE_WAVE_OUT,11, METHOD_BUFFERED, FILE_ANY_ACCESS)
  101. #define IOCTL_WAVE_OUT_OPEN              CTL_CODE(FILE_DEVICE_WAVE_OUT,12, METHOD_BUFFERED, FILE_ANY_ACCESS)
  102. #define IOCTL_WAVE_OUT_PAUSE             CTL_CODE(FILE_DEVICE_WAVE_OUT,13, METHOD_BUFFERED, FILE_ANY_ACCESS)
  103. #define IOCTL_WAVE_OUT_PREPARE_HEADER    CTL_CODE(FILE_DEVICE_WAVE_OUT,14, METHOD_BUFFERED, FILE_ANY_ACCESS)
  104. #define IOCTL_WAVE_OUT_RESET             CTL_CODE(FILE_DEVICE_WAVE_OUT,15, METHOD_BUFFERED, FILE_ANY_ACCESS)
  105. #define IOCTL_WAVE_OUT_RESTART           CTL_CODE(FILE_DEVICE_WAVE_OUT,16, METHOD_BUFFERED, FILE_ANY_ACCESS)
  106. #define IOCTL_WAVE_OUT_SET_PITCH         CTL_CODE(FILE_DEVICE_WAVE_OUT,17, METHOD_BUFFERED, FILE_ANY_ACCESS)
  107. #define IOCTL_WAVE_OUT_SET_PLAYBACK_RATE CTL_CODE(FILE_DEVICE_WAVE_OUT,18, METHOD_BUFFERED, FILE_ANY_ACCESS)
  108. #define IOCTL_WAVE_OUT_SET_VOLUME        CTL_CODE(FILE_DEVICE_WAVE_OUT,19, METHOD_BUFFERED, FILE_ANY_ACCESS)
  109. #define IOCTL_WAVE_OUT_UNPREPARE_HEADER  CTL_CODE(FILE_DEVICE_WAVE_OUT,20, METHOD_BUFFERED, FILE_ANY_ACCESS)
  110. #define IOCTL_WAVE_OUT_WRITE             CTL_CODE(FILE_DEVICE_WAVE_OUT,21, METHOD_BUFFERED, FILE_ANY_ACCESS)
  111.  
  112. #define IOCTL_SND_PLAY_SOUND             CTL_CODE(FILE_DEVICE_SOUND,    1, METHOD_BUFFERED, FILE_ANY_ACCESS)
  113. #define IOCTL_PLAY_SOUND                 CTL_CODE(FILE_DEVICE_SOUND,    2, METHOD_BUFFERED, FILE_ANY_ACCESS)
  114.  
  115. // For sending messages to the "WAV" device audio driver (wavedev.dll)
  116. #define IOCTL_WAV_MESSAGE                CTL_CODE(FILE_DEVICE_SOUND,    3, METHOD_BUFFERED, FILE_ANY_ACCESS)
  117.  
  118. //
  119. // For sending messages to an installed "ACM" device codec
  120. //
  121. #define IOCTL_ACM_MESSAGE                   CTL_CODE(FILE_DEVICE_SOUND,  100, METHOD_BUFFERED, FILE_ANY_ACCESS)
  122. //
  123. // IOCTL values for Win32 ACM Functions sent to waveapi.dll
  124. //
  125. #define IOCTL_ACM_DRIVER_ADD                CTL_CODE(FILE_DEVICE_SOUND,  110, METHOD_BUFFERED, FILE_ANY_ACCESS)
  126. #define IOCTL_ACM_DRIVER_CLOSE              CTL_CODE(FILE_DEVICE_SOUND,  111, METHOD_BUFFERED, FILE_ANY_ACCESS)
  127. #define IOCTL_ACM_DRIVER_DETAILS            CTL_CODE(FILE_DEVICE_SOUND,  112, METHOD_BUFFERED, FILE_ANY_ACCESS)
  128. #define IOCTL_ACM_DRIVER_ENUM               CTL_CODE(FILE_DEVICE_SOUND,  113, METHOD_BUFFERED, FILE_ANY_ACCESS)
  129. #define IOCTL_ACM_DRIVER_ID                 CTL_CODE(FILE_DEVICE_SOUND,  114, METHOD_BUFFERED, FILE_ANY_ACCESS)
  130. #define IOCTL_ACM_DRIVER_MESSAGE            CTL_CODE(FILE_DEVICE_SOUND,  115, METHOD_BUFFERED, FILE_ANY_ACCESS)
  131. #define IOCTL_ACM_DRIVER_OPEN               CTL_CODE(FILE_DEVICE_SOUND,  116, METHOD_BUFFERED, FILE_ANY_ACCESS)
  132. #define IOCTL_ACM_DRIVER_PRIORITY           CTL_CODE(FILE_DEVICE_SOUND,  117, METHOD_BUFFERED, FILE_ANY_ACCESS)
  133. #define IOCTL_ACM_DRIVER_REMOVE             CTL_CODE(FILE_DEVICE_SOUND,  118, METHOD_BUFFERED, FILE_ANY_ACCESS)
  134.  
  135. #define IOCTL_ACM_FILTER_CHOOSE             CTL_CODE(FILE_DEVICE_SOUND,  120, METHOD_BUFFERED, FILE_ANY_ACCESS)
  136. #define IOCTL_ACM_FILTER_DETAILS            CTL_CODE(FILE_DEVICE_SOUND,  121, METHOD_BUFFERED, FILE_ANY_ACCESS)
  137. #define IOCTL_ACM_FILTER_ENUM               CTL_CODE(FILE_DEVICE_SOUND,  122, METHOD_BUFFERED, FILE_ANY_ACCESS)
  138. #define IOCTL_ACM_FILTER_TAG_DETAILS        CTL_CODE(FILE_DEVICE_SOUND,  123, METHOD_BUFFERED, FILE_ANY_ACCESS)
  139. #define IOCTL_ACM_FILTER_TAG_ENUM           CTL_CODE(FILE_DEVICE_SOUND,  124, METHOD_BUFFERED, FILE_ANY_ACCESS)
  140.  
  141. #define IOCTL_ACM_FORMAT_CHOOSE             CTL_CODE(FILE_DEVICE_SOUND,  130, METHOD_BUFFERED, FILE_ANY_ACCESS)
  142. #define IOCTL_ACM_FORMAT_DETAILS            CTL_CODE(FILE_DEVICE_SOUND,  131, METHOD_BUFFERED, FILE_ANY_ACCESS)
  143. #define IOCTL_ACM_FORMAT_ENUM               CTL_CODE(FILE_DEVICE_SOUND,  132, METHOD_BUFFERED, FILE_ANY_ACCESS)
  144. #define IOCTL_ACM_FORMAT_SUGGEST            CTL_CODE(FILE_DEVICE_SOUND,  133, METHOD_BUFFERED, FILE_ANY_ACCESS)
  145. #define IOCTL_ACM_FORMAT_TAG_DETAILS        CTL_CODE(FILE_DEVICE_SOUND,  134, METHOD_BUFFERED, FILE_ANY_ACCESS)
  146. #define IOCTL_ACM_FORMAT_TAG_ENUM           CTL_CODE(FILE_DEVICE_SOUND,  135, METHOD_BUFFERED, FILE_ANY_ACCESS)
  147.  
  148. #define IOCTL_ACM_STREAM_CLOSE              CTL_CODE(FILE_DEVICE_SOUND,  140, METHOD_BUFFERED, FILE_ANY_ACCESS)
  149. #define IOCTL_ACM_STREAM_CONVERT            CTL_CODE(FILE_DEVICE_SOUND,  141, METHOD_BUFFERED, FILE_ANY_ACCESS)
  150. #define IOCTL_ACM_STREAM_MESSAGE            CTL_CODE(FILE_DEVICE_SOUND,  142, METHOD_BUFFERED, FILE_ANY_ACCESS)
  151. #define IOCTL_ACM_STREAM_OPEN               CTL_CODE(FILE_DEVICE_SOUND,  143, METHOD_BUFFERED, FILE_ANY_ACCESS)
  152. #define IOCTL_ACM_STREAM_PREPARE_HEADER     CTL_CODE(FILE_DEVICE_SOUND,  144, METHOD_BUFFERED, FILE_ANY_ACCESS)
  153. #define IOCTL_ACM_STREAM_RESET              CTL_CODE(FILE_DEVICE_SOUND,  145, METHOD_BUFFERED, FILE_ANY_ACCESS)
  154. #define IOCTL_ACM_STREAM_SIZE               CTL_CODE(FILE_DEVICE_SOUND,  146, METHOD_BUFFERED, FILE_ANY_ACCESS)
  155. #define IOCTL_ACM_STREAM_UNPREPARE_HEADER   CTL_CODE(FILE_DEVICE_SOUND,  147, METHOD_BUFFERED, FILE_ANY_ACCESS)
  156.  
  157. #define IOCTL_ACM_GET_VERSION               CTL_CODE(FILE_DEVICE_SOUND,  150, METHOD_BUFFERED, FILE_ANY_ACCESS)
  158. #define IOCTL_ACM_METRICS                   CTL_CODE(FILE_DEVICE_SOUND,  151, METHOD_BUFFERED, FILE_ANY_ACCESS)
  159.  
  160.  
  161.  
  162.  
  163. //------------------------------------------------------------------------------
  164. //
  165. //  @doc    WDEV_EXT
  166. //
  167. //  @struct MMDRV_MESSAGE_PARAMS | Structure for parameters passed to 
  168. //          the <f WAV_IOControl>() function.
  169. //
  170. //  @field  UINT | uDeviceId |
  171. //          Device identifier (0, 1, 2, and so on) for the target device.
  172. //
  173. //  @field  UINT | uMsg | Specifies one of the <t Wave Input Driver Messages> 
  174. //          or <t Wave Output Driver Messages>.
  175. //
  176. //  @field  DWORD | dwUser | Specifies a device instance identifier. For
  177. //          the <m WODM_OPEN> and <m WIDM_OPEN> messages, this is an <p output> 
  178. //          parameter. The device creates an instance identifier and 
  179. //          returns it in the address specified as the argument. For all 
  180. //          other messages, this is an <p input> parameter. The argument 
  181. //          is the instance identifier.
  182. //
  183. //  @field  DWORD | dwParam1 | Specifies the first message parameter. 
  184. //          Dependent on message type.
  185. //
  186. //  @field  DWORD | dwParam2 | Specifies the second message parameter. 
  187. //          Dependent on message type.
  188. //
  189. //  @xref   <t Wave Input Driver Messages> (WIDM_XXX) <nl>
  190. //          <t Wave Output Driver Messages> (WODM_XXX)
  191. //
  192. //------------------------------------------------------------------------------
  193. typedef struct {
  194.     UINT uDeviceId;
  195.     UINT uMsg;
  196.     DWORD dwUser;
  197.     DWORD dwParam1;
  198.     DWORD dwParam2;
  199. } MMDRV_MESSAGE_PARAMS, *PMMDRV_MESSAGE_PARAMS;
  200.  
  201.  
  202. //------------------------------------------------------------------------------
  203. //
  204. //  @doc    WACM_EXT
  205. //
  206. //  @struct ACMDRV_MESSAGE_PARAMS | Structure for parameters passed to 
  207. //          the <f ACM_IOControl>() function.
  208. //
  209. //  @field  DWORD | dwDriverID |
  210. //          Instance identifier. This value is message-dependent. 
  211. //
  212. //  @field  HANDLE | hDriver | Driver handle.
  213. //
  214. //  @field  UINT | uMsg | Specifies one of the <t ACM Driver Messages>.
  215. //
  216. //  @field  LPARAM | lParam1 | Specifies the first message parameter. 
  217. //          Dependent on message type.
  218. //
  219. //  @field  LPARAM | lParam2 | Specifies the second message parameter. 
  220. //          Dependent on message type.
  221. //
  222. //  @xref   <t ACM Driver Messages> (ACMDM_XXX)
  223. //
  224. //------------------------------------------------------------------------------
  225. typedef struct {
  226.     DWORD  dwDeviceId;
  227.     HANDLE hDriver;
  228.     UINT   uMsg;
  229.     LPARAM lParam1;
  230.     LPARAM lParam2;
  231. } ACMDRV_MESSAGE_PARAMS, *PACMDRV_MESSAGE_PARAMS;
  232.  
  233.  
  234. //------------------------------------------------------------------------------
  235. //
  236. // Parameters for the WC_PlayClick function.  This function allows an
  237. // OEM to provide a function for playing Touch and Key Clicks on a device
  238. // other than the standard wave device.
  239. //
  240. //------------------------------------------------------------------------------
  241. typedef BOOL  (*PFN_WAVE_PLAY_CLICK)(
  242.     WORD wClickType,     // Is this a touch or a key click
  243.     WORD wClickVolume,   // Is it soft, loud, or muted
  244.     DWORD dwResID        // What resource ID was read from the registry
  245.     );  
  246.  
  247. // Possible values for wClickType
  248. #define WC_CLICKTYPE_TOUCH 0
  249. #define WC_CLICKTYPE_KEYBD 1
  250.  
  251. // Possible values for wClickVolume.  Muted must be zero in order for
  252. // default case to work correctly in UpdateFromRegistry
  253. #define WC_CLICKVOL_MUTED 0
  254. #define WC_CLICKVOL_QUIET 1
  255. #define WC_CLICKVOL_LOUD  2
  256.  
  257.  
  258. #endif // __WAVEDEV_H__
  259.