home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / warptlk3.zip / TOOLKIT / H / MMSYSTEM.H < prev    next >
C/C++ Source or Header  |  1995-08-24  |  123KB  |  2,220 lines

  1. /****************************************************************************/
  2. /*                                                                          */
  3. /* Module Name: MMSYSTEM.H                                                  */
  4. /*                                                                          */
  5. /* This is the multimedia include file that has the typedefs, defines and   */
  6. /* function prototyes for Media Control Interface of MMPM/2 (tm)            */
  7. /*                                                                          */
  8. /* Copyright (c) International Business Machines Corporation 1991, 1992     */
  9. /*                        All Rights Reserved                               */
  10. /*                                                                          */
  11. /****************************************************************************/
  12. #define MCI_TRUE                        1
  13. #define MCI_FALSE                       0
  14.  
  15. /*********************************************************************/
  16. /*                                                                   */
  17. /*             MCI command message identifiers                       */
  18. /*                                                                   */
  19. /*********************************************************************/
  20. #define MCI_OPEN                        1
  21. #define MCI_CLOSE                       2
  22. #define MCI_ESCAPE                      3
  23. #define MCI_PLAY                        4
  24. #define MCI_SEEK                        5
  25. #define MCI_STOP                        6
  26. #define MCI_PAUSE                       7
  27. #define MCI_INFO                        8
  28. #define MCI_GETDEVCAPS                  9
  29. #define MCI_STATUS                      10
  30. #define MCI_SPIN                        11
  31. #define MCI_SET                         12
  32. #define MCI_STEP                        13
  33. #define MCI_RECORD                      14
  34. #define MCI_SYSINFO                     15
  35. #define MCI_SAVE                        16
  36. #define MCI_CUE                         17
  37. #define MCI_UPDATE                      18
  38. #define MCI_SET_CUEPOINT                19
  39. #define MCI_SET_POSITION_ADVISE         20
  40. #define MCI_SET_SYNC_OFFSET             21
  41. #define MCI_LOAD                        22
  42. #define MCI_ACQUIREDEVICE               23
  43. #define MCI_RELEASEDEVICE               24
  44. #define MCI_MASTERAUDIO                 25
  45. #define MCI_GETTOC                      26
  46. #define MCI_DEVICESETTINGS              27
  47. #define MCI_CONNECTOR                   28
  48. #define MCI_RESUME                      29
  49. #define MCI_CONNECTORINFO               31
  50. #define MCI_DEFAULT_CONNECTION          32
  51. #define MCI_CONNECTION                  33
  52. #define MCI_GROUP                       34
  53.  
  54.    /*************************************************/
  55.    /* MCI command message identifiers reserved for  */
  56.    /*  Digital Video and Video Overlay              */
  57.    /*************************************************/
  58.  
  59. #define MCI_CAPTURE                     40
  60. #define MCI_FREEZE                      41
  61. #define MCI_GETIMAGEBUFFER              42
  62. #define MCI_GETIMAGEPALETTE             43
  63. #define MCI_PUT                         44
  64. #define MCI_REALIZE                     45
  65. #define MCI_REWIND                      46
  66. #define MCI_RESTORE                     47
  67. #define MCI_SETIMAGEBUFFER              48
  68. #define MCI_SETIMAGEPALETTE             49
  69. #define MCI_UNFREEZE                    50
  70. #define MCI_WHERE                       51
  71. #define MCI_WINDOW                      52
  72.  
  73. #define MCI_DELETE                      53
  74. #define MCI_CUT                         54
  75. #define MCI_PASTE                       55
  76. #define MCI_COPY                        56
  77. #define MCI_REDO                        57
  78. #define MCI_UNDO                        58
  79. #define MCI_MIXNOTIFY                   59
  80. #define MCI_SETTUNER                    60
  81. #define MCI_MAX_COMMAND                 60
  82.  
  83. #define RECT                            DWORD
  84. #define HDCT                            DWORD
  85. /*********************************************************************/
  86. /* this and all subsequent message ID's are reserved for the user    */
  87. /*********************************************************************/
  88. #define MCI_USER_MESSAGES               2000
  89.  
  90. /*********************************************************************/
  91. /* Special Device ID for "all"                                       */
  92. /*********************************************************************/
  93. #define MCI_ALL_DEVICE_ID               0xFFFF
  94.  
  95. /*********************************************************************/
  96. /* MCI implementation limits                                         */
  97. /*********************************************************************/
  98. #define MAX_DEVICE_NAME                 20
  99. #define MAX_ALIAS_NAME                  20
  100. #define MAX_PRODINFO                    40
  101. #define MAX_EXTENSION_NAME              4
  102. #define MAX_DEV_PARAMS                  128
  103. #define MAX_VERSION_NUMBER              6
  104. #define MAX_PDD_NAME                    9
  105. #define MAX_DLL_NAME                    260
  106. #define MAX_CLASSES                     10
  107. #define MAX_CONNECTORS                  10
  108. #define MAX_EXTENSIONS                  25
  109. #define MAX_TYPEBUFFER                  256
  110.  
  111. #ifdef INCL_32
  112. /*********************************************************************/
  113. /* MCI Device Type Constants                                         */
  114. /*********************************************************************/
  115. #define MCI_DEVTYPE_VIDEOTAPE           1
  116. #define MCI_DEVTYPE_VIDEODISC           2
  117. #define MCI_DEVTYPE_CD_AUDIO            3
  118. #define MCI_DEVTYPE_DAT                 4
  119. #define MCI_DEVTYPE_AUDIO_TAPE          5
  120. #define MCI_DEVTYPE_OTHER               6
  121. #define MCI_DEVTYPE_WAVEFORM_AUDIO      7
  122. #define MCI_DEVTYPE_SEQUENCER           8
  123. #define MCI_DEVTYPE_AUDIO_AMPMIX        9
  124. #define MCI_DEVTYPE_OVERLAY             10
  125. #define MCI_DEVTYPE_ANIMATION           11
  126. #define MCI_DEVTYPE_DIGITAL_VIDEO       12
  127. #define MCI_DEVTYPE_SPEAKER             13
  128. #define MCI_DEVTYPE_HEADPHONE           14
  129. #define MCI_DEVTYPE_MICROPHONE          15
  130. #define MCI_DEVTYPE_MONITOR             16
  131. #define MCI_DEVTYPE_CDXA                17
  132.  
  133. /*********************************************************************/
  134. /* MCI Device Type Names                                             */
  135. /*********************************************************************/
  136. #define MCI_DEVTYPE_VIDEOTAPE_NAME          "Videotape"
  137. #define MCI_DEVTYPE_VIDEODISC_NAME          "Videodisc"
  138. #define MCI_DEVTYPE_CD_AUDIO_NAME           "CDaudio"
  139. #define MCI_DEVTYPE_DAT_NAME                "DAT"
  140. #define MCI_DEVTYPE_AUDIO_TAPE_NAME         "Audiotape"
  141. #define MCI_DEVTYPE_OTHER_NAME              "Other"
  142. #define MCI_DEVTYPE_WAVEFORM_AUDIO_NAME     "Waveaudio"
  143. #define MCI_DEVTYPE_SEQUENCER_NAME          "Sequencer"
  144. #define MCI_DEVTYPE_AUDIO_AMPMIX_NAME       "Ampmix"
  145. #define MCI_DEVTYPE_OVERLAY_NAME            "Overlay"
  146. #define MCI_DEVTYPE_ANIMATION_NAME          "Animation"
  147. #define MCI_DEVTYPE_DIGITAL_VIDEO_NAME      "Digitalvideo"
  148. #define MCI_DEVTYPE_SPEAKER_NAME            "Speaker"
  149. #define MCI_DEVTYPE_HEADPHONE_NAME          "Headphone"
  150. #define MCI_DEVTYPE_MICROPHONE_NAME         "Microphone"
  151. #define MCI_DEVTYPE_MONITOR_NAME            "Monitor"
  152. #define MCI_DEVTYPE_CDXA_NAME               "CDXA"
  153.  
  154. #define MCI_MAX_SYSTEM_DEVICE_NAMES         17
  155.  
  156. #endif                       /* INCL_32 */
  157.  
  158. /*********************************************************************/
  159. /* Getdevcaps, set, and status item base values                      */
  160. /*********************************************************************/
  161.  
  162. #define MCI_AMP_ITEM_BASE                   0x00001000L
  163. #define MCI_CD_ITEM_BASE                    0x00002000L
  164. #define MCI_CDXA_ITEM_BASE                  0x00003000L
  165. #define MCI_VD_ITEM_BASE                    0x00004000L
  166. #define MCI_SEQ_ITEM_BASE                   0x00005000L
  167. #define MCI_WAVE_ITEM_BASE                  0x00006000L
  168. #define MCI_VID_ITEM_BASE                   0x00007000L
  169. #define MCI_DGV_ITEM_BASE                   0x00008000L
  170. #define MCI_OVLY_ITEM_BASE                  0x00009000L
  171.  
  172. /*********************************************************************/
  173. /* Flags for mciDriverNotify                                         */
  174. /*********************************************************************/
  175. #define MCI_NOTIFY_SUCCESSFUL               0x0000
  176. #define MCI_NOTIFY_SUPERSEDED               0x0001
  177. #define MCI_NOTIFY_ABORTED                  0x0002
  178. #define MCI_NOTIFY_ERROR                    0x0003
  179.  
  180. /*********************************************************************/
  181. /* mciDriverNotify  Message Types                                    */
  182. /*********************************************************************/
  183. #define MM_MCINOTIFY                        0x0500
  184. #define MM_MCIPASSDEVICE                    0x0501
  185. #define MM_MCIPOSITIONCHANGE                0x0502
  186. #define MM_MCICUEPOINT                      0x0503
  187. #define MM_MCIPLAYLISTMESSAGE               0x0504
  188. #define MM_MCIEVENT                         0x0505
  189. #define MM_MCISYNCH                         0x0506
  190.  
  191. #define MCI_LOSING_USE                      0x00000001L
  192. #define MCI_GAINING_USE                     0x00000002L
  193.  
  194. /*********************************************************************/
  195. /* Common message flags                                              */
  196. /*     0x000000XX are reserved for common flags                      */
  197. /*********************************************************************/
  198. #define MCI_NOTIFY                          0x00000001L
  199. #define MCI_WAIT                            0x00000002L
  200. #define MCI_FROM                            0x00000004L
  201. #define MCI_TO                              0x00000008L
  202. #define MCI_MILLISECONDS                    0x00000010L
  203. #define MCI_TRACK                           0x00000020L
  204. #define MCI_OVER                            0x00000040L
  205. #define MCI_TEST                            0x00000080L
  206. #define MCI_TO_BUFFER                       0x00000100L
  207. #define MCI_FROM_BUFFER                     0x00000200L
  208. #define MCI_CONVERT_FORMAT                  0x00000400L
  209.  
  210.  
  211. /*********************************************************************/
  212. /* Time formats                                                      */
  213. /*********************************************************************/
  214. #define MCI_FORMAT_MILLISECONDS             0x00000001L
  215. #define MCI_FORMAT_MMTIME                   0x00000002L
  216. #define MCI_FORMAT_MSF                      0x00000005L
  217. #define MCI_FORMAT_TMSF                     0x00000006L
  218. #define MCI_FORMAT_CHAPTERS                 0x00000007L
  219. #define MCI_FORMAT_FRAMES                   0x00000008L
  220. #define MCI_FORMAT_HMS                      0x00000009L
  221. #define MCI_FORMAT_TRACKS                   0x0000000AL
  222. #define MCI_FORMAT_BYTES                    0x0000000BL
  223. #define MCI_FORMAT_SAMPLES                  0x0000000CL
  224. #define MCI_FORMAT_HMSF                     0x0000000DL
  225. #define MCI_FORMAT_SET_SMPTE_24             0x0000000EL
  226. #define MCI_FORMAT_SET_SMPTE_25             0x0000000FL
  227. #define MCI_FORMAT_SET_SMPTE_30             0x00000010L
  228. #define MCI_FORMAT_SET_SMPTE_30DROP         0x00000011L
  229. #define MCI_FORMAT_SET_SONGPTR              0x00000012L
  230. #define MCI_FORMAT_USEC                     0x00000013L
  231.  
  232. /*********************************************************************/
  233. /* Speed formats                                                     */
  234. /*********************************************************************/
  235. #define MCI_FORMAT_PERCENTAGE               0x00000003L
  236. #define MCI_FORMAT_FPS                      0x00000004L
  237.  
  238.  
  239. /*********************************************************************/
  240. /*                                                                   */
  241. /*  Time format conversions macros                                   */
  242. /*                                                                   */
  243. /*********************************************************************/
  244. #define MSECTOMM(value)      (((value) > (0xFFFFFFFF /3)) ? 0L : \
  245.                               ((value) * 3))
  246.  
  247. #define MSECFROMMM(value)    (((value)+1) / 3)
  248.  
  249. #define REDBOOKTOMM(value)   ((((value) & 0x000000FF) * 60 * 3000) + \
  250.                               (((value) & 0x0000FF00) / 0x100 * 3000) + \
  251.                               (((value) & 0x00FF0000) / 0x10000 * 3000/75))
  252.  
  253. #define FPS24TOMM(value) ((((value) & 0x000000FF) * 60 * 60 * 3000) + \
  254.                           (((value) & 0x0000FF00) / 0x100 * 60 * 3000) + \
  255.                           (((value) & 0x00FF0000) / 0x10000 * 3000) + \
  256.                           (((value) & 0xFF000000) / 0x1000000 * 3000/24))
  257.  
  258. #define FPS25TOMM(value) ((((value) & 0x000000FF) * 60 * 60 * 3000) + \
  259.                           (((value) & 0x0000FF00) / 0x100 * 60 * 3000) + \
  260.                           (((value) & 0x00FF0000) / 0x10000 * 3000) + \
  261.                           (((value) & 0xFF000000) / 0x1000000 * 3000/25))
  262.  
  263. #define FPS30TOMM(value) ((((value) & 0x000000FF) * 60 * 60 * 3000) + \
  264.                           (((value) & 0x0000FF00) / 0x100 * 60 * 3000) + \
  265.                           (((value) & 0x00FF0000) / 0x10000 * 3000) + \
  266.                           (((value) & 0xFF000000) / 0x1000000 * 3000/30))
  267.  
  268. #define HMSTOMM(value)   ((((value) & 0x000000FF) * 60 * 60 * 3000) + \
  269.                           (((value) & 0x0000FF00) / 0x100 * 60 * 3000) + \
  270.                           (((value) & 0x00FF0000) / 0x10000 * 3000))
  271.  
  272.  
  273.   /* The +20 is used for rounding purposes.  It is derived by:           */
  274.   /*   1/2 * ((300 MMTIME/SEC / (75 FRAMES/SEC)) = 20 MMTIME/HALF-FRAME  */
  275. #define REDBOOKFROMMM(value) ((((value)+20) >= 0x100*60*3000) ? 0L : \
  276.                               ((((value)+20) / (60*3000)) + \
  277.                                (((value)+20) % (60*3000) / 3000 << 8) + \
  278.                                (((value)+20) / (3000/75) % 75 << 16)))
  279.  
  280. #define FPS24FROMMM(value) ((((value)+63) >= 0x100*60*60*3000) ? 0L : \
  281.                         (((((((value)+63) % 3000)/(3000/24)) << 24) & 0xFF000000) | \
  282.                          ((((((value)+63) / 3000) % 60) << 16) & 0x00FF0000)      | \
  283.                         (((((((value)+63) / 3000) / 60) % 60) << 8) & 0x0000FF00) | \
  284.                          ((((((value)+63) / 3000) / 60) / 60)  & 0x000000FF)))
  285.  
  286. #define FPS25FROMMM(value) ((((value)+60) >= 0x100*60*60*3000) ? 0L : \
  287.                         (((((((value)+60) % 3000)/(3000/25)) << 24) & 0xFF000000) | \
  288.                          ((((((value)+60) / 3000) % 60) << 16) & 0x00FF0000)      | \
  289.                         (((((((value)+60) / 3000) / 60) % 60) << 8) & 0x0000FF00) | \
  290.                          ((((((value)+60) / 3000) / 60) / 60)  & 0x000000FF)))
  291.  
  292. #define FPS30FROMMM(value) ((((value)+50) >= 0x100*60*60*3000) ? 0L : \
  293.                         (((((((value)+50) % 3000)/(3000/30)) << 24) & 0xFF000000) | \
  294.                          ((((((value)+50) / 3000) % 60) << 16) & 0x00FF0000)      | \
  295.                         (((((((value)+50) / 3000) / 60) % 60) << 8) & 0x0000FF00) | \
  296.                          ((((((value)+50) / 3000) / 60) / 60)  & 0x000000FF)))
  297.  
  298. #define HMSFROMMM(value) ((((value)+50) >= 0x100*60*60*3000) ? 0L : \
  299.                         (((((((value)+50) / 3000) % 60) << 16) & 0x00FF0000)      | \
  300.                         (((((((value)+50) / 3000) / 60) % 60) << 8) & 0x0000FF00) | \
  301.                          ((((((value)+50) / 3000) / 60) / 60)  & 0x000000FF)))
  302.  
  303. #define TMSF_TRACK(time)     (*(BYTE *)(&(time)))
  304. #define TMSF_MINUTE(time)    (*((BYTE *)(&(time))+1))
  305. #define TMSF_SECOND(time)    (*((BYTE *)(&(time))+2))
  306. #define TMSF_FRAME(time)     (*((BYTE *)(&(time))+3))
  307. #define MSF_MINUTE(time)     (*(BYTE *)(&(time)))
  308. #define MSF_SECOND(time)     (*((BYTE *)(&(time))+1))
  309. #define MSF_FRAME(time)      (*((BYTE *)(&(time))+2))
  310.  
  311. /*********************************************************************/
  312. /*                                                                   */
  313. /*  BYTE ACCESS WITH A DWORD MACROS                                  */
  314. /*                                                                   */
  315. /*********************************************************************/
  316. #define DWORD_LWLB(dw)    (*(BYTE *)((DWORD *)(&dw)))     /* Low  Word Low Byte  */
  317. #define DWORD_LWHB(dw)    (*((BYTE *)((DWORD *)(&dw))+1)) /* Low  Word High Byte */
  318. #define DWORD_HWLB(dw)    (*((BYTE *)((DWORD *)(&dw))+2)) /* High Word Low Byte  */
  319. #define DWORD_HWHB(dw)    (*((BYTE *)((DWORD *)(&dw))+3)) /* High Word High Byte */
  320. #define DWORD_LOWD(dw)    (*(WORD *)((DWORD *)(&dw)))     /* Low  Word           */
  321. #define DWORD_HIWD(dw)    (*((WORD *)((DWORD *)(&dw))+1)) /* High Word           */
  322.  
  323. #ifdef INCL_32
  324.  
  325. #pragma pack(1)
  326.  
  327. /*********************************************************************/
  328. /* parameters for default command messages with empty parameter lists*/
  329. /*********************************************************************/
  330. typedef struct _MCI_GENERIC_PARMS {
  331.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  332. } MCI_GENERIC_PARMS;
  333. typedef MCI_GENERIC_PARMS   *LPMCI_GENERIC_PARMS;
  334.  
  335.  
  336. /*********************************************************************/
  337. /* flags for the MCI_ACQUIREDEVICE message                           */
  338. /*     0x00000X00 are reserved for MCI_ACQUIREDEVICE flags           */
  339. /*********************************************************************/
  340. #define MCI_EXCLUSIVE                       0x00000100L
  341. #define MCI_EXCLUSIVE_INSTANCE              0x00000200L
  342. #define MCI_ACQUIRE_QUEUE                   0x00000400L
  343.  
  344.  
  345. /*********************************************************************/
  346. /* flags for the MCI_CAPTURE message                                 */
  347. /*     0x0000XX00 are reserved for MCI_CAPTURE flags                 */
  348. /*     MCI_CONVERT is used by MCI_GETIMAGEBUFFER, MCI_SETIMAGEBUFFER */
  349. /*                            MCI_CAPTURE, and MCI_RESTORE           */
  350. /*********************************************************************/
  351. #define MCI_CAPTURE_RECT                    0x00000100L
  352. #define MCI_CONVERT                         0x00001000L
  353.  
  354. /*********************************************************************/
  355. /* parameter structure for the MCI_CAPTURE message                   */
  356. /*********************************************************************/
  357. typedef struct _MCI_CAPTURE_PARMS {
  358.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  359.     RECTL   rect;            /* Rectangle array specifying the area to  */
  360.                              /* be captured                             */
  361. } MCI_CAPTURE_PARMS;
  362. typedef MCI_CAPTURE_PARMS   *LPMCI_CAPTURE_PARMS;
  363.  
  364.  
  365. /*********************************************************************/
  366. /* flags for MCI_CONNECTOR and MCI_CONNECTION messages               */
  367. /*********************************************************************/
  368. #define MCI_ENABLE_CONNECTOR                0x00000100L
  369. #define MCI_DISABLE_CONNECTOR               0x00000200L
  370. #define MCI_QUERY_CONNECTOR_STATUS          0x00000400L
  371. #define MCI_CONNECTOR_TYPE                  0x00000800L
  372. #define MCI_CONNECTOR_INDEX                 0x00001000L
  373. #define MCI_TO_CONNECTOR_INDEX              0x00002000L
  374. #define MCI_TO_CONNECTOR_TYPE               0x00004000L
  375. #define MCI_QUERY_CONNECTION                0x00008000L
  376. #define MCI_MAKE_CONNECTION                 0x00010000L
  377. #define MCI_BREAK_CONNECTION                0x00020000L
  378. #define MCI_ENUMERATE_CONNECTORS            0x00040000L
  379. #define MCI_QUERY_CONNECTOR_TYPE            0x00080000L
  380. #define MCI_QUERY_VALID_CONNECTION          0x00100000L
  381. #define MCI_CONNECTOR_ALIAS                 0x00200000L
  382.  
  383.  
  384. /*********************************************************************/
  385. /* Connector types                                                   */
  386. /*********************************************************************/
  387. #define MCI_MIDI_STREAM_CONNECTOR           0x00000001L
  388. #define MCI_CD_STREAM_CONNECTOR             0x00000002L
  389. #define MCI_WAVE_STREAM_CONNECTOR           0x00000003L
  390. #define MCI_AMP_STREAM_CONNECTOR            0x00000004L
  391. #define MCI_XA_STREAM_CONNECTOR             0x00000005L
  392. #define MCI_HEADPHONES_CONNECTOR            0x00000006L
  393. #define MCI_SPEAKERS_CONNECTOR              0x00000007L
  394. #define MCI_MICROPHONE_CONNECTOR            0x00000008L
  395. #define MCI_LINE_IN_CONNECTOR               0x00000009L
  396. #define MCI_LINE_OUT_CONNECTOR              0x0000000aL
  397. #define MCI_VIDEO_IN_CONNECTOR              0x0000000bL
  398. #define MCI_VIDEO_OUT_CONNECTOR             0x0000000cL
  399. #define MCI_PHONE_SET_CONNECTOR             0x0000000dL
  400. #define MCI_PHONE_LINE_CONNECTOR            0x0000000eL
  401. #define MCI_AUDIO_IN_CONNECTOR              0x0000000fL
  402. #define MCI_AUDIO_OUT_CONNECTOR             0x00000010L
  403. #define MCI_UNIVERSAL_CONNECTOR             0x00000011L
  404. #define MCI_INTERNAL_AUDIO_CONNECTOR        0x00000012L
  405. #define MCI_MIDI_IN_CONNECTOR               0x00000013L
  406. #define MCI_MIDI_OUT_CONNECTOR              0x00000014L
  407. #define MCI_NULL_CONNECTOR                  0x00000015L
  408.  
  409. /*********************************************************************/
  410. /* parameter structure for the MCI_CONNECTION message                */
  411. /*********************************************************************/
  412. typedef struct _MCI_CONNECTION_PARMS {
  413.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  414.     DWORD   dwConnectorType; /* Connector type                          */
  415.     DWORD   dwConnectorIndex;/* Connector index                         */
  416.     LPSTR   lpstrAlias;      /* Connection device alias                 */
  417.     WORD    wToDeviceID;     /* Connected to device ID                  */
  418.     WORD    wReserved0;      /* Reserved field                          */
  419.     DWORD   dwReserved1;     /* Reserved field                          */
  420.     DWORD   dwReserved2;     /* Reserved field                          */
  421. } MCI_CONNECTION_PARMS;
  422. typedef MCI_CONNECTION_PARMS   *LPMCI_CONNECTION_PARMS;
  423.  
  424. /*********************************************************************/
  425. /* parameter structure for the MCI_CONNECTOR message                 */
  426. /*********************************************************************/
  427. typedef struct _MCI_CONNECTOR_PARMS {
  428.     DWORD  dwCallback;       /* PM window handle for MCI notify message    */
  429.     DWORD  dwReturn;         /* Return information                         */
  430.     DWORD  dwConnectorType;  /* If specified, dwConnectorIndex is relative */
  431.                              /* to the specified connector type            */
  432.     DWORD  dwConnectorIndex; /* Connector number                           */
  433. } MCI_CONNECTOR_PARMS;
  434. typedef MCI_CONNECTOR_PARMS   *LPMCI_CONNECTOR_PARMS;
  435.  
  436. /*********************************************************************/
  437. /* parameter structure for the MCI_CONNECTORINFO message             */
  438. /*********************************************************************/
  439. typedef struct _MCI_CONNECTORINFO_PARMS {
  440.     DWORD  dwCallback;       /* PM window handle for MCI notify message    */
  441.     DWORD  dwReturn;         /* Return information                         */
  442.     DWORD  dwDeviceTypeID;   /* MCI device type                            */
  443.     DWORD  dwConnectorType;  /* If specified, dwConnectorIndex is relative */
  444.                              /* to the specified connector type            */
  445.     DWORD  dwConnectorIndex; /* Connector number                           */
  446.     DWORD  dwToConnectorType;   /* Connector type to test if               */
  447.                                 /* MCI_QUERY_VALID_CONNECTION is specified */
  448. } MCI_CONNECTORINFO_PARMS;
  449. typedef MCI_CONNECTORINFO_PARMS   *LPMCI_CONNECTORINFO_PARMS;
  450.  
  451. /*********************************************************************/
  452. /* flags for the MCI_CUE message                                     */
  453. /*     0x00000x00 are reserved for MCI_CUE flags                     */
  454. /*********************************************************************/
  455. #define MCI_CUE_INPUT                       0x00000100L
  456. #define MCI_CUE_OUTPUT                      0x00000200L
  457.  
  458.     /*************************************************/
  459.     /* Additional flags for Wave Audio for MCI_CUE   */
  460.     /*************************************************/
  461. #define MCI_WAVE_INPUT                      0x00001000L
  462. #define MCI_WAVE_OUTPUT                     0x00002000L
  463.  
  464.  
  465. /*********************************************************************/
  466. /* parameter structure for the MCI_DEFAULT_CONNECTION message        */
  467. /*********************************************************************/
  468. typedef struct _MCI_DEFAULT_CONNECTION_PARMS {
  469.     DWORD dwCallback;        /* PM window handle for MCI notify message    */
  470.     PSZ   pszDevice;         /* Device name                                */
  471.     DWORD dwConnectorType;   /* If specified, dwConnectorIndex is relative */
  472.                              /* to the specified connector type            */
  473.     DWORD dwConnectorIndex;  /* Connector number                           */
  474.     PSZ   pszToDevice;       /* Return device name to which the connection */
  475.                              /* exists                                     */
  476.     DWORD dwToConnectorType; /* Connector type                             */
  477.     DWORD dwToConnectorIndex;   /* Connector number                        */
  478. } MCI_DEFAULT_CONNECTION_PARMS;
  479. typedef MCI_DEFAULT_CONNECTION_PARMS   *LPMCI_DEFAULT_CONNECTION_PARMS;
  480.  
  481. /*********************************************************************/
  482. /* parameter structure for the MCI_DEVICESETTINGS message            */
  483. /*********************************************************************/
  484. typedef struct _MCI_DEVICESETTINGS_PARMS {
  485.     DWORD   dwCallback;      /* PM window handle for MCI notify message    */
  486.     HWND    hwndNotebook;    /* Hwhd to notebook window                    */
  487.     USHORT  usDeviceType;    /* Device type                                */
  488.     PSZ     pszDeviceName;   /* Device name                                */
  489. } MCI_DEVICESETTINGS_PARMS;
  490. typedef MCI_DEVICESETTINGS_PARMS   *LPMCI_DEVICESETTINGS_PARMS;
  491.  
  492. /**********************************************************************/
  493. /* parameter structure for the MCI_CUT / COPY / DELETE / UNDO / etc...*/
  494. /**********************************************************************/
  495. typedef struct _MCI_EDIT_PARMS {
  496.     ULONG   ulCallback;      /* PM window handle for MCI notify message     */
  497.     ULONG   ulStructLen;     /* Length of the Structure                     */
  498.     ULONG   ulFrom;          /* Beginning Point of Range                    */
  499.     ULONG   ulTo;            /* ending point of range                       */
  500.     PVOID   pBuff;           /* user buffer                                 */
  501.     ULONG   ulBufLen;        /* length of user buffer                       */
  502.     PVOID   pHeader;         /* header which describes the buffer           */
  503. } MCI_EDIT_PARMS;
  504. typedef MCI_EDIT_PARMS   *PMCI_EDIT_PARMS;
  505.  
  506. /*********************************************************************/
  507. /* flags and parameter structure for the MCI_ESCAPE message          */
  508. /*     0x00000X00 are reserved for MCI_ESCAPE flags                  */
  509. /*********************************************************************/
  510. #define MCI_ESCAPE_STRING                   0x00000100L
  511.  
  512. typedef struct _MCI_ESCAPE_PARMS {
  513.     DWORD   dwCallback;      /* PM window handle for MCI notify message    */
  514.     LPSTR   lpstrCommand;    /* Command to send to the device              */
  515. } MCI_ESCAPE_PARMS;
  516. typedef MCI_ESCAPE_PARMS   *LPMCI_ESCAPE_PARMS;
  517.  
  518. /*********************************************************************/
  519. /* flags for the MCI_FREEZE message                                  */
  520. /*     0x0000XX00 are reserved for MCI_FREEZE flags                  */
  521. /*********************************************************************/
  522. #define MCI_OVLY_FREEZE_RECT                0x00000100L
  523. #define MCI_OVLY_FREEZE_RECT_OUTSIDE        0x00000200L
  524.  
  525. /*********************************************************************/
  526. /* flags for the MCI_GETDEVCAPS message                              */
  527. /*     0x00XXXX00 are reserved for MCI_GETDEVCAPS flags              */
  528. /*********************************************************************/
  529. #define MCI_GETDEVCAPS_MESSAGE              0x00000100L
  530. #define MCI_GETDEVCAPS_ITEM                 0x00000200L
  531. #define MCI_GETDEVCAPS_EXTENDED             0x00000400L
  532.  
  533.    /*************************************************/
  534.    /* General MCI_GETDEVCAPS item values            */
  535.    /*************************************************/
  536. #define MCI_GETDEVCAPS_CAN_EJECT            0x00000001L
  537. #define MCI_GETDEVCAPS_CAN_LOCKEJECT        0x00000002L
  538. #define MCI_GETDEVCAPS_CAN_PLAY             0x00000003L
  539. #define MCI_GETDEVCAPS_CAN_PROCESS_INTERNAL 0x00000004L
  540. #define MCI_GETDEVCAPS_CAN_RECORD           0x00000005L
  541. #define MCI_GETDEVCAPS_CAN_RECORD_INSERT    0x00000006L
  542. #define MCI_GETDEVCAPS_CAN_SAVE             0x00000007L
  543. #define MCI_GETDEVCAPS_CAN_SETVOLUME        0x00000008L
  544. #define MCI_GETDEVCAPS_CAN_STREAM           0x00000009L
  545. #define MCI_GETDEVCAPS_DEVICE_TYPE          0x0000000AL
  546. #define MCI_GETDEVCAPS_HAS_AUDIO            0x0000000BL
  547. #define MCI_GETDEVCAPS_HAS_VIDEO            0x0000000CL
  548. #define MCI_GETDEVCAPS_PREROLL_TIME         0x0000000DL
  549. #define MCI_GETDEVCAPS_PREROLL_TYPE         0x0000000EL
  550. #define MCI_GETDEVCAPS_USES_FILES           0x0000000FL
  551. #define MCI_GETDEVCAPS_HAS_IMAGE            0x00000010L
  552. #define MCI_GETDEVCAPS_WAVE_FORMAT          0x00000011L
  553.  
  554.     /***********************************************/
  555.     /* return ID's for videodisc MCI_GETDEVCAPS    */
  556.     /***********************************************/
  557. #define MCI_VD_MEDIA_CLV                    0x00000001L
  558. #define MCI_VD_MEDIA_CAV                    0x00000002L
  559. #define MCI_VD_MEDIA_OTHER                  0x00000003L
  560.  
  561.     /*************************************************/
  562.     /* MCI_GETDEVCAPS item values for video devices  */
  563.     /*************************************************/
  564. #define MCI_VID_GETDEVCAPS_CAN_STRETCH       MCI_VID_ITEM_BASE
  565. #define MCI_VID_GETDEVCAPS_CAN_DISTORT       (MCI_VID_ITEM_BASE+1)
  566. #define MCI_VID_GETDEVCAPS_VIDEO_X_EXTENT    (MCI_VID_ITEM_BASE+2)
  567. #define MCI_VID_GETDEVCAPS_VIDEO_Y_EXTENT    (MCI_VID_ITEM_BASE+3)
  568. #define MCI_VID_GETDEVCAPS_IMAGE_X_EXTENT    (MCI_VID_ITEM_BASE+4)
  569. #define MCI_VID_GETDEVCAPS_IMAGE_Y_EXTENT    (MCI_VID_ITEM_BASE+5)
  570. #define MCI_VID_GETDEVCAPS_MAX_WINDOWS       (MCI_VID_ITEM_BASE+6)
  571. #define MCI_VID_GETDEVCAPS_CAN_FREEZE        (MCI_VID_ITEM_BASE+7)
  572. #define MCI_VID_GETDEVCAPS_OVERLAY_GRAPHICS  (MCI_VID_ITEM_BASE+8)
  573.  
  574. #define MCI_VID_GETDEVCAPS_CAN_REVERSE       (MCI_VID_ITEM_BASE+9)
  575. #define MCI_VID_GETDEVCAPS_FAST_RATE         (MCI_VID_ITEM_BASE+10)
  576. #define MCI_VID_GETDEVCAPS_SLOW_RATE         (MCI_VID_ITEM_BASE+11)
  577. #define MCI_VID_GETDEVCAPS_NORMAL_RATE       (MCI_VID_ITEM_BASE+12)
  578. #define MCI_VID_GETDEVCAPS_MINIMUM_RATE      (MCI_VID_ITEM_BASE+13)
  579. #define MCI_VID_GETDEVCAPS_MAXIMUM_RATE      (MCI_VID_ITEM_BASE+14)
  580.  
  581.     /*************************************************/
  582.     /* MCI_GETDEVCAPS flag values for Videodisc      */
  583.     /*************************************************/
  584. #define MCI_VD_GETDEVCAPS_CLV               0x00000400L
  585. #define MCI_VD_GETDEVCAPS_CAV               0x00000800L
  586.  
  587.     /*************************************************/
  588.     /* MCI_GETDEVCAPS item values for Videodisc      */
  589.     /*************************************************/
  590.  
  591. #define MCI_VD_GETDEVCAPS_CAN_REVERSE       MCI_VID_GETDEVCAPS_CAN_REVERSE
  592. #define MCI_VD_GETDEVCAPS_FAST_RATE         MCI_VID_GETDEVCAPS_FAST_RATE
  593. #define MCI_VD_GETDEVCAPS_SLOW_RATE         MCI_VID_GETDEVCAPS_SLOW_RATE
  594. #define MCI_VD_GETDEVCAPS_NORMAL_RATE       MCI_VID_GETDEVCAPS_NORMAL_RATE
  595. #define MCI_VD_GETDEVCAPS_MINIMUM_RATE      MCI_VID_GETDEVCAPS_MINIMUM_RATE
  596. #define MCI_VD_GETDEVCAPS_MAXIMUM_RATE      MCI_VID_GETDEVCAPS_MAXIMUM_RATE
  597.  
  598.     /************************************************/
  599.     /* MCI_GETDEVCAPS item values for Digital Video */
  600.     /************************************************/
  601. #define MCI_DGV_GETDEVCAPS_CAN_REVERSE      MCI_VID_GETDEVCAPS_CAN_REVERSE
  602. #define MCI_DGV_GETDEVCAPS_CAN_STRETCH      MCI_VID_GETDEVCAPS_CAN_STRETCH
  603. #define MCI_DGV_GETDEVCAPS_CAN_DISTORT      MCI_VID_GETDEVCAPS_CAN_DISTORT
  604. #define MCI_DGV_GETDEVCAPS_FAST_RATE        MCI_VID_GETDEVCAPS_FAST_RATE
  605. #define MCI_DGV_GETDEVCAPS_SLOW_RATE        MCI_VID_GETDEVCAPS_SLOW_RATE
  606. #define MCI_DGV_GETDEVCAPS_NORMAL_RATE      MCI_VID_GETDEVCAPS_NORMAL_RATE
  607. #define MCI_DGV_GETDEVCAPS_MINIMUM_RATE     MCI_VID_GETDEVCAPS_MINIMUM_RATE
  608. #define MCI_DGV_GETDEVCAPS_MAXIMUM_RATE     MCI_VID_GETDEVCAPS_MAXIMUM_RATE
  609. #define MCI_DGV_GETDEVCAPS_VIDEO_X_EXTENT   MCI_VID_GETDEVCAPS_VIDEO_X_EXTENT
  610. #define MCI_DGV_GETDEVCAPS_VIDEO_Y_EXTENT   MCI_VID_GETDEVCAPS_VIDEO_Y_EXTENT
  611. #define MCI_DGV_GETDEVCAPS_IMAGE_X_EXTENT   MCI_VID_GETDEVCAPS_IMAGE_X_EXTENT
  612. #define MCI_DGV_GETDEVCAPS_IMAGE_Y_EXTENT   MCI_VID_GETDEVCAPS_IMAGE_Y_EXTENT
  613. #define MCI_DGV_GETDEVCAPS_MAX_WINDOWS      MCI_VID_GETDEVCAPS_MAX_WINDOWS
  614. #define MCI_DGV_GETDEVCAPS_OVERLAY_GRAPHICS MCI_VID_GETDEVCAPS_OVERLAY_GRAPHICS
  615. #define MCI_DGV_GETDEVCAPS_HAS_TUNER        (MCI_DGV_ITEM_BASE)
  616. #define MCI_DGV_GETDEVCAPS_HAS_TELETEX      (MCI_DGV_ITEM_BASE+1)
  617. #define MCI_DGV_GETDEVCAPS_HAS_AFC          (MCI_DGV_ITEM_BASE+2)
  618.  
  619.    /*************************************************/
  620.    /* MCI_GETDEVCAPS item values for Video Overlay  */
  621.    /*************************************************/
  622. #define MCI_OVLY_GETDEVCAPS_CAN_STRETCH     MCI_VID_GETDEVCAPS_CAN_STRETCH
  623. #define MCI_OVLY_GETDEVCAPS_CAN_DISTORT     MCI_VID_GETDEVCAPS_CAN_DISTORT
  624. #define MCI_OVLY_GETDEVCAPS_VIDEO_X_EXTENT  MCI_VID_GETDEVCAPS_VIDEO_X_EXTENT
  625. #define MCI_OVLY_GETDEVCAPS_VIDEO_Y_EXTENT  MCI_VID_GETDEVCAPS_VIDEO_Y_EXTENT
  626. #define MCI_OVLY_GETDEVCAPS_IMAGE_X_EXTENT  MCI_VID_GETDEVCAPS_IMAGE_X_EXTENT
  627. #define MCI_OVLY_GETDEVCAPS_IMAGE_Y_EXTENT  MCI_VID_GETDEVCAPS_IMAGE_Y_EXTENT
  628. #define MCI_OVLY_GETDEVCAPS_MAX_WINDOWS     MCI_VID_GETDEVCAPS_MAX_WINDOWS
  629. #define MCI_OVLY_GETDEVCAPS_CAN_FREEZE      MCI_VID_GETDEVCAPS_CAN_FREEZE
  630. #define MCI_OVLY_GETDEVCAPS_OVERLAY_GRAPHICS MCI_VID_GETDEVCAPS_OVERLAY_GRAPHICS
  631.  
  632.  
  633. #define MCI_PREROLL_NOTIFIED                0x00000001L
  634. #define MCI_PREROLL_DETERMINISTIC           0x00000002L
  635. #define MCI_PREROLL_NONE                    0x00000003L
  636.  
  637. /*********************************************************************/
  638. /* parameter structure for the MCI_GETDEVCAPS message                */
  639. /*********************************************************************/
  640. typedef struct _MCI_GETDEVCAPS_PARMS {
  641.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  642.     DWORD   dwReturn;        /* Return field                            */
  643.     DWORD   dwItem;          /* Item field for GETDEVCAPS item to query */
  644.     WORD    wMessage;        /* Field to hold MCI message to query      */
  645.     WORD    wReserved0;      /* Reserved field                          */
  646. } MCI_GETDEVCAPS_PARMS;
  647. typedef MCI_GETDEVCAPS_PARMS   * LPMCI_GETDEVCAPS_PARMS;
  648.  
  649. /*********************************************************************/
  650. /* parameter structure for the MCI_WAVE_GETDEVCAPS                   */
  651. /*********************************************************************/
  652. typedef struct _MCI_WAVE_GETDEVCAPS_PARMS {
  653.     ULONG   ulCallback;       /* PM window handle for MCI notify message */
  654.     ULONG   ulReturn;         /* Return field                            */
  655.     ULONG   ulItem;           /* Item field for GETDEVCAPS item to query */
  656.     USHORT  usMessage;        /* Field to hold MCI message to query      */
  657.     USHORT  usReserved0;      /* Reserved field                          */
  658.     ULONG   ulLength;         /* Length of structure in ULONGS           */
  659.     ULONG   ulBitsPerSample;  /* Number of Bits per Sample               */
  660.     ULONG   ulFormatTag;      /* Format Tag                              */
  661.     ULONG   ulSamplesPerSec;  /* Sampling Rate                           */
  662.     ULONG   ulChannels;       /* Number of channels                      */
  663.     ULONG   ulFormatMode;     /* Either MCI_RECORD or MCI_PLAY           */
  664. } MCI_WAVE_GETDEVCAPS_PARMS;
  665. typedef MCI_WAVE_GETDEVCAPS_PARMS   * PMCI_WAVE_GETDEVCAPS_PARMS;
  666.  
  667. /*********************************************************************/
  668. /* potential values for the ulValue field of MCI_AMP_GETDEVCAPS  */
  669. /*********************************************************************/
  670. #define  MCI_AMP_CAN_SET_MONITOR           MCI_AMP_SET_MONITOR
  671. #define  MCI_AMP_CAN_SET_BALANCE           MCI_AMP_SET_BALANCE
  672. #define  MCI_AMP_CAN_SET_ALC               MCI_AMP_SET_ALC
  673. #define  MCI_AMP_CAN_SET_MONITOR           MCI_AMP_SET_MONITOR
  674. #define  MCI_AMP_CAN_SET_CROSSOVER         MCI_AMP_SET_CROSSOVER
  675. #define  MCI_AMP_CAN_SET_LOUDNESS          MCI_AMP_SET_LOUDNESS
  676. #define  MCI_AMP_CAN_SET_MUTE              MCI_AMP_SET_MUTE
  677. #define  MCI_AMP_CAN_SET_REVERB            MCI_AMP_SET_REVERB
  678. #define  MCI_AMP_CAN_SET_STEREOENHANCE     MCI_AMP_SET_STEREOENHANCE
  679. #define  MCI_AMP_CAN_SET_CUSTOM1           MCI_AMP_SET_CUSTOM1
  680. #define  MCI_AMP_CAN_SET_CUSTOM2           MCI_AMP_SET_CUSTOM2
  681. #define  MCI_AMP_CAN_SET_CUSTOM3           MCI_AMP_SET_CUSTOM3
  682. #define  MCI_AMP_CAN_SET_LRVOLUME          MCI_AMP_SET_LRVOLUME
  683. #define  MCI_AMP_CAN_SET_BASS              MCI_AMP_SET_BASS
  684. #define  MCI_AMP_CAN_SET_MID               MCI_AMP_SET_MID
  685. #define  MCI_AMP_CAN_SET_TREBLE            MCI_AMP_SET_TREBLE
  686. #define  MCI_AMP_CAN_SET_PITCH             MCI_AMP_SET_PITCH
  687. #define  MCI_AMP_CAN_SET_GAIN              MCI_AMP_SET_GAIN
  688. #define  MCI_AMP_CAN_SET_CHORUS            MCI_AMP_SET_CHORUS
  689. #define  MCI_AMP_CAN_SET_VOLUME            MCI_AMP_SET_VOLUME
  690.  
  691. /*********************************************************************/
  692. /* potential values for the ulExtended field of MCI_AMP_GETDEVCAPS_PARMS */
  693. /*********************************************************************/
  694. #define MCI_MIXER_LINE    0x00000001L
  695.  
  696.  
  697. /*********************************************************************/
  698. /* parameter structure for the MCI_AMP_GETDEVCAPS                    */
  699. /*********************************************************************/
  700. typedef struct _MCI_AMP_GETDEVCAPS_PARMS {
  701.     ULONG   hwndCallback;     /* PM window handle for MCI notify message */
  702.     ULONG   ulReturn;         /* Return field                            */
  703.     ULONG   ulItem;           /* Item field for GETDEVCAPS item to query */
  704.     USHORT  usMessage;        /* Field to hold MCI message to query      */
  705.     USHORT  usReserved0;      /* Reserved field                          */
  706.     ULONG   ulLength;         /* Length of structure in ULONGS           */
  707.     ULONG   ulValue;          /* Value to determine caps                 */
  708.     ULONG   ulAttribute;      /* Flags to modified the extended parms    */
  709.     ULONG   ulExtended;       /* Extended flags field                    */
  710. } MCI_AMP_GETDEVCAPS_PARMS;
  711. typedef MCI_AMP_GETDEVCAPS_PARMS   * PMCI_AMP_GETDEVCAPS_PARMS;
  712.  
  713.  
  714. /*********************************************************************/
  715. /* values for the ulFlags field of MCI_MIXEVENT_PARMS                */
  716. /*********************************************************************/
  717. #define MCI_MIX_ATTRIBUTE       0x00000001L
  718. #define MCI_MIX_CONNECTOR       0x00000002L
  719.  
  720. /*********************************************************************/
  721. /* values for the lParam field for mix_notify                        */
  722. /*********************************************************************/
  723.  
  724. #define MCI_MIXNOTIFY_ON        0x00000004L
  725. #define MCI_MIXNOTIFY_OFF       0x00000008L
  726.  
  727. /*********************************************************************/
  728. /* value to indicate type of MM_MCIEVENT                             */
  729. /*********************************************************************/
  730.  
  731. #define MCI_MIXEVENT            0x00000001L
  732.  
  733. /*********************************************************************/
  734. /* parameter structure for the MCI_MIXEVENT_PARMS                    */
  735. /*********************************************************************/
  736. typedef struct _MCI_MIXEVENT_PARMS
  737.    {
  738.    ULONG  ulLength;        /* Length of struct                         */
  739.    HWND   hwndMixer;       /* window to inform of mixer changes        */
  740.    ULONG  ulFlags;         /* Either MCI_MIX_ATTRIBUTE                 */
  741.                            /*       or MCI_MIX_CONNECTOR               */
  742.    USHORT usDeviceID;      /* device id to notify of the change        */
  743.    ULONG  ulDeviceType;    /* Device Type which generated the change   */
  744.    ULONG  ulDeviceOrdinal; /* Ordinal of device Type                   */
  745.    ULONG  ulAttribute;     /* Attribute that changed(volume, bass etc.)*/
  746.    ULONG  ulValue;         /* new value of the attribute which changed */
  747.    ULONG  ulConnectorType; /* Connector Type                           */
  748.    ULONG  ulConnectorIndex;/* Connector Index                          */
  749.    ULONG  ulConnStatus;    /* Is connector enabled/disabled.           */
  750.  
  751.    } MCI_MIXEVENT_PARMS;
  752.  
  753. typedef MCI_MIXEVENT_PARMS *PMCI_MIXEVENT_PARMS;
  754.  
  755.  
  756. /*********************************************************************/
  757. /* flag values for the MCI_GETIMAGEBUFFER and MCI_SETIMAGEBUFFER msg */
  758. /*     0x0000XX00 are reserved for MCI_GETIMAGEBUFFER and            */
  759. /*       MCI_SETIMAGEBUFFER Flags                                    */
  760. /*     MCI_CONVERT is defined by MCI_CAPTURE message as 0x00001000L  */
  761. /*********************************************************************/
  762. #define MCI_USE_HW_BUFFER                   0x00000400L
  763. #define MCI_GET_HW_BUFFER_PTR               0x00000800L
  764.  
  765.    /***************************************************/
  766.    /* parm structure for MCI_GETIMAGEBUFFER and       */
  767.    /*                    MCI_SETIMAGEBUFFER messages  */
  768.    /***************************************************/
  769. typedef  struct _MCI_IMAGE_PARMS {
  770.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  771.     DWORD   dwPelFormat;     /* Format of the image data returned       */
  772.     WORD    wBitCount;       /* Number of bitsimage data returned       */
  773.     WORD    wReserved0;      /* Reserved field                          */
  774.     DWORD   dwImageCompression; /*                                      */
  775.     RECTL   rect;            /* Image area to get/set                   */
  776.     PVOID   pPelBuffer;      /* Pel data buffer                         */
  777.     DWORD   dwPelBufferHeight; /* Number of rows in buffer              */
  778.     DWORD   dwPelBufferWidth;  /* Pels per row in buffer                */
  779.     DWORD   dwBufLen;        /* Pel data buffer length in bytes         */
  780.  
  781. } MCI_IMAGE_PARMS;
  782. typedef MCI_IMAGE_PARMS   *LPMCI_IMAGE_PARMS;
  783.  
  784. /*********************************************************************/
  785. /* flags for the MCI_GETIMAGEPALETTE message                         */
  786. /*     0x0000XX00 are reserved for MCI_GETIMAGEPALETTE flags         */
  787. /*********************************************************************/
  788. #define MCI_FIND_BEST_REGISTERED            0x00000100L
  789. #define MCI_QUERY_REGISTERED_MAP            0x00000200L
  790. #define MCI_QUERY_REGISTERED_MAP_SIZE       0x00000400L
  791.  
  792.  
  793.    /***************************************************/
  794.    /* parameter structure for MCI_GETIMAGEPALETTE and */
  795.    /*    MCI_SETIMAGEPALETTE messages                 */
  796.    /***************************************************/
  797. typedef  struct _MCI_PALETTE_PARMS {
  798.     DWORD   dwCallback;      /* PM window handle for MCI notify message   */
  799.     WORD    wRegisteredMap;  /* Id of the palette from the registed color */
  800.                              /* map                                       */
  801.     WORD    wReserved0;      /* Reserved field                            */
  802.     DWORD   dwPalEntries;    /* size of the palette returned              */
  803.     PVOID   pPalette;        /* pointer to the palette                    */
  804. } MCI_PALETTE_PARMS;
  805. typedef MCI_PALETTE_PARMS   *LPMCI_PALETTE_PARMS;
  806.  
  807.  
  808. /*********************************************************************/
  809. /* Parameter structure for the MCI_GETTOC message                    */
  810. /*********************************************************************/
  811. typedef struct _MCI_TOC_REC {
  812.     BYTE      TrackNum;      /* Returned Track Number                          */
  813.     DWORD     dwStartAddr;   /* Starting address of the track in MMTIME format */
  814.     DWORD     dwEndAddr;     /* Ending address of the track in MMTIME format   */
  815.     BYTE      Control;       /* Track Control information                      */
  816.     WORD      wCountry;      /* Country                                        */
  817.     DWORD     dwOwner;       /* Owner                                          */
  818.     DWORD     dwSerialNum;   /* Serial Number                                  */
  819. } MCI_TOC_REC;
  820. typedef MCI_TOC_REC   *LPTOCREC;
  821.  
  822. typedef struct _MCI_TOC_PARMS {
  823.     DWORD     dwCallback;    /* PM window handle for MCI notify message    */
  824.     LPTOCREC  lpBuf;         /* Pointer to array MCI_TOC_REC structures to */
  825.                              /* be filled in by the mci device             */
  826.     DWORD     dwBufSize;     /* Size of the array                          */
  827. } MCI_TOC_PARMS;
  828. typedef MCI_TOC_PARMS   * LPMCI_TOC_PARMS;
  829.  
  830. /*********************************************************************/
  831. /* parameters for the MCI_GROUP message                              */
  832. /*     0x00XXXX00 are reserved for MCI_GROUP flags                   */
  833. /*********************************************************************/
  834. #define MCI_SYNCHRONIZE                     0x00000100L
  835. #define MCI_NOPIECEMEAL                     0x00000200L
  836. #define MCI_GROUP_MAKE                      0x00000400L
  837. #define MCI_GROUP_DELETE                    0x00000800L
  838. #define MCI_GROUP_ALIAS                     0x00001000L
  839. #define MCI_GROUP_MASTER                    0x00002000L
  840.  
  841. typedef struct _MCI_GROUP_PARMS {
  842.     HWND    hwndCallback;    /* PM window handle for MCI notify message.    */
  843.     USHORT  usGroupID;       /* GroupID                                     */
  844.     USHORT  usReserved0;     /* RESERVED                                    */
  845.     ULONG   ulStructLength;  /* Length of Structure in ULONGS.              */
  846.     USHORT  usMasterID;      /* ID of Master device in Synchrounous groups. */
  847.     USHORT  usReserved1;     /* RESERVED                                    */
  848.     PSZ     pszGroupAlias;   /* Pointer to Alias Name.                      */
  849.     ULONG   ulNumDevices;    /* Number of Devices in group.                 */
  850.     PULONG  paulDeviceID;    /* Array of Device ids in the group.           */
  851. } MCI_GROUP_PARMS;
  852. typedef MCI_GROUP_PARMS *PMCI_GROUP_PARMS;
  853.  
  854.  
  855. /*********************************************************************/
  856. /* flags for the MCI_INFO message                                    */
  857. /*     0x00000X00 are reserved for MCI_INFO flags                    */
  858. /*********************************************************************/
  859. #define MCI_INFO_PRODUCT                    0x00000100L
  860. #define MCI_INFO_FILE                       0x00000200L
  861.  
  862.     /************************************************/
  863.     /* CD Audio                MCI_INFO             */
  864.     /************************************************/
  865. #define MCI_CD_INFO_ID                      0x00010000L
  866. #define MCI_CD_INFO_UPC                     0x00020000L
  867.  
  868.     /************************************************/
  869.     /* Videodisc               MCI_INFO             */
  870.     /************************************************/
  871. #define MCI_VD_INFO_LABEL                   0x00001000L
  872.  
  873.     /************************************************/
  874.     /* Digital Video           MCI_INFO             */
  875.     /************************************************/
  876. #define MCI_DGV_INFO_VIDEO_FILE             0x00001000L
  877. #define MCI_DGV_INFO_IMAGE_FILE             0x00002000L
  878. #define MCI_DGV_INFO_REGION                 0x00004000L
  879. #define MCI_DGV_INFO_REGION_TEXT            0x00008000L
  880. #define MCI_DGV_INFO_TEXT                   0x00010000L
  881.  
  882.     /************************************************/
  883.     /* Video Overlay           MCI_INFO             */
  884.     /************************************************/
  885. #define MCI_OVLY_INFO_TEXT                  0x00010000L
  886.  
  887.  
  888. typedef struct _MCI_INFO_PARMS {
  889.     DWORD     dwCallback;    /* PM window handle for MCI notify message */
  890.     LPSTR     lpstrReturn;   /* Pointer to return buffer                */
  891.     DWORD     dwRetSize;     /* Return buffer size                      */
  892. } MCI_INFO_PARMS;
  893. typedef MCI_INFO_PARMS   *LPMCI_INFO_PARMS;
  894.  
  895. /*********************************************************************/
  896. /* parameters and flags for the MCI_LOAD message                     */
  897. /*     0x00000X00 are reserved for MCI_LOAD flags                    */
  898. /*********************************************************************/
  899. typedef struct _MCI_LOAD_PARMS {
  900.     DWORD  dwCallback;       /* PM window handle for MCI notify message */
  901.     LPSTR  lpstrElementName; /* File name to loads                      */
  902. } MCI_LOAD_PARMS;
  903. typedef MCI_LOAD_PARMS   *LPMCI_LOAD_PARMS;
  904.  
  905. /*********************************************************************/
  906. /* parameters and flags for the MCI_MASTERAUDIO                      */
  907. /*     0x000XXX00 are reserved for MCI_MASTERAUDIO  flags            */
  908. /*********************************************************************/
  909. #define MCI_ON                              0x00000100L
  910. #define MCI_OFF                             0x00000200L
  911. #define MCI_HEADPHONES                      0x00000400L
  912. #define MCI_SPEAKERS                        0x00000800L
  913. #define MCI_MASTERVOL                       0x00001000L
  914. #define MCI_SAVESETTING                     0x00002000L
  915. #define MCI_QUERYSAVEDSETTING               0x00004000L
  916. #define MCI_QUERYCURRENTSETTING             0x00008000L
  917.  
  918.  
  919. typedef struct _MCI_MASTERAUDIO_PARMS {
  920.     DWORD   dwDummyCallback; /* PM window handle for MCI notify message */
  921.     DWORD   dwReturn;        /* Return field for query information      */
  922.     DWORD   dwMasterVolume;  /* Master volume field                     */
  923. } MCI_MASTERAUDIO_PARMS;
  924. typedef MCI_MASTERAUDIO_PARMS   *LPMCI_MASTERAUDIO_PARMS;
  925.  
  926. /*********************************************************************/
  927. /* parameters and flags for the MCI_OPEN message                     */
  928. /*     0x0000XX00 are reserved for MCI_OPEN flags                    */
  929. /*********************************************************************/
  930. #define MCI_OPEN_ELEMENT                    0x00000100L
  931. #define MCI_OPEN_ALIAS                      0x00000200L
  932. #define MCI_OPEN_ELEMENT_ID                 0x00000400L
  933. #define MCI_OPEN_PLAYLIST                   0x00000800L
  934. #define MCI_OPEN_TYPE_ID                    0x00001000L
  935. #define MCI_OPEN_SHAREABLE                  0x00002000L
  936. #define MCI_OPEN_MMIO                       0x00004000L
  937. #define MCI_READONLY                        0x00008000L
  938.  
  939.     /***************************************************/
  940.     /* parameters and flags for the MCI_OPEN message   */
  941.     /* Digital Video, Video Overlay specific           */
  942.     /***************************************************/
  943. #define MCI_VID_OPEN_PARENT                 0x01000000L
  944. #define MCI_DGV_OPEN_PARENT                 MCI_VID_OPEN_PARENT
  945. #define MCI_OVLY_OPEN_PARENT                MCI_VID_OPEN_PARENT
  946.  
  947. typedef struct _MCI_OPEN_PARMS {
  948.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  949.     WORD    wDeviceID;       /* Device ID returned to user              */
  950.     WORD    wReserved0;      /* Reserved                                */
  951.     LPSTR   lpstrDeviceType; /* Device name from SYSTEM.INI             */
  952.     LPSTR   lpstrElementName;/* Typically a file name or NULL           */
  953.     LPSTR   lpstrAlias;      /* Optional device alias                   */
  954. } MCI_OPEN_PARMS;
  955. typedef MCI_OPEN_PARMS   *LPMCI_OPEN_PARMS;
  956.  
  957.     /**********************************************************/
  958.     /* parameters for the AMP MCI_OPEN message                */
  959.     /**********************************************************/
  960. typedef struct _MCI_AMP_OPEN_PARMS {
  961.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  962.     WORD    wDeviceID;       /* Device ID returned to user              */
  963.     WORD    wReserved0;      /* Reserved field                          */
  964.     LPSTR   lpstrDeviceType; /* Device name from SYSTEM.INI             */
  965.     LPSTR   lpstrElementName;/* Typically a file name or NULL           */
  966.     LPSTR   lpstrAlias;      /* Optional device alias                   */
  967.     ULONG   ulDevDataPtr;    /* Pointer to device data                  */
  968. } MCI_AMP_OPEN_PARMS;
  969. typedef MCI_AMP_OPEN_PARMS   *LPMCI_AMP_OPEN_PARMS;
  970.  
  971.     /**********************************************************/
  972.     /* parameters for MCI_OPEN message for video devices      */
  973.     /**********************************************************/
  974.  
  975. typedef  struct _MCI_VID_OPEN_PARMS {
  976.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  977.     WORD    wDeviceID;       /* Device ID returned to user              */
  978.     WORD    wReserved0;      /* Reserved field                          */
  979.     LPSTR   lpstrDeviceType; /* Device name from SYSTEM.INI             */
  980.     LPSTR   lpstrElementName;/* Typically a file name or NULL           */
  981.     LPSTR   lpstrAlias;      /* Optional device alias                   */
  982.     HWND    hwndParent;      /* Parent window handle                    */
  983. } MCI_VID_OPEN_PARMS;
  984.  
  985. typedef MCI_VID_OPEN_PARMS   MCI_DGV_OPEN_PARMS;
  986. typedef MCI_DGV_OPEN_PARMS   *LPMCI_DGV_OPEN_PARMS;
  987.  
  988. typedef MCI_VID_OPEN_PARMS    MCI_OVLY_OPEN_PARMS;
  989. typedef MCI_OVLY_OPEN_PARMS   *LPMCI_OVLY_OPEN_PARMS;
  990.  
  991.     /***************************************************/
  992.     /* MCI_PLAY flag values for videodisc              */
  993.     /***************************************************/
  994. #define MCI_VD_PLAY_REVERSE                 0x00001000L
  995. #define MCI_VD_PLAY_FAST                    0x00002000L
  996. #define MCI_VD_PLAY_SPEED                   0x00004000L
  997. #define MCI_VD_PLAY_SCAN                    0x00008000L
  998. #define MCI_VD_PLAY_SLOW                    0x00010000L
  999.  
  1000.     /***************************************************/
  1001.     /* MCI_PLAY flag values for digital video          */
  1002.     /***************************************************/
  1003. #define MCI_DGV_PLAY_REVERSE                0x00001000L
  1004. #define MCI_DGV_PLAY_FAST                   0x00002000L
  1005. #define MCI_DGV_PLAY_SPEED                  0x00004000L
  1006. #define MCI_DGV_PLAY_SCAN                   0x00008000L
  1007. #define MCI_DGV_PLAY_SLOW                   0x00010000L
  1008. #define MCI_DGV_PLAY_REPEAT                 0x00020000L
  1009.  
  1010. typedef struct _MCI_PLAY_PARMS {
  1011.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  1012.     DWORD   dwFrom;          /* Play from this position                 */
  1013.     DWORD   dwTo;            /* Play to this position                   */
  1014. } MCI_PLAY_PARMS;
  1015. typedef MCI_PLAY_PARMS   *LPMCI_PLAY_PARMS;
  1016.  
  1017. typedef struct _MCI_VD_PLAY_PARMS {
  1018.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  1019.     DWORD   dwFrom;          /* Play from this position                 */
  1020.     DWORD   dwTo;            /* Play to this position                   */
  1021.     DWORD   dwFactor;        /* Play at this speed factor               */
  1022. } MCI_VD_PLAY_PARMS;
  1023. typedef MCI_VD_PLAY_PARMS   *LPMCI_VD_PLAY_PARMS;
  1024.  
  1025. typedef  struct _MCI_DGV_PLAY_PARMS {
  1026.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  1027.     DWORD   dwFrom;          /* Play from this position                 */
  1028.     DWORD   dwTo;            /* Play to this position                   */
  1029.     DWORD   dwSpeed;         /* Specifies the play rate in frames per second */
  1030. } MCI_DGV_PLAY_PARMS;
  1031. typedef MCI_DGV_PLAY_PARMS   *LPMCI_DGV_PLAY_PARMS;
  1032.  
  1033. /*********************************************************************/
  1034. /* parameters for the MCI_PUT  message                               */
  1035. /*     0x00000X00 are reserved for MCI_PUT  flags                    */
  1036. /*********************************************************************/
  1037. #define MCI_VID_PUT_RECT                    0x00000100L
  1038. #define MCI_VID_PUT_DESTINATION             0x00000200L
  1039. #define MCI_VID_PUT_SOURCE                  0x00000400L
  1040. #define MCI_VID_PUT_WINDOW_MOVE             0x00000800L
  1041. #define MCI_VID_PUT_WINDOW_SIZE             0x00001000L
  1042.  
  1043. #define MCI_DGV_PUT_RECT                    MCI_VID_PUT_RECT
  1044. #define MCI_DGV_PUT_DESTINATION             MCI_VID_PUT_DESTINATION
  1045. #define MCI_DGV_PUT_SOURCE                  MCI_VID_PUT_SOURCE
  1046. #define MCI_DGV_PUT_WINDOW_MOVE             MCI_VID_PUT_WINDOW_MOVE
  1047. #define MCI_DGV_PUT_WINDOW_SIZE             MCI_VID_PUT_WINDOW_SIZE
  1048. #define MCI_DGV_MONITOR                     0x00010000L
  1049. #define MCI_DGV_RECORD                      0x00020000L
  1050.  
  1051. #define MCI_OVLY_PUT_RECT                   MCI_VID_PUT_RECT
  1052. #define MCI_OVLY_PUT_DESTINATION            MCI_VID_PUT_DESTINATION
  1053. #define MCI_OVLY_PUT_SOURCE                 MCI_VID_PUT_SOURCE
  1054. #define MCI_OVLY_PUT_WINDOW_MOVE            MCI_VID_PUT_WINDOW_MOVE
  1055. #define MCI_OVLY_PUT_WINDOW_SIZE            MCI_VID_PUT_WINDOW_SIZE
  1056.  
  1057.     /***************************************************/
  1058.     /* Rectangle parameters for MCI_PUT, MCI_WHERE,    */
  1059.     /* MCI_FREEZE, and MCI_UNFREEZE                    */
  1060.     /***************************************************/
  1061.  
  1062. typedef  struct _MCI_VID_RECT_PARMS {
  1063.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  1064.     RECTL   rc;              /* rectangle array specifying the offset   */
  1065.                              /* and size of a rectangle                 */
  1066. } MCI_VID_RECT_PARMS;
  1067.  
  1068. typedef MCI_VID_RECT_PARMS   MCI_DGV_RECT_PARMS;
  1069. typedef MCI_DGV_RECT_PARMS   *LPMCI_DGV_RECT_PARMS;
  1070.  
  1071. typedef MCI_VID_RECT_PARMS   MCI_OVLY_RECT_PARMS;
  1072. typedef MCI_OVLY_RECT_PARMS  *LPMCI_OVLY_RECT_PARMS;
  1073.  
  1074. /*********************************************************************/
  1075. /* parameters for the MCI_RECORD message                             */
  1076. /*     0x00000X00 are reserved for MCI_RECORD flags                  */
  1077. /*********************************************************************/
  1078. #define MCI_RECORD_INSERT                   0x00000100L
  1079. #define MCI_RECORD_OVERWRITE                0x00000200L
  1080.  
  1081. #define MCI_DGV_RECORD_RECT                 0x00000400L
  1082.  
  1083. typedef struct _MCI_RECORD_PARMS {
  1084.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  1085.     DWORD   dwFrom;          /* Record from position                    */
  1086.     DWORD   dwTo;            /* Record to position                      */
  1087. } MCI_RECORD_PARMS;
  1088. typedef MCI_RECORD_PARMS   *LPMCI_RECORD_PARMS;
  1089.  
  1090. /*********************************************************************/
  1091. /* parameters for the MCI_RELEASEDEVICE message                      */
  1092. /*     0xXXXXXX00 are reserved for MCI_RELEASEDEVICE message         */
  1093. /*********************************************************************/
  1094. #define MCI_RETURN_RESOURCE                 0x00000100L
  1095.  
  1096. /*********************************************************************/
  1097. /* parameters for the MCI_RESTORE message                            */
  1098. /*     0x0000XX00 are reserved for MCI_RESTORE flags                 */
  1099. /*     MCI_CONVERT is defined by MCI_CAPTURE message as 0x00001000L  */
  1100. /*********************************************************************/
  1101. #define MCI_RESTORE_SRC_RECT                0x00000100L
  1102. #define MCI_RESTORE_DEST_RECT               0x00000200L
  1103.  
  1104. typedef struct _MCI_RESTORE_PARMS {
  1105.     DWORD   dwCallback;      /* PM window handle for MCI notify message     */
  1106.     RECTL   SrcRect;         /* Rectangle array specifying the source       */
  1107.                              /* area to be restored                                 */
  1108.     RECTL   DestRect;        /* Rectangle array specifying the destination  */
  1109.                              /* area to be restored                         */
  1110. } MCI_RESTORE_PARMS;
  1111. typedef MCI_RESTORE_PARMS   *LPMCI_RESTORE_PARMS;
  1112.  
  1113. /*********************************************************************/
  1114. /* parameters for the MCI_SAVE  message                              */
  1115. /*     0x00000X00 are reserved for MCI_SAVE  flags                   */
  1116. /*********************************************************************/
  1117. #define MCI_SAVE_FILE                       0x00000100L
  1118.  
  1119.     /*************************************************/
  1120.     /* Digital Video               MCI_SAVE          */
  1121.     /*************************************************/
  1122.  
  1123. #define MCI_DGV_SAVE_VIDEO_FILE             0x00001000L
  1124. #define MCI_DGV_SAVE_IMAGE_FILE             0x00002000L
  1125.  
  1126. typedef struct _MCI_SAVE_PARMS {
  1127.     DWORD   dwCallback;      /* PM window handle for MCI notify message     */
  1128.     DWORD   lpFileName;      /* Filename to save data to                    */
  1129. } MCI_SAVE_PARMS;
  1130. typedef MCI_SAVE_PARMS   *LPMCI_SAVE_PARMS;
  1131.  
  1132. /*********************************************************************/
  1133. /* parameters for the MCI_SEEK message                               */
  1134. /*     0x00000X00 are reserved for MCI_SEEK flags                    */
  1135. /*********************************************************************/
  1136. #define MCI_TO_START                        0x00000100L
  1137. #define MCI_TO_END                          0x00000200L
  1138.  
  1139.     /*************************************************/
  1140.     /* Digital Video               MCI_SEEK          */
  1141.     /*************************************************/
  1142.  
  1143. #define MCI_DGV_SEEK_TO_NEAREST_IFRAME      0x00100000L
  1144.  
  1145.     /*************************************************/
  1146.     /* Videodisc                   MCI_SEEK          */
  1147.     /*************************************************/
  1148. #define MCI_VD_SEEK_REVERSE                 0x00001000L
  1149.  
  1150. typedef struct _MCI_SEEK_PARMS {
  1151.     DWORD   dwCallback;      /* PM window handle for MCI notify message     */
  1152.     DWORD   dwTo;            /* Seek to this position                       */
  1153. } MCI_SEEK_PARMS;
  1154. typedef MCI_SEEK_PARMS   *LPMCI_SEEK_PARMS;
  1155.  
  1156. /*********************************************************************/
  1157. /* Flags for the MCI_SET message                                     */
  1158. /*     0x00XXXX00 are reserved for MCI_SET  flags                    */
  1159. /*********************************************************************/
  1160. #define MCI_SET_ITEM                        0x00000100L
  1161. #define MCI_SET_ON                          0x00000200L
  1162. #define MCI_SET_OFF                         0x00000400L
  1163. #define MCI_SET_VIDEO                       0x00000800L
  1164. #define MCI_SET_AUDIO                       0x00001000L
  1165. #define MCI_SET_DOOR_OPEN                   0x00002000L
  1166. #define MCI_SET_DOOR_CLOSED                 0x00004000L
  1167. #define MCI_SET_SPEED_FORMAT                0x00008000L
  1168. #define MCI_SET_TIME_FORMAT                 0x00010000L
  1169. #define MCI_SET_DOOR_LOCK                   0x00020000L
  1170. #define MCI_SET_DOOR_UNLOCK                 0x00040000L
  1171. #define MCI_SET_VOLUME                      0x00080000L
  1172. #define MCI_SET_ITEM_FOURCC                 0x00100000L
  1173. #define MCI_SET_REVERSE                     0x00200000L
  1174.  
  1175. /*******************************************************/
  1176. /* Values for the dwAudio field                        */
  1177. /*******************************************************/
  1178. #define MCI_SET_AUDIO_ALL                   0x00000000L
  1179. #define MCI_SET_AUDIO_LEFT                  0x00000001L
  1180. #define MCI_SET_AUDIO_RIGHT                 0x00000002L
  1181.  
  1182. /*******************************************************/
  1183. /* MCI_SET flags for amp/mixer                         */
  1184. /*******************************************************/
  1185. #define MCI_AMP_SET_BALANCE                 0x00100000L
  1186. #define MCI_AMP_SET_PITCH                   0x00200000L
  1187. #define MCI_AMP_SET_TREBLE                  0x00400000L
  1188. #define MCI_AMP_SET_BASS                    0x00800000L
  1189. #define MCI_AMP_SET_GAIN                    0x01000000L
  1190.  
  1191. #define MCI_AMP_SET_ALC                     0x00000004L
  1192. #define MCI_AMP_SET_CROSSOVER               0x00000010L
  1193. #define MCI_AMP_SET_LOUDNESS                0x00000020L
  1194. #define MCI_AMP_SET_MUTE                    0x00000040L
  1195. #define MCI_AMP_SET_REVERB                  0x00000080L
  1196. #define MCI_AMP_SET_STEREOENHANCE           0x00000100L
  1197. #define MCI_AMP_SET_CUSTOM1                 0x00000200L
  1198. #define MCI_AMP_SET_CUSTOM2                 0x00000400L
  1199. #define MCI_AMP_SET_CUSTOM3                 0x00000800L
  1200. #define MCI_AMP_SET_LRVOLUME                0x00001000L
  1201. #define MCI_AMP_SET_MID                     0x00020000L
  1202. #define MCI_AMP_SET_CHORUS                  0x00004000L
  1203. #define MCI_AMP_SET_VOLUME                  MCI_SET_VOLUME
  1204.  
  1205. /*******************************************************/
  1206. /* General MCI_SET item values                         */
  1207. /*******************************************************/
  1208. #define MCI_SET_MONITOR                     0x00000001L
  1209. #define MCI_SET_MONITOR_AUDIO               0x00000002L
  1210. #define MCI_SET_MONITOR_VIDEO               0x00000003L
  1211. #define MCI_SET_RECORD                      0x00000004L
  1212.  
  1213. /*******************************************************/
  1214. /* MCI_SET item values for amp/mixer                   */
  1215. /*******************************************************/
  1216. #define MCI_AMP_SET_MONITOR                 MCI_SET_MONITOR_AUDIO
  1217. #define MCI_AMP_SET_AUDIO                   0x00000008
  1218.  
  1219.  
  1220.  
  1221.  
  1222.  
  1223. /*******************************************************/
  1224. /* MCI_SET flags for CDXA                              */
  1225. /*******************************************************/
  1226. #define MCI_CDXA_SET_CHANNEL                0x01000000L
  1227. #define MCI_CDXA_AUDIO_DEVICE               0x10000000L
  1228. #define MCI_CDXA_AUDIO_BUFFER               0x02000000L
  1229. #define MCI_CDXA_VIDEO_BUFFER               0x04000000L
  1230. #define MCI_CDXA_DATA_BUFFER                0x08000000L
  1231.  
  1232. /*******************************************************/
  1233. /* MCI_SET flags for videodisc                         */
  1234. /*******************************************************/
  1235. #define MCI_VD_SET_ON                       MCI_SET_ON
  1236. #define MCI_VD_SET_OFF                      MCI_SET_OFF
  1237. #define MCI_VD_SET_VIDEO                    MCI_SET_VIDEO
  1238. #define MCI_VD_SET_CHANNEL                  0x00100000L
  1239. #define MCI_VD_SET_DISPLAY                  0x00200000L
  1240.  
  1241. /*******************************************************/
  1242. /* Generic MCI_SET item values for video devices       */
  1243. /*******************************************************/
  1244. #define MCI_VID_SET_VIDEO_COMPRESSION           MCI_VID_ITEM_BASE
  1245. #define MCI_VID_SET_IMAGE_COMPRESSION           (MCI_VID_ITEM_BASE+1)
  1246. #define MCI_VID_SET_IMAGE_BITSPERPEL            (MCI_VID_ITEM_BASE+2)
  1247. #define MCI_VID_SET_IMAGE_PELFORMAT             (MCI_VID_ITEM_BASE+3)
  1248. #define MCI_VID_SET_BRIGHTNESS                  (MCI_VID_ITEM_BASE+4)
  1249. #define MCI_VID_SET_CONTRAST                    (MCI_VID_ITEM_BASE+5)
  1250. #define MCI_VID_SET_HUE                         (MCI_VID_ITEM_BASE+6)
  1251. #define MCI_VID_SET_SATURATION                  (MCI_VID_ITEM_BASE+7)
  1252. #define MCI_VID_SET_SHARPNESS                   (MCI_VID_ITEM_BASE+8)
  1253. #define MCI_VID_SET_GREYSCALE                   (MCI_VID_ITEM_BASE+9)
  1254. #define MCI_VID_SET_IMAGE_QUALITY               (MCI_VID_ITEM_BASE+10)
  1255. #define MCI_VID_SET_VIDEO_QUALITY               (MCI_VID_ITEM_BASE+11)
  1256. #define MCI_VID_SET_IMAGE_COMPRESSION_METHOD    (MCI_VID_ITEM_BASE+12)
  1257. #define MCI_VID_SET_MINIMUM_VIDEO_REFRESH_RATE  (MCI_VID_ITEM_BASE+13)
  1258. #define MCI_VID_SET_IMAGE_FILE_FORMAT           (MCI_VID_ITEM_BASE+14)
  1259. #define MCI_VID_SET_REF_INTERVAL                (MCI_VID_ITEM_BASE+15)
  1260. #define MCI_VID_SET_MAXDATARATE                 (MCI_VID_ITEM_BASE+16)
  1261. #define MCI_VID_SET_VIDEO_FILE_FORMAT           (MCI_VID_ITEM_BASE+17)
  1262.  
  1263. /*******************************************************/
  1264. /* MCI_SET item values for video overlay               */
  1265. /*******************************************************/
  1266. #define MCI_OVLY_SET_IMAGE_COMPRESSION          MCI_VID_SET_IMAGE_COMPRESSION
  1267. #define MCI_OVLY_SET_IMAGE_BITSPERPEL           MCI_VID_SET_IMAGE_BITSPERPEL
  1268. #define MCI_OVLY_SET_IMAGE_PELFORMAT            MCI_VID_SET_IMAGE_PELFORMAT
  1269. #define MCI_OVLY_SET_BRIGHTNESS                 MCI_VID_SET_BRIGHTNESS
  1270. #define MCI_OVLY_SET_CONTRAST                   MCI_VID_SET_CONTRAST
  1271. #define MCI_OVLY_SET_HUE                        MCI_VID_SET_HUE
  1272. #define MCI_OVLY_SET_SATURATION                 MCI_VID_SET_SATURATION
  1273. #define MCI_OVLY_SET_SHARPNESS                  MCI_VID_SET_SHARPNESS
  1274. #define MCI_OVLY_SET_GREYSCALE                  MCI_VID_SET_GREYSCALE
  1275. #define MCI_OVLY_SET_IMAGE_QUALITY              MCI_VID_SET_IMAGE_QUALITY
  1276. #define MCI_OVLY_SET_IMAGE_COMPRESSION_METHOD   MCI_VID_SET_IMAGE_COMPRESSION_METHOD
  1277. #define MCI_OVLY_SET_MINIMUM_VIDEO_REFRESH_RATE MCI_VID_SET_MINIMUM_VIDEO_REFRESH_RATE
  1278. #define MCI_OVLY_SET_IMAGE_FILE_FORMAT          MCI_VID_SET_IMAGE_FILE_FORMAT
  1279.  
  1280. /*******************************************************/
  1281. /* MCI_SET item values for digital video               */
  1282. /*******************************************************/
  1283. #define MCI_DGV_SET_VIDEO_COMPRESSION           MCI_VID_SET_VIDEO_COMPRESSION
  1284. #define MCI_DGV_SET_IMAGE_COMPRESSION           MCI_VID_SET_IMAGE_COMPRESSION
  1285. #define MCI_DGV_SET_IMAGE_BITSPERPEL            MCI_VID_SET_IMAGE_BITSPERPEL
  1286. #define MCI_DGV_SET_IMAGE_PELFORMAT             MCI_VID_SET_IMAGE_PELFORMAT
  1287. #define MCI_DGV_SET_BRIGHTNESS                  MCI_VID_SET_BRIGHTNESS
  1288. #define MCI_DGV_SET_CONTRAST                    MCI_VID_SET_CONTRAST
  1289. #define MCI_DGV_SET_HUE                         MCI_VID_SET_HUE
  1290. #define MCI_DGV_SET_SATURATION                  MCI_VID_SET_SATURATION
  1291. #define MCI_DGV_SET_SHARPNESS                   MCI_VID_SET_SHARPNESS
  1292. #define MCI_DGV_SET_GREYSCALE                   MCI_VID_SET_GREYSCALE
  1293. #define MCI_DGV_SET_IMAGE_QUALITY               MCI_VID_SET_IMAGE_QUALITY
  1294. #define MCI_DGV_SET_VIDEO_QUALITY               MCI_VID_SET_VIDEO_QUALITY
  1295. #define MCI_DGV_SET_IMAGE_COMPRESSION_METHOD    MCI_VID_SET_IMAGE_COMPRESSION_METHOD
  1296. #define MCI_DGV_SET_MONITOR                     MCI_SET_MONITOR
  1297. #define MCI_DGV_SET_MINIMUM_VIDEO_REFRESH_RATE  MCI_VID_SET_MINIMUM_VIDEO_REFRESH_RATE
  1298. #define MCI_DGV_SET_IMAGE_FILE_FORMAT           MCI_VID_SET_IMAGE_FILE_FORMAT
  1299. #define MCI_DGV_SET_REF_INTERVAL                MCI_VID_SET_REF_INTERVAL
  1300. #define MCI_DGV_SET_MAXDATARATE                 MCI_VID_SET_MAXDATARATE
  1301. #define MCI_DGV_SET_VIDEO_FILE_FORMAT           MCI_VID_SET_VIDEO_FILE_FORMAT
  1302.  
  1303. #define MCI_DGV_SET_AUDIO_COMPRESSION           MCI_DGV_ITEM_BASE
  1304. #define MCI_DGV_SET_AUDIO_QUALITY               (MCI_DGV_ITEM_BASE+1)
  1305. #define MCI_DGV_SET_CHANNELS                    (MCI_DGV_ITEM_BASE+2)
  1306. #define MCI_DGV_SET_BITSPERSAMPLE               (MCI_DGV_ITEM_BASE+3)
  1307. #define MCI_DGV_SET_SAMPLESPERSEC               (MCI_DGV_ITEM_BASE+4)
  1308. #define MCI_DGV_SET_FORMATTAG                   (MCI_DGV_ITEM_BASE+5)
  1309. #define MCI_DGV_SET_BLOCKALIGN                  (MCI_DGV_ITEM_BASE+6)
  1310. #define MCI_DGV_SET_AVGBYTESPERSEC              (MCI_DGV_ITEM_BASE+7)
  1311.  
  1312. #define MCI_DGV_SET_VIDEO_COMPRESSION_SUBTYPE   (MCI_DGV_ITEM_BASE+8)
  1313. #define MCI_DGV_SET_VIDEO_RECORD_RATE           (MCI_DGV_ITEM_BASE+9)
  1314. #define MCI_DGV_SET_VIDEO_RECORD_FRAME_DURATION (MCI_DGV_ITEM_BASE+10)
  1315. #define MCI_DGV_SET_RECORD_AUDIO                (MCI_DGV_ITEM_BASE+11)
  1316. #define MCI_DGV_SET_TRANSPARENT_COLOR           (MCI_DGV_ITEM_BASE+12)
  1317. #define MCI_DGV_SET_GRAPHIC_TRANSPARENT_COLOR   (MCI_DGV_ITEM_BASE+12)
  1318. #define MCI_DGV_SET_AUDIOSYNC                   (MCI_DGV_ITEM_BASE+13)
  1319. #define MCI_DGV_SET_VIDEO_TRANSPARENT_COLOR     (MCI_DGV_ITEM_BASE+14)
  1320.  
  1321. /*******************************************************/
  1322. /* Video file format                                   */
  1323. /*******************************************************/
  1324. #define MCI_VID_FILE_FORMAT_AVI       0x20495641L
  1325.  
  1326. /*******************************************************/
  1327. /* Audio/video/image compression types                 */
  1328. /*******************************************************/
  1329. #define MCI_AUD_COMP_ADPCM4          0x00000001L
  1330. #define MCI_AUD_COMP_PCM8            0x00000002L
  1331.  
  1332. #define MCI_VID_COMP_RTV_2_0         0x00000101L
  1333. #define MCI_VID_COMP_RTV_2_1         0x00000102L
  1334. #define MCI_VID_COMP_ULTI            0x49544C55L
  1335. #define MCI_VID_COMP_RT21            0x31325452L
  1336. #define MCI_VID_COMP_NONE            0x20424944L   /* This is 'DIB ' now.    */
  1337.  
  1338. #define MCI_IMG_COMP_NONE            0x00000201L
  1339. #define MCI_IMG_COMP_PIC9_1_0        0x00000202L
  1340. #define MCI_IMG_COMP_PIC16_1_0       0x00000203L
  1341. #define MCI_IMG_COMP_JPEG9           0x00000204L
  1342. #define MCI_IMG_COMP_JPEG9_1_0       MCI_IMG_COMP_JPEG9
  1343. #define MCI_IMG_COMP_BMP_RLE4        0x00000205L
  1344. #define MCI_IMG_COMP_BMP_RLE8        0x00000206L
  1345. #define MCI_IMG_COMP_JPEGN           0x00000207L
  1346.  
  1347. /*******************************************************/
  1348. /* PEL Formats (video/image)                           */
  1349. /*******************************************************/
  1350. #define MCI_VID_PALETTE              0x00000001L
  1351. #define MCI_VID_RGB                  0x00000002L
  1352. #define MCI_VID_YUV                  0x00000003L
  1353.  
  1354. #define MCI_IMG_PALETTE              MCI_VID_PALETTE
  1355. #define MCI_IMG_RGB                  MCI_VID_RGB
  1356. #define MCI_IMG_YUV                  MCI_VID_YUV
  1357.  
  1358.  
  1359. /*******************************************************/
  1360. /* Audio/video/image quality levels                    */
  1361. /*******************************************************/
  1362. #define MCI_AUD_QUALITY_HIGH         0x00000001L
  1363. #define MCI_AUD_QUALITY_MED          0x00000002L
  1364. #define MCI_AUD_QUALITY_LOW          0x00000003L
  1365.  
  1366. #define MCI_VID_QUALITY_HIGH         0x00000101L
  1367. #define MCI_VID_QUALITY_MED          0x00000102L
  1368. #define MCI_VID_QUALITY_LOW          0x00000103L
  1369. #define MCI_VID_QUALITY_BEST         MCI_VID_QUALITY_HIGH
  1370. #define MCI_VID_QUALITY_CDROM        MCI_VID_QUALITY_MED
  1371. #define MCI_VID_QUALITY_COMPACT      MCI_VID_QUALITY_LOW
  1372. #define MCI_VID_QUALITY_BETTER       MCI_VID_QUALITY_MED
  1373. #define MCI_VID_QUALITY_GOOD         MCI_VID_QUALITY_LOW
  1374.  
  1375. #define MCI_IMG_QUALITY_HIGH         0x00000201L
  1376. #define MCI_IMG_QUALITY_MED          0x00000202L
  1377. #define MCI_IMG_QUALITY_LOW          0x00000203L
  1378.  
  1379. /*******************************************************/
  1380. /* MCI_SET flags for wave audio                        */
  1381. /*******************************************************/
  1382. #define MCI_WAVE_SET_SAMPLESPERSEC          0x01000000L
  1383. #define MCI_WAVE_SET_AVGBYTESPERSEC         0x02000000L
  1384. #define MCI_WAVE_SET_BLOCKALIGN             0x04000000L
  1385. #define MCI_WAVE_SET_FORMATTAG              0x08000000L
  1386. #define MCI_WAVE_SET_CHANNELS               0x10000000L
  1387. #define MCI_WAVE_SET_BITSPERSAMPLE          0x80000000L
  1388.  
  1389. /*******************************************************/
  1390. /* Wave format tag defines                             */
  1391. /*******************************************************/
  1392. #define MCI_WAVE_FORMAT_PCM                 DATATYPE_WAVEFORM
  1393. #define MCI_WAVE_FORMAT_ADPCM               0x0002L
  1394. #define MCI_WAVE_FORMAT_IBM_CVSD            0x0005L
  1395. #define MCI_WAVE_FORMAT_ALAW                DATATYPE_RIFF_ALAW
  1396. #define MCI_WAVE_FORMAT_MULAW               DATATYPE_RIFF_MULAW
  1397. #define MCI_WAVE_FORMAT_OKI_ADPCM           0x0010L
  1398. #define MCI_WAVE_FORMAT_DVI_ADPCM           0x0011L
  1399. #define MCI_WAVE_FORMAT_DIGISTD             0x0015L
  1400. #define MCI_WAVE_FORMAT_DIGIFIX             0x0016L
  1401. #define MCI_WAVE_FORMAT_AVC_ADPCM           DATATYPE_ADPCM_AVC
  1402. #define MCI_WAVE_FORMAT_IBM_ADPCM           DATATYPE_ADPCM_AVC
  1403. #define MCI_WAVE_FORMAT_IBM_MULAW           DATATYPE_MULAW
  1404. #define MCI_WAVE_FORMAT_IBM_ALAW            DATATYPE_ALAW
  1405. #define MCI_WAVE_FORMAT_CT_ADPCM            DATATYPE_CT_ADPCM
  1406. #define MCI_WAVE_FORMAT_MPEG1               DATATYPE_MPEG1AUDIO
  1407.  
  1408. /*******************************************************/
  1409. /* MCI_SET flags for sequencer                         */
  1410. /*******************************************************/
  1411. #define MCI_SEQ_SET_TEMPO                   0x00100000L
  1412. #define MCI_SEQ_SET_PORT                    0x00200000L
  1413. #define MCI_SEQ_ENABLE_PORT_MAPPER          0x00400000L
  1414. #define MCI_SEQ_DISABLE_PORT_MAPPER         0x00800000L
  1415. #define MCI_SEQ_SET_OFFSET                  0x01000000L
  1416. #define MCI_SEQ_SET_MASTER                  0x02000000L
  1417. #define MCI_SEQ_SET_SLAVE                   0x04000000L
  1418.  
  1419.    /**********************************************/
  1420.    /* SEQ time formats                           */
  1421.    /**********************************************/
  1422.    #define MCI_SEQ_SET_SMPTE_24             0x00000100L
  1423.    #define MCI_SEQ_SET_SMPTE_25             0x00000200L
  1424.    #define MCI_SEQ_SET_SMPTE_30             0x00000300L
  1425.    #define MCI_SEQ_SET_SMPTE_30DROP         0x00000400L
  1426.    #define MCI_SEQ_SET_SONGPTR              0x00000500L
  1427.  
  1428.    /**********************************************/
  1429.    /* SEQ synchronization types                  */
  1430.    /**********************************************/
  1431.    #define MCI_SEQ_MIDI                     0x00000001L
  1432.    #define MCI_SEQ_SMPTE                    0x00000002L
  1433.    #define MCI_SEQ_FILE                     0x00000003L
  1434.    #define MCI_SEQ_NONE                     0x00000004L
  1435.  
  1436.    /**********************************************/
  1437.    /* SEQ PORT TYPES                             */
  1438.    /**********************************************/
  1439.    #define MCI_SET_NONE                     0x10000000L
  1440.    #define MIDI_MAPPER                      0x20000000L
  1441.    #define MCI_MIDI_MAPPER                  MIDI_MAPPER
  1442.  
  1443. typedef struct _MCI_SET_PARMS {
  1444.     DWORD   dwCallback;      /* PM window handle for MCI notify message        */
  1445.     DWORD   dwTimeFormat;    /* Time format to be used by the device           */
  1446.     DWORD   dwSpeedFormat;   /* Speed format used by this device               */
  1447.     DWORD   dwAudio;         /* Channel number for this operation              */
  1448.                              /* (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,      */
  1449.                              /*  MCI_SET_AUDIO_ALL)                            */
  1450.     DWORD   dwLevel;         /* Volume, treble or bass level as % of max.      */
  1451.     DWORD   dwOver;          /* Delay time for vectored change in milliseconds */
  1452.     DWORD   dwItem;          /* Item field for set item flags                  */
  1453.     DWORD   dwValue;         /* Value associated with item flag                */
  1454. } MCI_SET_PARMS;
  1455. typedef MCI_SET_PARMS       *LPMCI_SET_PARMS;
  1456.  
  1457. typedef MCI_SET_PARMS       MCI_AMP_SET_PARMS;
  1458. typedef MCI_AMP_SET_PARMS   *LPMCI_AMP_SET_PARMS;
  1459.  
  1460. typedef MCI_SET_PARMS       MCI_DGV_SET_PARMS;
  1461. typedef MCI_DGV_SET_PARMS   *LPMCI_DGV_SET_PARMS;
  1462.  
  1463. typedef MCI_SET_PARMS       MCI_OVLY_SET_PARMS;
  1464. typedef MCI_OVLY_SET_PARMS  *LPMCI_OVLY_SET_PARMS;
  1465.  
  1466. typedef struct _MCI_CDXA_SET_PARMS {
  1467.     DWORD   dwCallback;
  1468.     DWORD   dwTimeFormat;    /* Time format to be used by the device           */
  1469.     DWORD   dwSpeedFormat;   /* Speed format used by this device               */
  1470.     DWORD   dwAudio;         /* Channel number for this operation              */
  1471.                              /* (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,      */
  1472.                              /*  MCI_SET_AUDIO_ALL)                            */
  1473.     DWORD   dwLevel;         /* Volume, treble or bass level as % of max.      */
  1474.     DWORD   dwOver;          /* Delay time for vectored change in milliseconds */
  1475.     DWORD   dwItem;          /* Item field for set item flags                  */
  1476.     DWORD   dwValue;         /* Value associated with item flag                */
  1477.     DWORD   dwChannel;       /* Channel number                                 */
  1478.     PVOID   pPlayList;       /* Pointer to play list                           */
  1479.     DWORD   dwPlayListSize;  /* Play list size                                 */
  1480. } MCI_CDXA_SET_PARMS;
  1481. typedef MCI_CDXA_SET_PARMS   *LPMCI_CDXA_SET_PARMS;
  1482.  
  1483. typedef struct _MCI_VD_SET_PARMS {
  1484.     DWORD   dwCallback;      /* PM window handle for MCI notify message        */
  1485.     DWORD   dwTimeFormat;    /* Time format to be used by the device           */
  1486.     DWORD   dwSpeedFormat;   /* Speed format used by this device               */
  1487.     DWORD   dwAudio;         /* Channel number for this operation              */
  1488.                              /* (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,      */
  1489.                              /*  MCI_SET_AUDIO_ALL)                            */
  1490.     DWORD   dwLevel;         /* Volume, treble or bass level as % of max.      */
  1491.     DWORD   dwOver;          /* Delay time for vectored change in milliseconds */
  1492.     DWORD   dwItem;          /* Item field for set item flags                  */
  1493.     DWORD   dwValue;         /* Value associated with item flag                */
  1494.     DWORD   dwChannel;       /* Videodisc channel                              */
  1495. } MCI_VD_SET_PARMS;
  1496. typedef MCI_VD_SET_PARMS   *LPMCI_VD_SET_PARMS;
  1497.  
  1498. typedef struct _MCI_WAVE_SET_PARMS {
  1499.     DWORD   dwCallback;      /* PM window handle for MCI notify message        */
  1500.     DWORD   dwTimeFormat;    /* Time format to be used by the device           */
  1501.     DWORD   dwSpeedFormat;   /* Speed format used by this device               */
  1502.     DWORD   dwAudio;         /* Channel number for this operation              */
  1503.                              /* (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,      */
  1504.                              /*  MCI_SET_AUDIO_ALL)                            */
  1505.     DWORD   dwLevel;         /* Volume, trebble or bass level as % of max.     */
  1506.     DWORD   dwOver;          /* Delay time for vectored change in milliseconds */
  1507.     DWORD   dwItem;          /* Item field for set item flags                  */
  1508.     DWORD   dwValue;         /* Value associated with item flag                */
  1509.     WORD    wInput;          /* Channel for input                              */
  1510.     WORD    wReserved0;      /* Reserved field                                 */
  1511.     WORD    wOutput;         /* Channel for output                             */
  1512.     WORD    wReserved1;      /* Reserved field                                 */
  1513.     WORD    wFormatTag;      /* Format tag                                     */
  1514.     WORD    wReserved2;      /* Reserved field                                 */
  1515.     WORD    nChannels;       /* mono(1) or stereo(2)                           */
  1516.     WORD    wReserved3;      /* Reserved field                                 */
  1517.     DWORD   nSamplesPerSec;  /* Samples per seconds                            */
  1518.     DWORD   nAvgBytesPerSec; /* Bytes per seconds                              */
  1519.     WORD    nBlockAlign;     /* Block alignment of data                        */
  1520.     WORD    wReserved4;      /* Reserved field                                 */
  1521.     WORD    wBitsPerSample;  /* Bits per seconds                               */
  1522.     WORD    wReserved5;      /* Reserved field                                 */
  1523. } MCI_WAVE_SET_PARMS;
  1524. typedef MCI_WAVE_SET_PARMS   *LPMCI_WAVE_SET_PARMS;
  1525.  
  1526. typedef struct _MCI_SEQ_SET_PARMS {
  1527.     DWORD   dwCallback;
  1528.     DWORD   dwTimeFormat;    /* Time format to be used by the device           */
  1529.     DWORD   dwSpeedFormat;   /* Speed format used by this device               */
  1530.     DWORD   dwAudio;         /* Channel number for this operation              */
  1531.                              /* (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,      */
  1532.                              /*  MCI_SET_AUDIO_ALL)                            */
  1533.     DWORD   dwLevel;         /* Volume, trebble or bass level as % of max.     */
  1534.     DWORD   dwOver;          /* Delay time for vectored change in milliseconds */
  1535.     DWORD   dwItem;          /* Item field for set item flags                  */
  1536.     DWORD   dwValue;         /* Value associated with item flag                */
  1537.     DWORD   dwTempo;         /* Specified the tempo                            */
  1538.     DWORD   dwPort;          /* Output port                                    */
  1539.     DWORD   dwSlave;         /* Unused field                                   */
  1540.     DWORD   dwMaster;        /* Unused field                                   */
  1541.     DWORD   dwOffset;        /* Specified the data offset                      */
  1542. } MCI_SEQ_SET_PARMS;
  1543. typedef MCI_SEQ_SET_PARMS   *LPMCI_SEQ_SET_PARMS;
  1544.  
  1545.  
  1546. /*********************************************************************/
  1547. /* parameters for the MCI_SET_CUEPOINT message                       */
  1548. /*     0x00000x00 are reserved for MCI_SET_CUEPOINT flags            */
  1549. /*********************************************************************/
  1550. #define MCI_SET_CUEPOINT_ON                 0x00000100L
  1551. #define MCI_SET_CUEPOINT_OFF                0x00000200L
  1552.  
  1553. typedef struct _MCI_CUEPOINT_PARMS {
  1554.     DWORD   dwCallback;      /* PM window handle for MCI notify message        */
  1555.     DWORD   dwCuepoint;      /* Specifies the cuepoint location                */
  1556.     WORD    wUserParm;       /* User parmameter returned on cuepoint           */
  1557.                              /* notify message                                 */
  1558.     WORD    wReserved0;      /* Reserved field                                 */
  1559. } MCI_CUEPOINT_PARMS;
  1560. typedef MCI_CUEPOINT_PARMS   *LPMCI_CUEPOINT_PARMS;
  1561.  
  1562. /*********************************************************************/
  1563. /* parameters for the MCI_SETIMAGEPALETTE message                    */
  1564. /*     0x000XXX00 are reserved for MCI_SETIMAGEPALETTE flags         */
  1565. /*********************************************************************/
  1566. #define MCI_SET_REGISTERED                  0x00000100L
  1567.  
  1568. /*********************************************************************/
  1569. /* flags and parameter structure for the MCI_SET_POSITION_ADVISE msg */
  1570. /*     0x00000X00 are reserved for MCI_SET_POSITION_ADVISE flags     */
  1571. /*********************************************************************/
  1572. #define MCI_SET_POSITION_ADVISE_ON          0x00000100L
  1573. #define MCI_SET_POSITION_ADVISE_OFF         0x00000200L
  1574.  
  1575. typedef struct _MCI_POSITION_PARMS {
  1576.     DWORD   dwCallback;      /* PM window handle for MCI notify message        */
  1577.     DWORD   dwUnits;         /* Specifies position change notifiication        */
  1578.                              /* granularity                                    */
  1579.     WORD    wUserParm;       /* User parameter returned on position change     */
  1580.                              /* notification message.                          */
  1581.     WORD    Reserved0;       /* Reserved field                                 */
  1582.     DWORD   Reserved1;       /* Reserved field                                 */
  1583.     } MCI_POSITION_PARMS;
  1584. typedef MCI_POSITION_PARMS   *LPMCI_POSITION_PARMS;
  1585.  
  1586. /*********************************************************************/
  1587. /* parameter structure for the MCI_SET_SYNC_OFFSET message           */
  1588. /*********************************************************************/
  1589. typedef struct _MCI_SYNC_OFFSET_PARMS{
  1590.     DWORD   dwCallback;      /* PM window handle for MCI notify message        */
  1591.     DWORD   dwOffset;        /* Specifies the device media position offset     */
  1592.                              /* in the currently specified device units.       */
  1593. } MCI_SYNC_OFFSET_PARMS;
  1594. typedef MCI_SYNC_OFFSET_PARMS   *LPMCI_SYNC_OFFSET_PARMS;
  1595.  
  1596. /*********************************************************************/
  1597. /* flags for the MCI_SPIN message                                    */
  1598. /*     0x00000X00 are reserved for MCI_SPIN flags                    */
  1599. /*********************************************************************/
  1600. #define MCI_SPIN_UP                         0x00000100L
  1601. #define MCI_SPIN_DOWN                       0x00000200L
  1602.  
  1603. /*********************************************************************/
  1604. /* MCI_STATUS message flags                                          */
  1605. /*     0x000XXX00 are reserved for MCI_STATUS flags                  */
  1606. /*     MCI_VOLUME and MCI_VOLUME_DELAY are 0x00000100 and 0x00000200 */
  1607. /*********************************************************************/
  1608. #define MCI_STATUS_ITEM                     0x00000100L
  1609. #define MCI_STATUS_START                    0x00000200L
  1610. #define MCI_STATUS_CONNECTOR                0x00000400L
  1611.  
  1612. /*************************************************/
  1613. /* General MCI_STATUS item values                */
  1614. /*************************************************/
  1615. #define MCI_STATUS_CURRENT_TRACK            0x00000001L
  1616. #define MCI_STATUS_LENGTH                   0x00000002L
  1617. #define MCI_STATUS_MODE                     0x00000003L
  1618. #define MCI_STATUS_NUMBER_OF_TRACKS         0x00000004L
  1619. #define MCI_STATUS_POSITION                 0x00000005L
  1620. #define MCI_STATUS_POSITION_IN_TRACK        0x00000006L
  1621. #define MCI_STATUS_MEDIA_PRESENT            0x00000007L
  1622. #define MCI_STATUS_VOLUME                   0x00000008L
  1623. #define MCI_STATUS_READY                    0x00000009L
  1624. #define MCI_STATUS_TIME_FORMAT              0x0000000AL
  1625. #define MCI_STATUS_SPEED_FORMAT             0x0000000BL
  1626. #define MCI_STATUS_MONITOR                  0x0000000CL
  1627. #define MCI_STATUS_AUDIO                    0x0000000DL
  1628. #define MCI_STATUS_VIDEO                    0x0000000EL
  1629. #define MCI_STATUS_CLIPBOARD                0x0000000FL
  1630. #define MCI_STATUS_CAN_PASTE                0x00000010L
  1631. #define MCI_STATUS_CAN_REDO                 0x00000020L
  1632. #define MCI_STATUS_CAN_UNDO                 0x00000030L
  1633.  
  1634.    /*************************************************/
  1635.    /* dwValue field values for MCI_STATUS_AUDIO     */
  1636.    /*************************************************/
  1637. #define MCI_STATUS_AUDIO_ALL                   0x00000000L
  1638. #define MCI_STATUS_AUDIO_LEFT                  0x00000001L
  1639. #define MCI_STATUS_AUDIO_RIGHT                 0x00000002L
  1640.  
  1641. /*************************************************/
  1642. /* MCI_STATUS item values for amp/mixer          */
  1643. /*************************************************/
  1644. #define MCI_AMP_STATUS_PITCH                MCI_AMP_ITEM_BASE
  1645. #define MCI_AMP_STATUS_TREBLE               (MCI_AMP_ITEM_BASE+1)
  1646. #define MCI_AMP_STATUS_BASS                 (MCI_AMP_ITEM_BASE+2)
  1647. #define MCI_AMP_STATUS_BALANCE              (MCI_AMP_ITEM_BASE+3)
  1648. #define MCI_AMP_STATUS_GAIN                 (MCI_AMP_ITEM_BASE+4)
  1649. #define MCI_AMP_STATUS_MONITOR              (MCI_AMP_ITEM_BASE+5)
  1650.  
  1651. #define MCI_AMP_STATUS_MID                  (MCI_AMP_ITEM_BASE+6)
  1652. #define MCI_AMP_STATUS_VOLUME               MCI_STATUS_VOLUME
  1653. #define MCI_AMP_STATUS_LOUDNESS             (MCI_AMP_ITEM_BASE+7)
  1654. #define MCI_AMP_STATUS_CROSSOVER            (MCI_AMP_ITEM_BASE+8)
  1655. #define MCI_AMP_STATUS_REVERB               (MCI_AMP_ITEM_BASE+9)
  1656. #define MCI_AMP_STATUS_ALC                  (MCI_AMP_ITEM_BASE+10)
  1657. #define MCI_AMP_STATUS_CHORUS               (MCI_AMP_ITEM_BASE+11)
  1658. #define MCI_AMP_STATUS_CUSTOM1              (MCI_AMP_ITEM_BASE+12)
  1659. #define MCI_AMP_STATUS_CUSTOM2              (MCI_AMP_ITEM_BASE+13)
  1660. #define MCI_AMP_STATUS_CUSTOM3              (MCI_AMP_ITEM_BASE+14)
  1661.  
  1662. /*************************************************/
  1663. /* MCI_STATUS item values for cd audio           */
  1664. /*************************************************/
  1665. #define MCI_CD_STATUS_TRACK_TYPE            MCI_CD_ITEM_BASE
  1666. #define MCI_CD_STATUS_TRACK_COPYPERMITTED   (MCI_CD_ITEM_BASE+1)
  1667. #define MCI_CD_STATUS_TRACK_CHANNELS        (MCI_CD_ITEM_BASE+2)
  1668. #define MCI_CD_STATUS_TRACK_PREEMPHASIS     (MCI_CD_ITEM_BASE+3)
  1669.  
  1670.     /************************************************/
  1671.     /* return values for CD MCI_STATUS message with */
  1672.     /*   MCI_CD_STATUS_TRACK_TYPE set               */
  1673.     /************************************************/
  1674. #define MCI_CD_TRACK_AUDIO                  0x00000001L
  1675. #define MCI_CD_TRACK_DATA                   0x00000002L
  1676. #define MCI_CD_TRACK_OTHER                  0x00000003L
  1677.  
  1678. /*************************************************/
  1679. /* MCI_STATUS item values for CDXA               */
  1680. /*************************************************/
  1681. #define MCI_CDXA_STATUS_CHANNEL             MCI_CDXA_ITEM_BASE
  1682.  
  1683.     /************************************************/
  1684.     /*returned from call for MCI_CDXA_STATUS_CHANNEL*/
  1685.     /************************************************/
  1686. #define MCI_CDXA_NONE                       0x00000000L
  1687.  
  1688.  
  1689. /*************************************************/
  1690. /* MCI_STATUS item values for sequencer          */
  1691. /*************************************************/
  1692. #define MCI_SEQ_STATUS_TEMPO                MCI_SEQ_ITEM_BASE
  1693. #define MCI_SEQ_STATUS_OFFSET               (MCI_SEQ_ITEM_BASE+1)
  1694. #define MCI_SEQ_STATUS_DIVTYPE              (MCI_SEQ_ITEM_BASE+2)
  1695. #define MCI_SEQ_STATUS_MASTER               (MCI_SEQ_ITEM_BASE+3)
  1696. #define MCI_SEQ_STATUS_PORT                 (MCI_SEQ_ITEM_BASE+4)
  1697. #define MCI_SEQ_STATUS_SLAVE                (MCI_SEQ_ITEM_BASE+5)
  1698.  
  1699.    /**********************************************/
  1700.    /* Return value for current division type     */
  1701.    /**********************************************/
  1702. #define MCI_SEQ_DIV_PPQN                    0x00000001L
  1703. #define MCI_SEQ_DIV_SMPTE_24                0x00000002L
  1704. #define MCI_SEQ_DIV_SMPTE_25                0x00000003L
  1705. #define MCI_SEQ_DIV_SMPTE_30DROP            0x00000004L
  1706. #define MCI_SEQ_DIV_SMPTE_30                0x00000005L
  1707.  
  1708.    /*************************************************/
  1709.    /* MCI_STATUS items for videodisc                */
  1710.    /*************************************************/
  1711. #define MCI_VD_STATUS_SPEED                 MCI_VD_ITEM_BASE
  1712. #define MCI_VD_STATUS_FORWARD               (MCI_VD_ITEM_BASE+1)
  1713. #define MCI_VD_MEDIA_TYPE                   (MCI_VD_ITEM_BASE+2)
  1714. #define MCI_VD_STATUS_SIDE                  (MCI_VD_ITEM_BASE+3)
  1715. #define MCI_VD_STATUS_DISC_SIZE             (MCI_VD_ITEM_BASE+4)
  1716.  
  1717.     /***********************************************/
  1718.     /* return values for videodisc status command  */
  1719.     /***********************************************/
  1720. #define MCI_VD_SPEED_NORMAL                 0x00000000L
  1721. #define MCI_VD_SPEED_FAST                   0x00000001L
  1722. #define MCI_VD_SPEED_SLOW                   0x00000002L
  1723.  
  1724. /*************************************************/
  1725. /* MCI_STATUS items for wave audio               */
  1726. /*************************************************/
  1727. #define MCI_WAVE_STATUS_LEVEL               MCI_WAVE_ITEM_BASE
  1728. #define MCI_WAVE_STATUS_SAMPLESPERSEC       (MCI_WAVE_ITEM_BASE+1)
  1729. #define MCI_WAVE_STATUS_AVGBYTESPERSEC      (MCI_WAVE_ITEM_BASE+2)
  1730. #define MCI_WAVE_STATUS_BLOCKALIGN          (MCI_WAVE_ITEM_BASE+3)
  1731. #define MCI_WAVE_STATUS_FORMATTAG           (MCI_WAVE_ITEM_BASE+4)
  1732. #define MCI_WAVE_STATUS_CHANNELS            (MCI_WAVE_ITEM_BASE+5)
  1733. #define MCI_WAVE_STATUS_BITSPERSAMPLE       (MCI_WAVE_ITEM_BASE+6)
  1734.  
  1735. /*************************************************/
  1736. /* Common video MCI_STATUS items                 */
  1737. /*************************************************/
  1738. #define MCI_VID_STATUS_HWND                 MCI_VID_ITEM_BASE
  1739. #define MCI_VID_STATUS_AUDIO_COMPRESSION    (MCI_VID_ITEM_BASE+1)
  1740. #define MCI_VID_STATUS_VIDEO_COMPRESSION    (MCI_VID_ITEM_BASE+2)
  1741. #define MCI_VID_STATUS_IMAGE_COMPRESSION    (MCI_VID_ITEM_BASE+3)
  1742. #define MCI_VID_STATUS_AUDIO_QUALITY        (MCI_VID_ITEM_BASE+4)
  1743. #define MCI_VID_STATUS_VIDEO_QUALITY        (MCI_VID_ITEM_BASE+5)
  1744. #define MCI_VID_STATUS_IMAGE_QUALITY        (MCI_VID_ITEM_BASE+6)
  1745. #define MCI_VID_STATUS_IMAGE_BITSPERPEL     (MCI_VID_ITEM_BASE+7)
  1746. #define MCI_VID_STATUS_IMAGE_PELFORMAT      (MCI_VID_ITEM_BASE+8)
  1747. #define MCI_VID_STATUS_FORWARD              (MCI_VID_ITEM_BASE+9)
  1748. #define MCI_VID_STATUS_NORMAL_RATE          (MCI_VID_ITEM_BASE+10)
  1749. #define MCI_VID_STATUS_VIDEO_X_EXTENT       (MCI_VID_ITEM_BASE+11)
  1750. #define MCI_VID_STATUS_VIDEO_Y_EXTENT       (MCI_VID_ITEM_BASE+12)
  1751. #define MCI_VID_STATUS_IMAGE_X_EXTENT       (MCI_VID_ITEM_BASE+13)
  1752. #define MCI_VID_STATUS_IMAGE_Y_EXTENT       (MCI_VID_ITEM_BASE+14)
  1753. #define MCI_VID_STATUS_BRIGHTNESS           (MCI_VID_ITEM_BASE+15)
  1754. #define MCI_VID_STATUS_CONTRAST             (MCI_VID_ITEM_BASE+16)
  1755. #define MCI_VID_STATUS_HUE                  (MCI_VID_ITEM_BASE+17)
  1756. #define MCI_VID_STATUS_SATURATION           (MCI_VID_ITEM_BASE+18)
  1757. #define MCI_VID_STATUS_GREYSCALE            (MCI_VID_ITEM_BASE+19)
  1758. #define MCI_VID_STATUS_SHARPNESS            (MCI_VID_ITEM_BASE+20)
  1759. #define MCI_VID_STATUS_SPEED                (MCI_VID_ITEM_BASE+21)
  1760. #define MCI_VID_STATUS_IMAGE_FILE_FORMAT    (MCI_VID_ITEM_BASE+22)
  1761. #define MCI_VID_STATUS_TRANSPARENT_TYPE     (MCI_VID_ITEM_BASE+23)
  1762. #define MCI_VID_STATUS_REF_INTERVAL         (MCI_VID_ITEM_BASE+24)
  1763. #define MCI_VID_STATUS_MAXDATARATE          (MCI_VID_ITEM_BASE+25)
  1764. #define MCI_VID_STATUS_VIDEO_FILE_FORMAT    (MCI_VID_ITEM_BASE+26)
  1765.  
  1766.    /*************************************************/
  1767.    /* Status Transparent Type returns               */
  1768.    /* MCI_VID_PALETTE                               */
  1769.    /* MCI_VID_RGB                                   */
  1770.    /* MCI_VID_YUV                                   */
  1771.    /*************************************************/
  1772. #define MCI_VID_STATUS_TRANSPARENT_COLOR    (MCI_VID_ITEM_BASE+24)
  1773.  
  1774. /*************************************************/
  1775. /* MCI_STATUS items for digital video            */
  1776. /*************************************************/
  1777. #define MCI_DGV_STATUS_HWND                 MCI_VID_STATUS_HWND
  1778. #define MCI_DGV_STATUS_AUDIO_COMPRESSION    MCI_VID_STATUS_AUDIO_COMPRESSION
  1779. #define MCI_DGV_STATUS_VIDEO_COMPRESSION    MCI_VID_STATUS_VIDEO_COMPRESSION
  1780. #define MCI_DGV_STATUS_IMAGE_COMPRESSION    MCI_VID_STATUS_IMAGE_COMPRESSION
  1781. #define MCI_DGV_STATUS_AUDIO_QUALITY        MCI_VID_STATUS_AUDIO_QUALITY
  1782. #define MCI_DGV_STATUS_VIDEO_QUALITY        MCI_VID_STATUS_VIDEO_QUALITY
  1783. #define MCI_DGV_STATUS_IMAGE_QUALITY        MCI_VID_STATUS_IMAGE_QUALITY
  1784. #define MCI_DGV_STATUS_IMAGE_BITSPERPEL     MCI_VID_STATUS_IMAGE_BITSPERPEL
  1785. #define MCI_DGV_STATUS_IMAGE_PELFORMAT      MCI_VID_STATUS_IMAGE_PELFORMAT
  1786. #define MCI_DGV_STATUS_FORWARD              MCI_VID_STATUS_FORWARD
  1787. #define MCI_DGV_STATUS_NORMAL_RATE          MCI_VID_STATUS_NORMAL_RATE
  1788. #define MCI_DGV_STATUS_VIDEO_X_EXTENT       MCI_VID_STATUS_VIDEO_X_EXTENT
  1789. #define MCI_DGV_STATUS_VIDEO_Y_EXTENT       MCI_VID_STATUS_VIDEO_Y_EXTENT
  1790. #define MCI_DGV_STATUS_IMAGE_X_EXTENT       MCI_VID_STATUS_IMAGE_X_EXTENT
  1791. #define MCI_DGV_STATUS_IMAGE_Y_EXTENT       MCI_VID_STATUS_IMAGE_Y_EXTENT
  1792. #define MCI_DGV_STATUS_BRIGHTNESS           MCI_VID_STATUS_BRIGHTNESS
  1793. #define MCI_DGV_STATUS_CONTRAST             MCI_VID_STATUS_CONTRAST
  1794. #define MCI_DGV_STATUS_HUE                  MCI_VID_STATUS_HUE
  1795. #define MCI_DGV_STATUS_SATURATION           MCI_VID_STATUS_SATURATION
  1796. #define MCI_DGV_STATUS_SPEED                MCI_VID_STATUS_SPEED
  1797. #define MCI_DGV_STATUS_SHARPNESS            MCI_VID_STATUS_SHARPNESS
  1798. #define MCI_DGV_STATUS_REF_INTERVAL         MCI_VID_STATUS_REF_INTERVAL
  1799. #define MCI_DGV_STATUS_MAXDATARATE          MCI_VID_STATUS_MAXDATARATE
  1800. #define MCI_DGV_STATUS_VIDEO_FILE_FORMAT    MCI_VID_STATUS_VIDEO_FILE_FORMAT
  1801.  
  1802. #define MCI_DGV_STATUS_CHANNELS             (MCI_DGV_ITEM_BASE+13)
  1803. #define MCI_DGV_STATUS_BITSPERSAMPLE        (MCI_DGV_ITEM_BASE+14)
  1804. #define MCI_DGV_STATUS_SAMPLESPERSEC        (MCI_DGV_ITEM_BASE+15)
  1805. #define MCI_DGV_STATUS_FORMATTAG            (MCI_DGV_ITEM_BASE+16)
  1806. #define MCI_DGV_STATUS_BLOCKALIGN           (MCI_DGV_ITEM_BASE+17)
  1807. #define MCI_DGV_STATUS_AVGBYTESPERSEC       (MCI_DGV_ITEM_BASE+18)
  1808. #define MCI_DGV_STATUS_VIDEO_COMPRESSION_SUBTYPE   (MCI_DGV_ITEM_BASE+19)
  1809. #define MCI_DGV_STATUS_VIDEO_RECORD_RATE           (MCI_DGV_ITEM_BASE+20)
  1810. #define MCI_DGV_STATUS_VIDEO_RECORD_FRAME_DURATION (MCI_DGV_ITEM_BASE+21)
  1811. #define MCI_DGV_STATUS_RECORD_AUDIO         (MCI_DGV_ITEM_BASE+22)
  1812. #define MCI_DGV_STATUS_TRANSPARENT_COLOR    (MCI_DGV_ITEM_BASE+23)
  1813. #define MCI_DGV_STATUS_GRAPHIC_TRANSPARENT_COLOR (MCI_DGV_ITEM_BASE+23)  /* MUST BE SAME AS TRANSPARENT COLOR */
  1814. #define MCI_DGV_STATUS_HWND_MONITOR         (MCI_DGV_ITEM_BASE+24)
  1815. #define MCI_DGV_STATUS_DROPPED_FRAME_PCT    (MCI_DGV_ITEM_BASE+25)
  1816. #define MCI_DGV_STATUS_AUDIOSYNC            (MCI_DGV_ITEM_BASE+26)
  1817. #define MCI_DGV_STATUS_AUDIOSYNC_DIRECTION  (MCI_DGV_ITEM_BASE+27)
  1818. #define MCI_DGV_STATUS_VIDEO_TRANSPARENT_COLOR (MCI_DGV_ITEM_BASE+28)  /* MUST BE SAME AS TRANSPARENT COLOR */
  1819. #define MCI_DGV_STATUS_TUNER_TV_CHANNEL     (MCI_DGV_ITEM_BASE+29)
  1820. #define MCI_DGV_STATUS_TUNER_LOW_TV_CHANNEL (MCI_DGV_ITEM_BASE+30)
  1821. #define MCI_DGV_STATUS_TUNER_HIGH_TV_CHANNEL (MCI_DGV_ITEM_BASE+31)
  1822. #define MCI_DGV_STATUS_TUNER_REGION          (MCI_DGV_ITEM_BASE+32)
  1823. #define MCI_DGV_STATUS_TUNER_FINETUNE        (MCI_DGV_ITEM_BASE+33)
  1824. #define MCI_DGV_STATUS_TUNER_FREQUENCY       (MCI_DGV_ITEM_BASE+34)
  1825. #define MCI_DGV_STATUS_TUNER_AUDIO_CHANNEL   (MCI_DGV_ITEM_BASE+35)
  1826. #define MCI_DGV_STATUS_TUNER_AFC             (MCI_DGV_ITEM_BASE+36)
  1827. #define MCI_DGV_STATUS_VALID_SIGNAL          (MCI_DGV_ITEM_BASE+37)
  1828.  
  1829. /*************************************************/
  1830. /* MCI_STATUS item values for video overlay      */
  1831. /*************************************************/
  1832. #define MCI_OVLY_STATUS_HWND                 MCI_VID_STATUS_HWND
  1833. #define MCI_OVLY_STATUS_IMAGE_COMPRESSION    MCI_VID_STATUS_IMAGE_COMPRESSION
  1834. #define MCI_OVLY_STATUS_IMAGE_BITSPERPEL     MCI_VID_STATUS_IMAGE_BITSPERPEL
  1835. #define MCI_OVLY_STATUS_IMAGE_PELFORMAT      MCI_VID_STATUS_IMAGE_PELFORMAT
  1836. #define MCI_OVLY_STATUS_IMAGE_X_EXTENT       MCI_VID_STATUS_IMAGE_X_EXTENT
  1837. #define MCI_OVLY_STATUS_IMAGE_Y_EXTENT       MCI_VID_STATUS_IMAGE_Y_EXTENT
  1838. #define MCI_OVLY_STATUS_BRIGHTNESS           MCI_VID_STATUS_BRIGHTNESS
  1839. #define MCI_OVLY_STATUS_CONTRAST             MCI_VID_STATUS_CONTRAST
  1840. #define MCI_OVLY_STATUS_HUE                  MCI_VID_STATUS_HUE
  1841. #define MCI_OVLY_STATUS_SATURATION           MCI_VID_STATUS_SATURATION
  1842. #define MCI_OVLY_STATUS_GREYSCALE            MCI_VID_STATUS_GREYSCALE
  1843. #define MCI_OVLY_STATUS_IMAGE_QUALITY        MCI_VID_STATUS_IMAGE_QUALITY
  1844. #define MCI_OVLY_STATUS_SHARPNESS            MCI_VID_STATUS_SHARPNESS
  1845. #define MCI_OVLY_STATUS_IMAGE_FILE_FORMAT    MCI_VID_STATUS_IMAGE_FILE_FORMAT
  1846. #define MCI_OVLY_STATUS_TRANSPARENT_TYPE     MCI_VID_STATUS_TRANSPARENT_TYPE
  1847. #define MCI_OVLY_STATUS_TRANSPARENT_COLOR    MCI_VID_STATUS_TRANSPARENT_COLOR
  1848.  
  1849.    /*************************************************/
  1850.    /* Status Mode return values                     */
  1851.    /*************************************************/
  1852. #define MCI_MODE_NOT_READY                  0x00000001L
  1853. #define MCI_MODE_PAUSE                      0x00000002L
  1854. #define MCI_MODE_PLAY                       0x00000003L
  1855. #define MCI_MODE_STOP                       0x00000004L
  1856. #define MCI_MODE_RECORD                     0x00000005L
  1857. #define MCI_MODE_SEEK                       0x00000006L
  1858.  
  1859.    /*************************************************/
  1860.    /* Status Direction return values                */
  1861.    /*************************************************/
  1862. #define MCI_FORWARD                         0x00000000L
  1863. #define MCI_REVERSE                         0x00000001L
  1864.  
  1865. typedef struct _MCI_STATUS_PARMS {
  1866.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  1867.     DWORD   dwReturn;        /* Return field                            */
  1868.     DWORD   dwItem;          /* Item field for STATUS item to query     */
  1869.     DWORD   dwValue;         /* Status value field (this used to be)    */
  1870.                              /*  dwTrack but was changed in Rel 1.1     */
  1871.                              /*  to extend the status structure.        */
  1872.                              /*  See the programming reference on when  */
  1873.                              /*  dwValue is used and how...             */
  1874. } MCI_STATUS_PARMS;
  1875. typedef MCI_STATUS_PARMS   *LPMCI_STATUS_PARMS;
  1876.  
  1877.  
  1878. typedef struct _MCI_CDXA_STATUS_PARMS {
  1879.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  1880.     DWORD   dwReturn;        /* Return field                            */
  1881.     DWORD   dwItem;          /* Item field for STATUS item to query     */
  1882.     DWORD   dwValue;         /* Status value field (this used to be)    */
  1883.                              /*  dwTrack but was changed in Rel 1.1     */
  1884.                              /*  to extend the status structure.        */
  1885.                              /*  See the programming reference on when  */
  1886.                              /*  dwValue is used and how...             */
  1887.     DWORD   dwChannel;       /* Channel                                 */
  1888. } MCI_CDXA_STATUS_PARMS;
  1889. typedef MCI_CDXA_STATUS_PARMS   *LPMCI_CDXA_STATUS_PARMS;
  1890.  
  1891. /*********************************************************************/
  1892. /* flags and parameter structure for the MCI_STEP message            */
  1893. /*     0x00000X00 are reserved for MCI_STEP flags                    */
  1894. /*********************************************************************/
  1895. #define MCI_STEP_FRAMES                     0x00000100L
  1896. #define MCI_STEP_REVERSE                    0x00000200L
  1897.  
  1898. typedef struct _MCI_STEP_PARMS {
  1899.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  1900.     DWORD   dwStep;          /* amount to step in current time format   */
  1901. } MCI_STEP_PARMS;
  1902. typedef MCI_STEP_PARMS   *LPMCI_STEP_PARMS;
  1903.  
  1904. /*********************************************************************/
  1905. /* flags for the MCI_SYSINFO message                                 */
  1906. /*     0xXXXXXX00 are reserved for MCI_SYSINFO flags                 */
  1907. /*********************************************************************/
  1908. #define MCI_SYSINFO_QUANTITY                0x00000100L
  1909. #define MCI_SYSINFO_OPEN                    0x00000200L
  1910. #define MCI_SYSINFO_NAME                    0x00000400L
  1911. #define MCI_SYSINFO_INSTALLNAME             0x00000800L
  1912. #define MCI_SYSINFO_ITEM                    0x00001000L
  1913. #define MCI_SYSINFO_INI_LOCK                0x00002000L
  1914.  
  1915.     /********************************************************/
  1916.     /* Extended SYSINFO functions                           */
  1917.     /********************************************************/
  1918.     #define MCI_SYSINFO_INSTALL_DRIVER      0x00000001L
  1919.     #define MCI_SYSINFO_QUERY_DRIVER        0x00000002L
  1920.     #define MCI_SYSINFO_DELETE_DRIVER       0x00000004L
  1921.     #define MCI_SYSINFO_SET_PARAMS          0x00000008L
  1922.     #define MCI_SYSINFO_QUERY_PARAMS        0x00000010L
  1923.     #define MCI_SYSINFO_SET_CONNECTORS      0x00000020L
  1924.     #define MCI_SYSINFO_QUERY_CONNECTORS    0x00000040L
  1925.     #define MCI_SYSINFO_SET_EXTENSIONS      0x00000080L
  1926.     #define MCI_SYSINFO_QUERY_EXTENSIONS    0x00000100L
  1927.     #define MCI_SYSINFO_SET_ALIAS           0x00000200L
  1928.     #define MCI_SYSINFO_QUERY_NAMES         0x00000400L
  1929.     #define MCI_SYSINFO_SET_DEFAULT         0x00000800L
  1930.     #define MCI_SYSINFO_QUERY_DEFAULT       0x00001000L
  1931.     #define MCI_SYSINFO_SET_TYPES           0x00002000L
  1932.     #define MCI_SYSINFO_QUERY_TYPES         0x00004000L
  1933.  
  1934.     /********************************************************/
  1935.     /* Device Flags                                         */
  1936.     /********************************************************/
  1937.     #define MCI_SYSINFO_DEV_CONTROLLABLE    0x00000001L
  1938.     #define MCI_SYSINFO_DEV_NONCONTROLLABLE 0x00000002L
  1939.     #define MCI_SYSINFO_DEVICESETTINGS      0x00000004L
  1940.  
  1941. /*********************************************************************/
  1942. /* parameter structures for the MCI_SYSINFO message                  */
  1943. /*********************************************************************/
  1944. typedef struct _MCI_SYSINFO_PARMS {
  1945.     DWORD   dwDummyCallback; /* NOTIFY not allowed for SYSINFO          */
  1946.     LPSTR   lpstrReturn;     /* Pointer to return buffer                */
  1947.     DWORD   dwRetSize;       /* Return buffer size                      */
  1948.     DWORD   dwNumber;        /* Ordinal Number                          */
  1949.     WORD    wDeviceType;     /* MCI device type number                  */
  1950.     WORD    wReserved0;      /* Reserved field                          */
  1951.     DWORD   dwItem;          /* Used to indicate the MCI_SYSINFO        */
  1952.                              /* extended function to perform            */
  1953.     PVOID   pSysInfoParm;
  1954. } MCI_SYSINFO_PARMS;
  1955. typedef MCI_SYSINFO_PARMS   *LPMCI_SYSINFO_PARMS;
  1956.  
  1957. typedef struct _MCI_SYSINFO_LOGDEVICE {
  1958.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name            */
  1959.     USHORT  usDeviceType;                         /* Device type number             */
  1960.     ULONG   ulDeviceFlag;                         /* Flag indicating whether device */
  1961.                                                   /*  device is controllable or not */
  1962.     CHAR    szVersionNumber[MAX_VERSION_NUMBER];  /* INI file version number        */
  1963.     CHAR    szProductInfo[MAX_PRODINFO];          /* Textual product description    */
  1964.     CHAR    szMCDDriver[MAX_DEVICE_NAME];         /* MCI Driver dll name            */
  1965.     CHAR    szVSDDriver[MAX_DEVICE_NAME];         /* VSD dll name                   */
  1966.     CHAR    szPDDName[MAX_PDD_NAME];              /* Device PDD name                */
  1967.     CHAR    szMCDTable[MAX_DEVICE_NAME];          /* Device type command table      */
  1968.     CHAR    szVSDTable[MAX_DEVICE_NAME];          /* Device specific command table  */
  1969.     USHORT  usShareType;                          /* Device sharing mode            */
  1970.     CHAR    szResourceName[MAX_DEVICE_NAME];      /* Resource name                  */
  1971.     USHORT  usResourceUnits;                      /* Total resource units available */
  1972.                                                   /*  for this device               */
  1973.     USHORT  usResourceClasses;                    /* Number of resource classes for */
  1974.                                                   /*  this device                   */
  1975.     USHORT  ausClassArray[MAX_CLASSES];           /* Maximum number of resource     */
  1976.                                                   /*  units for each class          */
  1977.     USHORT  ausValidClassArray[MAX_CLASSES][MAX_CLASSES]; /* Valid class combinations */
  1978. } MCI_SYSINFO_LOGDEVICE;
  1979. typedef MCI_SYSINFO_LOGDEVICE  *LPMCI_SYSINFO_LOGDEVICE;
  1980.  
  1981.  
  1982. typedef struct _MCI_SYSINFO_DEVPARAMS {
  1983.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name            */
  1984.     CHAR    szDevParams[MAX_DEV_PARAMS];          /* Device specific parameters     */
  1985. } MCI_SYSINFO_DEVPARAMS;
  1986. typedef MCI_SYSINFO_DEVPARAMS *LPMCI_SYSINFO_DEVPARAMS;
  1987.  
  1988. typedef struct _CONNECT {
  1989.     WORD   wConnectType;                          /* Connector type                 */
  1990.     CHAR   szToInstallName[MAX_DEVICE_NAME];      /* Install name this connector    */
  1991.                                                   /*  is connected to               */
  1992.     WORD   wToConnectIndex;                       /* Connector index this connector */
  1993.                                                   /*  is connected to               */
  1994. } CONNECT;
  1995. typedef CONNECT *PCONNECT;
  1996.  
  1997.  
  1998. typedef struct _MCI_SYSINFO_CONPARAMS {
  1999.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name            */
  2000.     USHORT  usNumConnectors;                      /* Number of device connectors    */
  2001.     CONNECT ConnectorList[MAX_CONNECTORS];        /* Connector list array           */
  2002. } MCI_SYSINFO_CONPARAMS;
  2003. typedef MCI_SYSINFO_CONPARAMS *LPMCI_SYSINFO_CONPARAMS;
  2004.  
  2005. typedef struct _MCI_SYSINFO_EXTENSION {
  2006.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name            */
  2007.     USHORT  usNumExtensions;                      /* Number of extensions           */
  2008.     CHAR    szExtension[MAX_EXTENSIONS][MAX_EXTENSION_NAME];
  2009.                                                   /* Extension name array           */
  2010. } MCI_SYSINFO_EXTENSION;
  2011. typedef MCI_SYSINFO_EXTENSION *LPMCI_SYSINFO_EXTENSION;
  2012.  
  2013. typedef struct _MCI_SYSINFO_ALIAS {
  2014.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name  */
  2015.     CHAR    szAliasName[MAX_ALIAS_NAME];          /* Alias name           */
  2016. } MCI_SYSINFO_ALIAS;
  2017. typedef MCI_SYSINFO_ALIAS *LPMCI_SYSINFO_ALIAS;
  2018.  
  2019. typedef struct _MCI_SYSINFO_DEFAULTDEVICE {
  2020.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name  */
  2021.     USHORT  usDeviceType;                         /* Device type number   */
  2022. } MCI_SYSINFO_DEFAULTDEVICE;
  2023. typedef MCI_SYSINFO_DEFAULTDEVICE *LPMCI_SYSINFO_DEFAULTDEVICE;
  2024.  
  2025. typedef struct _MCI_SYSINFO_QUERY_NAME {
  2026.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name  */
  2027.     CHAR    szLogicalName[MAX_DEVICE_NAME];       /* Logical device name  */
  2028.     CHAR    szAliasName[MAX_ALIAS_NAME];          /* Alias name           */
  2029.     USHORT  usDeviceType;                         /* Device type number   */
  2030.     USHORT  usDeviceOrd;                          /* Device type ordinal  */
  2031. } MCI_SYSINFO_QUERY_NAME;
  2032. typedef MCI_SYSINFO_QUERY_NAME *LPMCI_SYSINFO_QUERY_NAME;
  2033.  
  2034. typedef struct _MCI_SYSINFO_TYPES {
  2035.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name  */
  2036.     CHAR    szTypes[MAX_TYPEBUFFER+1];            /* EA types             */
  2037. } MCI_SYSINFO_TYPES;
  2038. typedef MCI_SYSINFO_TYPES *LPMCI_SYSINFO_TYPES;
  2039.  
  2040.  
  2041. /*********************************************************************/
  2042. /* flags for the MCI_UNFREEZE message                                */
  2043. /*     0x00000X00 are reserved for MCI_UNFREEZE flags                */
  2044. /*********************************************************************/
  2045. #define MCI_OVLY_UNFREEZE_RECT              0x00000100L
  2046. #define MCI_OVLY_UNFREEZE_RECT_OUTSIDE      0x00000200L
  2047.  
  2048. /*********************************************************************/
  2049. /* flags for the MCI_WHERE message                                   */
  2050. /*     0x0000XX00 are reserved for MCI_WHERE flags                   */
  2051. /*********************************************************************/
  2052. #define MCI_VID_WHERE_DESTINATION           0x00000100L
  2053. #define MCI_VID_WHERE_SOURCE                0x00000200L
  2054. #define MCI_VID_WHERE_WINDOW                0x00000400L
  2055.  
  2056. #define MCI_DGV_WHERE_DESTINATION           MCI_VID_WHERE_DESTINATION
  2057. #define MCI_DGV_WHERE_SOURCE                MCI_VID_WHERE_SOURCE
  2058. #define MCI_DGV_WHERE_WINDOW                MCI_VID_WHERE_WINDOW
  2059. #define MCI_DGV_WHERE_ADJUSTED              0x00000800L
  2060.  
  2061. #define MCI_OVLY_WHERE_DESTINATION          MCI_VID_WHERE_DESTINATION
  2062. #define MCI_OVLY_WHERE_SOURCE               MCI_VID_WHERE_SOURCE
  2063. #define MCI_OVLY_WHERE_WINDOW               MCI_VID_WHERE_WINDOW
  2064.  
  2065. /*********************************************************************/
  2066. /* flags and parameter structure for the MCI_WINDOW message          */
  2067. /*     0x0000XX00   are reserved for MCI_WINDOW flags                */
  2068. /*********************************************************************/
  2069. #define MCI_VID_WINDOW_HWND                 0x00000100L
  2070. #define MCI_VID_WINDOW_STATE                0x00000200L
  2071. #define MCI_VID_WINDOW_TEXT                 0x00000400L
  2072. #define MCI_VID_WINDOW_DEFAULT              0x00000800L
  2073.  
  2074. #define MCI_DGV_WINDOW_HWND                 MCI_VID_WINDOW_HWND
  2075. #define MCI_DGV_WINDOW_STATE                MCI_VID_WINDOW_STATE
  2076. #define MCI_DGV_WINDOW_TEXT                 MCI_VID_WINDOW_TEXT
  2077. #define MCI_DGV_WINDOW_DEFAULT              MCI_VID_WINDOW_DEFAULT
  2078.  
  2079. #define MCI_OVLY_WINDOW_HWND                MCI_VID_WINDOW_HWND
  2080. #define MCI_OVLY_WINDOW_STATE               MCI_VID_WINDOW_STATE
  2081. #define MCI_OVLY_WINDOW_TEXT                MCI_VID_WINDOW_TEXT
  2082. #define MCI_OVLY_WINDOW_DEFAULT             MCI_VID_WINDOW_DEFAULT
  2083.  
  2084. typedef  struct _MCI_VID_WINDOW_PARMS{
  2085.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  2086.     HWND    hwndDest;        /* Handle to the client window used for    */
  2087.                              /* the destination of the video image      */
  2088.     WORD    wCmdShow;        /* Specifies how the window is displayed   */
  2089.     WORD    wReserved1;      /* Reserved                                */
  2090.     LPSTR   lpstrText;       /* The text to use as the window caption   */
  2091.     LPSTR   lpstrAlias;      /* The window alias for the display window */
  2092. } MCI_VID_WINDOW_PARMS;
  2093.  
  2094. typedef MCI_VID_WINDOW_PARMS   MCI_DGV_WINDOW_PARMS;
  2095. typedef MCI_DGV_WINDOW_PARMS   *LPMCI_DGV_WINDOW_PARMS;
  2096.  
  2097. typedef MCI_VID_WINDOW_PARMS   MCI_OVLY_WINDOW_PARMS;
  2098. typedef MCI_OVLY_WINDOW_PARMS  *LPMCI_OVLY_WINDOW_PARMS;
  2099.  
  2100.  
  2101. /*********************************************************************/
  2102. /* flags and parameter structure for the MCI_TUNER  message     PML  */
  2103. /*********************************************************************/
  2104. #define MCI_DGV_AUDIO_CHANNEL               0x00010000L
  2105. #define MCI_DGV_TV_CHANNEL                  0x00020000L
  2106. #define MCI_DGV_FREQUENCY                   0x00040000L
  2107. #define MCI_DGV_FINETUNE_PLUS               0x00080000L
  2108. #define MCI_DGV_FINETUNE_MINUS              0x00100000L
  2109. #define MCI_DGV_REGION                      0x00200000L
  2110. #define MCI_DGV_AFC_ON                      0x00400000L
  2111. #define MCI_DGV_AFC_OFF                     0x00800000L
  2112. #define MCI_DGV_POLARIZATION                0x00800000L
  2113. #define MCI_DGV_QUERY                       0x01000000L
  2114.  
  2115. typedef struct _MCI_DGV_TUNER_PARMS {
  2116.     ULONG  ulCallback;       /* PM window handle for MCI notify message    */
  2117.     ULONG  ulFrequency;      /* Tuner Frequency                            */
  2118.     ULONG  ulAudioChannel;   /* Audio Channel                              */
  2119.     ULONG  usTVChannel;      /* TV Channel                                 */
  2120.     LONG   lFineTune;        /* Fine tuning adjustments.                   */
  2121.     LPSTR  lpstrRegion;      /* TV Channel Region                          */
  2122.     ULONG  ulReserved1;      /* Reserved 1                                 */
  2123.     ULONG  ulReserved2;      /* Reserved 2                                 */
  2124. } MCI_DGV_TUNER_PARMS;
  2125. typedef MCI_DGV_TUNER_PARMS   *LPMCI_DGV_TUNER_PARMS;
  2126.  
  2127. #pragma pack()
  2128. /*********************************************************************/
  2129. /*                                                                   */
  2130. /*  MCI system value defines                                         */
  2131. /*                                                                   */
  2132. /*********************************************************************/
  2133. #define MSV_CLOSEDCAPTION                   0x0
  2134. #define MSV_MASTERVOLUME                    0x1
  2135. #define MSV_HEADPHONES                      0x2
  2136. #define MSV_SPEAKERS                        0x3
  2137. #define MSV_WORKPATH                        0x4
  2138. #define MSV_SYSQOSVALUE                     0x5
  2139. #define MSV_SYSQOSERRORFLAG                 0x6
  2140.  
  2141. #define MSV_MAX                             0x7
  2142.  
  2143. #endif                       /* INCL_32 */
  2144.  
  2145. /*********************************************************************/
  2146. /* Playlist defines                                                  */
  2147. /*********************************************************************/
  2148. #define DATA_OPERATION                      0
  2149. #define BRANCH_OPERATION                    1
  2150. #define LOOP_OPERATION                      2
  2151. #define CALL_OPERATION                      3
  2152. #define RETURN_OPERATION                    4
  2153. #define EXIT_OPERATION                      5
  2154. #define NOP_OPERATION                       6
  2155. #define MESSAGE_OPERATION                   7
  2156. #define CUEPOINT_OPERATION                  8
  2157.  
  2158. /*********************************************************************/
  2159. /*                                                                   */
  2160. /*  MCI Function prototypes                                          */
  2161. /*                                                                   */
  2162. /*********************************************************************/
  2163.  
  2164. #ifdef INCL_32
  2165.  
  2166. DWORD APIENTRY mciSendCommand   (WORD   wDeviceID,
  2167.                                  WORD   wMessage,
  2168.                                  DWORD  dwParam1,
  2169.                                  DWORD  dwParam2,
  2170.                                  WORD   wUserParm);
  2171.  
  2172. DWORD APIENTRY  mciSendString   (LPSTR lpstrCommandBuf,
  2173.                                  LPSTR lpstrReturnString,
  2174.                                  WORD  wReturnLength,
  2175.                                  HWND  hCallBack,
  2176.                                  WORD  wUserParm );
  2177.  
  2178. DWORD APIENTRY mciGetErrorString(DWORD   dwError,
  2179.                                  LPSTR   lpstrBuffer,
  2180.                                  WORD    wLength);
  2181.  
  2182.  
  2183. DWORD APIENTRY mciMakeGroup     (PW      pwDeviceGroupID,
  2184.                                  WORD    wDeviceCount,
  2185.                                  PAW     pawDeviceList,
  2186.                                  DWORD   dwFlags,
  2187.                                  DWORD   dwMMTime);
  2188.  
  2189.  
  2190. DWORD APIENTRY mciDeleteGroup   (WORD   wGroupID);
  2191.  
  2192.  
  2193.  
  2194. BOOL APIENTRY mciSetSysValue (USHORT iSysValue, PVOID pValue);
  2195.  
  2196. BOOL  APIENTRY mciQuerySysValue (USHORT iSysValue, PVOID pValue);
  2197.  
  2198. DWORD  APIENTRY mciGetDeviceID  (LPSTR  lpstrName);
  2199.  
  2200. #else                        /* INCL_32 */
  2201.  
  2202. #define mciSendString mci16SendString
  2203. #define mciGetErrorString mci16GetErrorString
  2204. #define mciGetDeviceID mci16GetDeviceID
  2205.  
  2206. ULONG APIENTRY  mciSendString   (LPSTR   lpstrCommandBuf,
  2207.                                  LPSTR   lpstrReturnString,
  2208.                                  WORD    wReturnLength,
  2209.                                  HWND    hCallBack,
  2210.                                  WORD    wUserParm );
  2211.  
  2212. ULONG APIENTRY mciGetErrorString    (DWORD  dwError,
  2213.                                      LPSTR  lpstrBuffer,
  2214.                                      WORD   wLength);
  2215.  
  2216. ULONG APIENTRY mciGetDeviceID  (LPSTR  lpstrName);
  2217.  
  2218.  
  2219. #endif                       /* INCL_32 */
  2220.