home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / mmpm21tk.zip / TK / H / MCIOS2.H < prev    next >
C/C++ Source or Header  |  1993-04-23  |  111KB  |  2,007 lines

  1. /****************************************************************************/
  2. /*                                                                          */
  3. /* Module Name: MCIOS2.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) using      */
  7. /* the OS2 notation.                                                        */
  8. /*                                                                          */
  9. /*         Copyright (c) International Business Machines Corporation        */
  10. /*                          1991, 1992, 1993                                */
  11. /*                        All Rights Reserved                               */
  12. /*                                                                          */
  13. /****************************************************************************/
  14. #define MCI_TRUE                        1
  15. #define MCI_FALSE                       0
  16.  
  17. /*********************************************************************/
  18. /*                                                                   */
  19. /*             MCI command message identifiers                       */
  20. /*                                                                   */
  21. /*********************************************************************/
  22. #define MCI_OPEN                        1
  23. #define MCI_CLOSE                       2
  24. #define MCI_ESCAPE                      3
  25. #define MCI_PLAY                        4
  26. #define MCI_SEEK                        5
  27. #define MCI_STOP                        6
  28. #define MCI_PAUSE                       7
  29. #define MCI_INFO                        8
  30. #define MCI_GETDEVCAPS                  9
  31. #define MCI_STATUS                      10
  32. #define MCI_SPIN                        11
  33. #define MCI_SET                         12
  34. #define MCI_STEP                        13
  35. #define MCI_RECORD                      14
  36. #define MCI_SYSINFO                     15
  37. #define MCI_SAVE                        16
  38. #define MCI_CUE                         17
  39. #define MCI_UPDATE                      18
  40. #define MCI_SET_CUEPOINT                19
  41. #define MCI_SET_POSITION_ADVISE         20
  42. #define MCI_SET_SYNC_OFFSET             21
  43. #define MCI_LOAD                        22
  44. #define MCI_ACQUIREDEVICE               23
  45. #define MCI_RELEASEDEVICE               24
  46. #define MCI_MASTERAUDIO                 25
  47. #define MCI_GETTOC                      26
  48. #define MCI_DEVICESETTINGS              27
  49. #define MCI_CONNECTOR                   28
  50. #define MCI_RESUME                      29
  51. #define MCI_CONNECTORINFO               31
  52. #define MCI_DEFAULT_CONNECTION          32
  53. #define MCI_CONNECTION                  33
  54. #define MCI_GROUP                       34
  55.  
  56.    /*************************************************/
  57.    /* MCI command message identifiers reserved for  */
  58.    /*  Digital Video and Video Overlay              */
  59.    /*************************************************/
  60.  
  61. #define MCI_CAPTURE                     40
  62. #define MCI_FREEZE                      41
  63. #define MCI_GETIMAGEBUFFER              42
  64. #define MCI_GETIMAGEPALETTE             43
  65. #define MCI_PUT                         44
  66. #define MCI_REALIZE                     45
  67. #define MCI_REWIND                      46
  68. #define MCI_RESTORE                     47
  69. #define MCI_SETIMAGEBUFFER              48
  70. #define MCI_SETIMAGEPALETTE             49
  71. #define MCI_UNFREEZE                    50
  72. #define MCI_WHERE                       51
  73. #define MCI_WINDOW                      52
  74.  
  75. #define MCI_DELETE                      53
  76. #define MCI_CUT                         54
  77. #define MCI_PASTE                       55
  78. #define MCI_COPY                        56
  79. #define MCI_REDO                        57
  80. #define MCI_UNDO                        58
  81. #define MCI_MAX_COMMAND                 58
  82.  
  83. #define RECT                            ULONG
  84. #define HDCT                            ULONG
  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.  
  231. /*********************************************************************/
  232. /* Speed formats                                                     */
  233. /*********************************************************************/
  234. #define MCI_FORMAT_PERCENTAGE               0x00000003L
  235. #define MCI_FORMAT_FPS                      0x00000004L
  236.  
  237.  
  238. /*********************************************************************/
  239. /*                                                                   */
  240. /*  Time format conversions macros                                   */
  241. /*                                                                   */
  242. /*********************************************************************/
  243. #define MSECTOMM(value)      (((value) > (0xFFFFFFFF /3)) ? 0L : \
  244.                               ((value) * 3))
  245.  
  246. #define MSECFROMMM(value)    (((value)+1) / 3)
  247.  
  248. #define REDBOOKTOMM(value)   ((((value) & 0x000000FF) * 60 * 3000) + \
  249.                               (((value) & 0x0000FF00) / 0x100 * 3000) + \
  250.                               (((value) & 0x00FF0000) / 0x10000 * 3000/75))
  251.  
  252. #define FPS24TOMM(value) ((((value) & 0x000000FF) * 60 * 60 * 3000) + \
  253.                           (((value) & 0x0000FF00) / 0x100 * 60 * 3000) + \
  254.                           (((value) & 0x00FF0000) / 0x10000 * 3000) + \
  255.                           (((value) & 0xFF000000) / 0x1000000 * 3000/24))
  256.  
  257. #define FPS25TOMM(value) ((((value) & 0x000000FF) * 60 * 60 * 3000) + \
  258.                           (((value) & 0x0000FF00) / 0x100 * 60 * 3000) + \
  259.                           (((value) & 0x00FF0000) / 0x10000 * 3000) + \
  260.                           (((value) & 0xFF000000) / 0x1000000 * 3000/25))
  261.  
  262. #define FPS30TOMM(value) ((((value) & 0x000000FF) * 60 * 60 * 3000) + \
  263.                           (((value) & 0x0000FF00) / 0x100 * 60 * 3000) + \
  264.                           (((value) & 0x00FF0000) / 0x10000 * 3000) + \
  265.                           (((value) & 0xFF000000) / 0x1000000 * 3000/30))
  266.  
  267. #define HMSTOMM(value)   ((((value) & 0x000000FF) * 60 * 60 * 3000) + \
  268.                           (((value) & 0x0000FF00) / 0x100 * 60 * 3000) + \
  269.                           (((value) & 0x00FF0000) / 0x10000 * 3000))
  270.  
  271.  
  272.   /* The +20 is used for rounding purposes.  It is derived by:           */
  273.   /*   1/2 * ((300 MMTIME/SEC / (75 FRAMES/SEC)) = 20 MMTIME/HALF-FRAME  */
  274. #define REDBOOKFROMMM(value) ((((value)+20) >= 0x100*60*3000) ? 0L : \
  275.                               ((((value)+20) / (60*3000)) + \
  276.                                (((value)+20) % (60*3000) / 3000 << 8) + \
  277.                                (((value)+20) / (3000/75) % 75 << 16)))
  278.  
  279. #define FPS24FROMMM(value) ((((value)+63) >= 0x100*60*60*3000) ? 0L : \
  280.                         (((((((value)+63) % 3000)/(3000/24)) << 24) & 0xFF000000) | \
  281.                          ((((((value)+63) / 3000) % 60) << 16) & 0x00FF0000)      | \
  282.                         (((((((value)+63) / 3000) / 60) % 60) << 8) & 0x0000FF00) | \
  283.                          ((((((value)+63) / 3000) / 60) / 60)  & 0x000000FF)))
  284.  
  285. #define FPS25FROMMM(value) ((((value)+60) >= 0x100*60*60*3000) ? 0L : \
  286.                         (((((((value)+60) % 3000)/(3000/25)) << 24) & 0xFF000000) | \
  287.                          ((((((value)+60) / 3000) % 60) << 16) & 0x00FF0000)      | \
  288.                         (((((((value)+60) / 3000) / 60) % 60) << 8) & 0x0000FF00) | \
  289.                          ((((((value)+60) / 3000) / 60) / 60)  & 0x000000FF)))
  290.  
  291. #define FPS30FROMMM(value) ((((value)+50) >= 0x100*60*60*3000) ? 0L : \
  292.                         (((((((value)+50) % 3000)/(3000/30)) << 24) & 0xFF000000) | \
  293.                          ((((((value)+50) / 3000) % 60) << 16) & 0x00FF0000)      | \
  294.                         (((((((value)+50) / 3000) / 60) % 60) << 8) & 0x0000FF00) | \
  295.                          ((((((value)+50) / 3000) / 60) / 60)  & 0x000000FF)))
  296.  
  297. #define HMSFROMMM(value) ((((value)+50) >= 0x100*60*60*3000) ? 0L : \
  298.                         (((((((value)+50) / 3000) % 60) << 16) & 0x00FF0000)      | \
  299.                         (((((((value)+50) / 3000) / 60) % 60) << 8) & 0x0000FF00) | \
  300.                          ((((((value)+50) / 3000) / 60) / 60)  & 0x000000FF)))
  301.  
  302. #define TMSF_TRACK(time)     (*(BYTE *)(&(time)))
  303. #define TMSF_MINUTE(time)    (*((BYTE *)(&(time))+1))
  304. #define TMSF_SECOND(time)    (*((BYTE *)(&(time))+2))
  305. #define TMSF_FRAME(time)     (*((BYTE *)(&(time))+3))
  306. #define MSF_MINUTE(time)     (*(BYTE *)(&(time)))
  307. #define MSF_SECOND(time)     (*((BYTE *)(&(time))+1))
  308. #define MSF_FRAME(time)      (*((BYTE *)(&(time))+2))
  309.  
  310. /*********************************************************************/
  311. /*                                                                   */
  312. /*  BYTE ACCESS WITH A DWORD MACROS                                  */
  313. /*                                                                   */
  314. /*********************************************************************/
  315. #define ULONG_LWLB(ul)  (*(BYTE *)((ULONG *)(&ul)))       /* Low  Word Low Byte  */
  316. #define ULONG_LWHB(ul)  (*((BYTE *)((ULONG *)(&ul))+1))   /* Low  Word High Byte */
  317. #define ULONG_HWLB(ul)  (*((BYTE *)((ULONG *)(&ul))+2))   /* High Word Low Byte  */
  318. #define ULONG_HWHB(ul)  (*((BYTE *)((ULONG *)(&ul))+3))   /* High Word High Byte */
  319. #define ULONG_LOWD(ul)  (*(USHORT *)((ULONG *)(&ul)))     /* Low  Word           */
  320. #define ULONG_HIWD(ul)  (*((USHORT *)((ULONG *)(&ul))+1)) /* High Word           */
  321.  
  322. #ifdef INCL_32
  323.  
  324. #pragma pack(1)
  325.  
  326. /*********************************************************************/
  327. /* parameters for default command messages with empty parameter lists*/
  328. /*********************************************************************/
  329. typedef struct _MCI_GENERIC_PARMS {
  330.     HWND   hwndCallback;      /* PM window handle for MCI notify message */
  331. } MCI_GENERIC_PARMS;
  332. typedef MCI_GENERIC_PARMS   *PMCI_GENERIC_PARMS;
  333.  
  334.  
  335. /*********************************************************************/
  336. /* flags for the MCI_ACQUIREDEVICE message                           */
  337. /*     0x00000X00 are reserved for MCI_ACQUIREDEVICE flags           */
  338. /*********************************************************************/
  339. #define MCI_EXCLUSIVE                       0x00000100L
  340. #define MCI_EXCLUSIVE_INSTANCE              0x00000200L
  341. #define MCI_ACQUIRE_QUEUE                   0x00000400L
  342.  
  343.  
  344. /*********************************************************************/
  345. /* flags for the MCI_CAPTURE message                                 */
  346. /*     0x0000XX00 are reserved for MCI_CAPTURE flags                 */
  347. /*     MCI_CONVERT is used by MCI_GETIMAGEBUFFER, MCI_SETIMAGEBUFFER */
  348. /*                            MCI_CAPTURE, and MCI_RESTORE           */
  349. /*********************************************************************/
  350. #define MCI_CAPTURE_RECT                    0x00000100L
  351. #define MCI_CONVERT                         0x00001000L
  352.  
  353. /*********************************************************************/
  354. /* parameter structure for the MCI_CAPTURE message                   */
  355. /*********************************************************************/
  356. typedef struct _MCI_CAPTURE_PARMS {
  357.     HWND    hwndCallback;    /* PM window handle for MCI notify message  */
  358.     RECTL   rect;            /* Rectangle array specifying the area to   */
  359.                              /* be captured                              */
  360. } MCI_CAPTURE_PARMS;
  361. typedef MCI_CAPTURE_PARMS   *PMCI_CAPTURE_PARMS;
  362.  
  363.  
  364. /*********************************************************************/
  365. /* flags for MCI_CONNECTOR and MCI_CONNECTION messages               */
  366. /*********************************************************************/
  367. #define MCI_ENABLE_CONNECTOR                0x00000100L
  368. #define MCI_DISABLE_CONNECTOR               0x00000200L
  369. #define MCI_QUERY_CONNECTOR_STATUS          0x00000400L
  370. #define MCI_CONNECTOR_TYPE                  0x00000800L
  371. #define MCI_CONNECTOR_INDEX                 0x00001000L
  372. #define MCI_TO_CONNECTOR_INDEX              0x00002000L
  373. #define MCI_TO_CONNECTOR_TYPE               0x00004000L
  374. #define MCI_QUERY_CONNECTION                0x00008000L
  375. #define MCI_MAKE_CONNECTION                 0x00010000L
  376. #define MCI_BREAK_CONNECTION                0x00020000L
  377. #define MCI_ENUMERATE_CONNECTORS            0x00040000L
  378. #define MCI_QUERY_CONNECTOR_TYPE            0x00080000L
  379. #define MCI_QUERY_VALID_CONNECTION          0x00100000L
  380. #define MCI_CONNECTOR_ALIAS                 0x00200000L
  381.  
  382.  
  383. /*********************************************************************/
  384. /* Connector types                                                   */
  385. /*********************************************************************/
  386. #define MCI_MIDI_STREAM_CONNECTOR           0x00000001L
  387. #define MCI_CD_STREAM_CONNECTOR             0x00000002L
  388. #define MCI_WAVE_STREAM_CONNECTOR           0x00000003L
  389. #define MCI_AMP_STREAM_CONNECTOR            0x00000004L
  390. #define MCI_XA_STREAM_CONNECTOR             0x00000005L
  391. #define MCI_HEADPHONES_CONNECTOR            0x00000006L
  392. #define MCI_SPEAKERS_CONNECTOR              0x00000007L
  393. #define MCI_MICROPHONE_CONNECTOR            0x00000008L
  394. #define MCI_LINE_IN_CONNECTOR               0x00000009L
  395. #define MCI_LINE_OUT_CONNECTOR              0x0000000aL
  396. #define MCI_VIDEO_IN_CONNECTOR              0x0000000bL
  397. #define MCI_VIDEO_OUT_CONNECTOR             0x0000000cL
  398. #define MCI_PHONE_SET_CONNECTOR             0x0000000dL
  399. #define MCI_PHONE_LINE_CONNECTOR            0x0000000eL
  400. #define MCI_AUDIO_IN_CONNECTOR              0x0000000fL
  401. #define MCI_AUDIO_OUT_CONNECTOR             0x00000010L
  402. #define MCI_UNIVERSAL_CONNECTOR             0x00000011L
  403.  
  404. /*********************************************************************/
  405. /* parameter structure for the MCI_CONNECTION message                */
  406. /*********************************************************************/
  407. typedef struct _MCI_CONNECTION_PARMS {
  408.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  409.     ULONG   ulConnectorType; /* Connector type                          */
  410.     ULONG   ulConnectorIndex;/* Connector index                         */
  411.     PSZ     pszAlias;        /* Connection device alias                 */
  412.     USHORT  usToDeviceID;    /* Connected to device ID                  */
  413.     USHORT  usReserved0;     /* Reserved field                          */
  414.     ULONG   ulReserved1;     /* Reserved field                          */
  415.     ULONG   ulReserved2;     /* Reserved field                          */
  416. } MCI_CONNECTION_PARMS;
  417. typedef MCI_CONNECTION_PARMS   *PMCI_CONNECTION_PARMS;
  418.  
  419. /*********************************************************************/
  420. /* parameter structure for the MCI_CONNECTOR message                 */
  421. /*********************************************************************/
  422. typedef struct _MCI_CONNECTOR_PARMS {
  423.     HWND   hwndCallback;     /* PM window handle for MCI notify message    */
  424.     ULONG  ulReturn;         /* Return information                         */
  425.     ULONG  ulConnectorType;  /* If specified, ulConnectorIndex is relative */
  426.                              /* to the specified connector type            */
  427.     ULONG  ulConnectorIndex; /* Connector number                           */
  428. } MCI_CONNECTOR_PARMS;
  429. typedef MCI_CONNECTOR_PARMS   *PMCI_CONNECTOR_PARMS;
  430.  
  431. /*********************************************************************/
  432. /* parameter structure for the MCI_CONNECTORINFO message             */
  433. /*********************************************************************/
  434. typedef struct _MCI_CONNECTORINFO_PARMS {
  435.     HWND   hwndCallback;      /* PM window handle for MCI notify message    */
  436.     ULONG  ulReturn;          /* Return information                         */
  437.     ULONG  ulDeviceTypeID;    /* MCI device type                            */
  438.     ULONG  ulConnectorType;   /* If specified, ulConnectorIndex is relative */
  439.                               /* to the specified connector type            */
  440.     ULONG  ulConnectorIndex;  /* Connector number                           */
  441.     ULONG  ulToConnectorType; /* Connector type to test if                  */
  442.                               /* MCI_QUERY_VALID_CONNECTION is specified    */
  443. } MCI_CONNECTORINFO_PARMS;
  444. typedef MCI_CONNECTORINFO_PARMS   *PMCI_CONNECTORINFO_PARMS;
  445.  
  446. /*********************************************************************/
  447. /* flags for the MCI_CUE message                                     */
  448. /*     0x00000x00 are reserved for MCI_CUE flags                     */
  449. /*********************************************************************/
  450. #define MCI_CUE_INPUT                       0x00000100L
  451. #define MCI_CUE_OUTPUT                      0x00000200L
  452.  
  453.     /*************************************************/
  454.     /* Additional flags for Wave Audio for MCI_CUE   */
  455.     /*************************************************/
  456. #define MCI_WAVE_INPUT                      0x00001000L
  457. #define MCI_WAVE_OUTPUT                     0x00002000L
  458.  
  459.  
  460. /*********************************************************************/
  461. /* parameter structure for the MCI_DEFAULT_CONNECTION message        */
  462. /*********************************************************************/
  463. typedef struct _MCI_DEFAULT_CONNECTION_PARMS  {
  464.     HWND  hwndCallback;       /* PM window handle for MCI notify message    */
  465.     PSZ   pszDevice;          /* Device name                                */
  466.     ULONG ulConnectorType;    /* If specified, ulConnectorIndex is relative */
  467.                               /* to the specified connector type            */
  468.     ULONG ulConnectorIndex;   /* Connector number                           */
  469.     PSZ   pszToDevice;        /* Return device name to which the connection */
  470.                               /* exists                                     */
  471.     ULONG ulToConnectorType;  /* Connector type                             */
  472.     ULONG ulToConnectorIndex; /* Connector number                           */
  473. } MCI_DEFAULT_CONNECTION_PARMS;
  474. typedef MCI_DEFAULT_CONNECTION_PARMS    *PMCI_DEFAULT_CONNECTION_PARMS;
  475.  
  476. /*********************************************************************/
  477. /* parameter structure for the MCI_DEVICESETTINGS message            */
  478. /*********************************************************************/
  479. typedef struct _MCI_DEVICESETTINGS_PARMS {
  480.     HWND    hwndCallback;    /* PM window handle for MCI notify message    */
  481.     HWND    hwndNotebook;    /* Hwhd to notebook window                    */
  482.     USHORT  usDeviceType;    /* Device type                                */
  483.     PSZ     pszDeviceName;   /* Device name                                */
  484. } MCI_DEVICESETTINGS_PARMS;
  485. typedef MCI_DEVICESETTINGS_PARMS   *PMCI_DEVICESETTINGS_PARMS;
  486.  
  487. /**********************************************************************/
  488. /* parameter structure for the MCI_CUT / COPY / DELETE / UNDO / etc...*/
  489. /**********************************************************************/
  490. typedef struct _MCI_EDIT_PARMS {
  491.     HWND    hwndCallback;    /* PM window handle for MCI notify message     */
  492.     ULONG   ulStructLen;     /* Length of the Structure                     */
  493.     ULONG   ulFrom;          /* Beginning Point of Range                    */
  494.     ULONG   ulTo;            /* ending point of range                       */
  495.     PVOID   pBuff;           /* user buffer                                 */
  496.     ULONG   ulBufLen;        /* length of user buffer                       */
  497.     PVOID   pHeader;         /* header which describes the buffer           */
  498. } MCI_EDIT_PARMS;
  499. typedef MCI_EDIT_PARMS   *PMCI_EDIT_PARMS;
  500.  
  501. /*********************************************************************/
  502. /* flags and parameter structure for the MCI_ESCAPE message          */
  503. /*     0x00000X00 are reserved for MCI_ESCAPE flags                  */
  504. /*********************************************************************/
  505. #define MCI_ESCAPE_STRING                   0x00000100L
  506.  
  507. typedef struct _MCI_ESCAPE_PARMS {
  508.     HWND    hwndCallback;    /* PM window handle for MCI notify message    */
  509.     PSZ     pszCommand;      /* Command to send to the device              */
  510. } MCI_ESCAPE_PARMS;
  511. typedef MCI_ESCAPE_PARMS   *PMCI_ESCAPE_PARMS;
  512.  
  513. /*********************************************************************/
  514. /* flags for the MCI_FREEZE message                                  */
  515. /*     0x0000XX00 are reserved for MCI_FREEZE flags                  */
  516. /*********************************************************************/
  517. #define MCI_OVLY_FREEZE_RECT                0x00000100L
  518. #define MCI_OVLY_FREEZE_RECT_OUTSIDE        0x00000200L
  519.  
  520. /*********************************************************************/
  521. /* flags for the MCI_GETDEVCAPS message                              */
  522. /*     0x00XXXX00 are reserved for MCI_GETDEVCAPS flags              */
  523. /*********************************************************************/
  524. #define MCI_GETDEVCAPS_MESSAGE              0x00000100L
  525. #define MCI_GETDEVCAPS_ITEM                 0x00000200L
  526. #define MCI_GETDEVCAPS_EXTENDED             0x00000400L
  527.  
  528.    /*************************************************/
  529.    /* General MCI_GETDEVCAPS item values            */
  530.    /*************************************************/
  531. #define MCI_GETDEVCAPS_CAN_EJECT            0x00000001L
  532. #define MCI_GETDEVCAPS_CAN_LOCKEJECT        0x00000002L
  533. #define MCI_GETDEVCAPS_CAN_PLAY             0x00000003L
  534. #define MCI_GETDEVCAPS_CAN_PROCESS_INTERNAL 0x00000004L
  535. #define MCI_GETDEVCAPS_CAN_RECORD           0x00000005L
  536. #define MCI_GETDEVCAPS_CAN_RECORD_INSERT    0x00000006L
  537. #define MCI_GETDEVCAPS_CAN_SAVE             0x00000007L
  538. #define MCI_GETDEVCAPS_CAN_SETVOLUME        0x00000008L
  539. #define MCI_GETDEVCAPS_CAN_STREAM           0x00000009L
  540. #define MCI_GETDEVCAPS_DEVICE_TYPE          0x0000000AL
  541. #define MCI_GETDEVCAPS_HAS_AUDIO            0x0000000BL
  542. #define MCI_GETDEVCAPS_HAS_VIDEO            0x0000000CL
  543. #define MCI_GETDEVCAPS_PREROLL_TIME         0x0000000DL
  544. #define MCI_GETDEVCAPS_PREROLL_TYPE         0x0000000EL
  545. #define MCI_GETDEVCAPS_USES_FILES           0x0000000FL
  546. #define MCI_GETDEVCAPS_HAS_IMAGE            0x00000010L
  547. #define MCI_GETDEVCAPS_WAVE_FORMAT          0x00000011L
  548.  
  549.     /***********************************************/
  550.     /* return ID's for videodisc MCI_GETDEVCAPS    */
  551.     /***********************************************/
  552. #define MCI_VD_MEDIA_CLV                    0x00000001L
  553. #define MCI_VD_MEDIA_CAV                    0x00000002L
  554. #define MCI_VD_MEDIA_OTHER                  0x00000003L
  555.  
  556.     /*************************************************/
  557.     /* MCI_GETDEVCAPS item values for video devices  */
  558.     /*************************************************/
  559. #define MCI_VID_GETDEVCAPS_CAN_STRETCH       MCI_VID_ITEM_BASE
  560. #define MCI_VID_GETDEVCAPS_CAN_DISTORT       (MCI_VID_ITEM_BASE+1)
  561. #define MCI_VID_GETDEVCAPS_VIDEO_X_EXTENT    (MCI_VID_ITEM_BASE+2)
  562. #define MCI_VID_GETDEVCAPS_VIDEO_Y_EXTENT    (MCI_VID_ITEM_BASE+3)
  563. #define MCI_VID_GETDEVCAPS_IMAGE_X_EXTENT    (MCI_VID_ITEM_BASE+4)
  564. #define MCI_VID_GETDEVCAPS_IMAGE_Y_EXTENT    (MCI_VID_ITEM_BASE+5)
  565. #define MCI_VID_GETDEVCAPS_MAX_WINDOWS       (MCI_VID_ITEM_BASE+6)
  566. #define MCI_VID_GETDEVCAPS_CAN_FREEZE        (MCI_VID_ITEM_BASE+7)
  567. #define MCI_VID_GETDEVCAPS_OVERLAY_GRAPHICS  (MCI_VID_ITEM_BASE+8)
  568.  
  569. #define MCI_VID_GETDEVCAPS_CAN_REVERSE       (MCI_VID_ITEM_BASE+9)
  570. #define MCI_VID_GETDEVCAPS_FAST_RATE         (MCI_VID_ITEM_BASE+10)
  571. #define MCI_VID_GETDEVCAPS_SLOW_RATE         (MCI_VID_ITEM_BASE+11)
  572. #define MCI_VID_GETDEVCAPS_NORMAL_RATE       (MCI_VID_ITEM_BASE+12)
  573. #define MCI_VID_GETDEVCAPS_MINIMUM_RATE      (MCI_VID_ITEM_BASE+13)
  574. #define MCI_VID_GETDEVCAPS_MAXIMUM_RATE      (MCI_VID_ITEM_BASE+14)
  575.  
  576.     /*************************************************/
  577.     /* MCI_GETDEVCAPS flag values for Videodisc      */
  578.     /*************************************************/
  579. #define MCI_VD_GETDEVCAPS_CLV               0x00000400L
  580. #define MCI_VD_GETDEVCAPS_CAV               0x00000800L
  581.  
  582.     /*************************************************/
  583.     /* MCI_GETDEVCAPS item values for Videodisc      */
  584.     /*************************************************/
  585.  
  586. #define MCI_VD_GETDEVCAPS_CAN_REVERSE       MCI_VID_GETDEVCAPS_CAN_REVERSE
  587. #define MCI_VD_GETDEVCAPS_FAST_RATE         MCI_VID_GETDEVCAPS_FAST_RATE
  588. #define MCI_VD_GETDEVCAPS_SLOW_RATE         MCI_VID_GETDEVCAPS_SLOW_RATE
  589. #define MCI_VD_GETDEVCAPS_NORMAL_RATE       MCI_VID_GETDEVCAPS_NORMAL_RATE
  590. #define MCI_VD_GETDEVCAPS_MINIMUM_RATE      MCI_VID_GETDEVCAPS_MINIMUM_RATE
  591. #define MCI_VD_GETDEVCAPS_MAXIMUM_RATE      MCI_VID_GETDEVCAPS_MAXIMUM_RATE
  592.  
  593.     /************************************************/
  594.     /* MCI_GETDEVCAPS item values for Digital Video */
  595.     /************************************************/
  596. #define MCI_DGV_GETDEVCAPS_CAN_REVERSE      MCI_VID_GETDEVCAPS_CAN_REVERSE
  597. #define MCI_DGV_GETDEVCAPS_CAN_STRETCH      MCI_VID_GETDEVCAPS_CAN_STRETCH
  598. #define MCI_DGV_GETDEVCAPS_CAN_DISTORT      MCI_VID_GETDEVCAPS_CAN_DISTORT
  599. #define MCI_DGV_GETDEVCAPS_FAST_RATE        MCI_VID_GETDEVCAPS_FAST_RATE
  600. #define MCI_DGV_GETDEVCAPS_SLOW_RATE        MCI_VID_GETDEVCAPS_SLOW_RATE
  601. #define MCI_DGV_GETDEVCAPS_NORMAL_RATE      MCI_VID_GETDEVCAPS_NORMAL_RATE
  602. #define MCI_DGV_GETDEVCAPS_MINIMUM_RATE     MCI_VID_GETDEVCAPS_MINIMUM_RATE
  603. #define MCI_DGV_GETDEVCAPS_MAXIMUM_RATE     MCI_VID_GETDEVCAPS_MAXIMUM_RATE
  604. #define MCI_DGV_GETDEVCAPS_VIDEO_X_EXTENT   MCI_VID_GETDEVCAPS_VIDEO_X_EXTENT
  605. #define MCI_DGV_GETDEVCAPS_VIDEO_Y_EXTENT   MCI_VID_GETDEVCAPS_VIDEO_Y_EXTENT
  606. #define MCI_DGV_GETDEVCAPS_IMAGE_X_EXTENT   MCI_VID_GETDEVCAPS_IMAGE_X_EXTENT
  607. #define MCI_DGV_GETDEVCAPS_IMAGE_Y_EXTENT   MCI_VID_GETDEVCAPS_IMAGE_Y_EXTENT
  608. #define MCI_DGV_GETDEVCAPS_MAX_WINDOWS      MCI_VID_GETDEVCAPS_MAX_WINDOWS
  609. #define MCI_DGV_GETDEVCAPS_OVERLAY_GRAPHICS MCI_VID_GETDEVCAPS_OVERLAY_GRAPHICS
  610.  
  611.    /*************************************************/
  612.    /* MCI_GETDEVCAPS item values for Video Overlay  */
  613.    /*************************************************/
  614. #define MCI_OVLY_GETDEVCAPS_CAN_STRETCH     MCI_VID_GETDEVCAPS_CAN_STRETCH
  615. #define MCI_OVLY_GETDEVCAPS_CAN_DISTORT     MCI_VID_GETDEVCAPS_CAN_DISTORT
  616. #define MCI_OVLY_GETDEVCAPS_VIDEO_X_EXTENT  MCI_VID_GETDEVCAPS_VIDEO_X_EXTENT
  617. #define MCI_OVLY_GETDEVCAPS_VIDEO_Y_EXTENT  MCI_VID_GETDEVCAPS_VIDEO_Y_EXTENT
  618. #define MCI_OVLY_GETDEVCAPS_IMAGE_X_EXTENT  MCI_VID_GETDEVCAPS_IMAGE_X_EXTENT
  619. #define MCI_OVLY_GETDEVCAPS_IMAGE_Y_EXTENT  MCI_VID_GETDEVCAPS_IMAGE_Y_EXTENT
  620. #define MCI_OVLY_GETDEVCAPS_MAX_WINDOWS     MCI_VID_GETDEVCAPS_MAX_WINDOWS
  621. #define MCI_OVLY_GETDEVCAPS_CAN_FREEZE      MCI_VID_GETDEVCAPS_CAN_FREEZE
  622. #define MCI_OVLY_GETDEVCAPS_OVERLAY_GRAPHICS MCI_VID_GETDEVCAPS_OVERLAY_GRAPHICS
  623.  
  624.  
  625. #define MCI_PREROLL_NOTIFIED                0x00000001L
  626. #define MCI_PREROLL_DETERMINISTIC           0x00000002L
  627. #define MCI_PREROLL_NONE                    0x00000003L
  628.  
  629. /*********************************************************************/
  630. /* parameter structure for the MCI_GETDEVCAPS message                */
  631. /*********************************************************************/
  632. typedef struct _MCI_GETDEVCAPS_PARMS {
  633.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  634.     ULONG   ulReturn;        /* Return field                            */
  635.     ULONG   ulItem;          /* Item field for GETDEVCAPS item to query */
  636.     USHORT  usMessage;       /* Field to hold MCI message to query      */
  637.     USHORT  usReserved0;     /* Reserved field                          */
  638. } MCI_GETDEVCAPS_PARMS;
  639. typedef MCI_GETDEVCAPS_PARMS   * PMCI_GETDEVCAPS_PARMS;
  640.  
  641. /*********************************************************************/
  642. /* parameter structure for the MCI_WAVE_GETDEVCAPS                   */
  643. /*********************************************************************/
  644. typedef struct _MCI_WAVE_GETDEVCAPS_PARMS {
  645.     HWND    hwndCallback;     /* PM window handle for MCI notify message */
  646.     ULONG   ulReturn;         /* Return field                            */
  647.     ULONG   ulItem;           /* Item field for GETDEVCAPS item to query */
  648.     USHORT  usMessage;        /* Field to hold MCI message to query      */
  649.     USHORT  usReserved0;      /* Reserved field                          */
  650.     ULONG   ulLength;         /* Length of structure in ULONGS           */
  651.     ULONG   ulBitsPerSample;  /* Number of Bits per Sample               */
  652.     ULONG   ulFormatTag;      /* Format Tag                              */
  653.     ULONG   ulSamplesPerSec;  /* Sampling Rate                           */
  654.     ULONG   ulChannels;       /* Number of channels                      */
  655.     ULONG   ulFormatMode;     /* Either MCI_RECORD or MCI_PLAY           */
  656. } MCI_WAVE_GETDEVCAPS_PARMS;
  657. typedef MCI_WAVE_GETDEVCAPS_PARMS   * PMCI_WAVE_GETDEVCAPS_PARMS;
  658.  
  659. /*********************************************************************/
  660. /* flag values for the MCI_GETIMAGEBUFFER and MCI_SETIMAGEBUFFER msg */
  661. /*     0x0000XX00 are reserved for MCI_GETIMAGEBUFFER and            */
  662. /*       MCI_SETIMAGEBUFFER Flags                                    */
  663. /*     MCI_CONVERT is defined by MCI_CAPTURE message as 0x00001000L  */
  664. /*********************************************************************/
  665. #define MCI_USE_HW_BUFFER                   0x00000400L
  666. #define MCI_GET_HW_BUFFER_PTR               0x00000800L
  667.  
  668.    /***************************************************/
  669.    /* parm structure for MCI_GETIMAGEBUFFER and       */
  670.    /*                    MCI_SETIMAGEBUFFER messages  */
  671.    /***************************************************/
  672. typedef  struct _MCI_IMAGE_PARMS {
  673.     HWND    hwndCallback;       /* PM window handle for MCI notify message */
  674.     ULONG   ulPelFormat;        /* Format of the image data returned       */
  675.     USHORT  usBitCount;         /* Number of bitsimage data returned       */
  676.     USHORT  usReserved0;        /* Reserved field                          */
  677.     ULONG   ulImageCompression; /*                                         */
  678.     RECTL   rect;               /* Image area to get/set                   */
  679.     PVOID   pPelBuffer;         /* Pel data buffer                         */
  680.     ULONG   ulPelBufferHeight;  /* Number of rows in buffer                */
  681.     ULONG   ulPelBufferWidth;   /* Pels per row in buffer                  */
  682.     ULONG   ulBufLen;           /* Pel data buffer length in bytes         */
  683.  
  684. } MCI_IMAGE_PARMS;
  685. typedef MCI_IMAGE_PARMS   *PMCI_IMAGE_PARMS;
  686.  
  687. /*********************************************************************/
  688. /* flags for the MCI_GETIMAGEPALETTE message                         */
  689. /*     0x0000XX00 are reserved for MCI_GETIMAGEPALETTE flags         */
  690. /*********************************************************************/
  691. #define MCI_FIND_BEST_REGISTERED            0x00000100L
  692. #define MCI_QUERY_REGISTERED_MAP            0x00000200L
  693. #define MCI_QUERY_REGISTERED_MAP_SIZE       0x00000400L
  694.  
  695.  
  696.    /***************************************************/
  697.    /* parameter structure for MCI_GETIMAGEPALETTE and */
  698.    /*    MCI_SETIMAGEPALETTE messages                 */
  699.    /***************************************************/
  700. typedef  struct _MCI_PALETTE_PARMS {
  701.     HWND    hwndCallback;    /* PM window handle for MCI notify message   */
  702.     USHORT  usRegisteredMap; /* Id of the palette from the registed color */
  703.                              /* map                                       */
  704.     USHORT  usReserved0;     /* Reserved field                            */
  705.     ULONG   ulPalEntries;    /* size of the palette returned              */
  706.     PVOID   pPalette;        /* pointer to the palette                    */
  707. } MCI_PALETTE_PARMS;
  708. typedef MCI_PALETTE_PARMS   *PMCI_PALETTE_PARMS;
  709.  
  710.  
  711. /*********************************************************************/
  712. /* Parameter structure for the MCI_GETTOC message                    */
  713. /*********************************************************************/
  714. typedef struct _MCI_TOC_REC {
  715.     BYTE      TrackNum;      /* Returned Track Number                          */
  716.     ULONG     ulStartAddr;   /* Starting address of the track in MMTIME format */
  717.     ULONG     ulEndAddr;     /* Ending address of the track in MMTIME format   */
  718.     BYTE      Control;       /* Track Control information                      */
  719.     USHORT    usCountry;     /* Country                                        */
  720.     ULONG     ulOwner;       /* Owner                                          */
  721.     ULONG     ulSerialNum;   /* Serial Number                                  */
  722. } MCI_TOC_REC;
  723. typedef MCI_TOC_REC   *PTOCREC;
  724.  
  725. typedef struct _MCI_TOC_PARMS {
  726.     HWND      hwndCallback;  /* PM window handle for MCI notify message    */
  727.     PTOCREC   pBuf;          /* Pointer to array MCI_TOC_REC structures to */
  728.                              /* be filled in by the mci device             */
  729.     ULONG     ulBufSize;     /* Size of the array                          */
  730. } MCI_TOC_PARMS;
  731. typedef MCI_TOC_PARMS   * PMCI_TOC_PARMS;
  732.  
  733. /*********************************************************************/
  734. /* parameters for the MCI_GROUP message                              */
  735. /*     0x00XXXX00 are reserved for MCI_GROUP flags                   */
  736. /*********************************************************************/
  737. #define MCI_SYNCHRONIZE                     0x00000100L
  738. #define MCI_NOPIECEMEAL                     0x00000200L
  739. #define MCI_GROUP_MAKE                      0x00000400L
  740. #define MCI_GROUP_DELETE                    0x00000800L
  741. #define MCI_GROUP_ALIAS                     0x00001000L
  742. #define MCI_GROUP_MASTER                    0x00002000L
  743.  
  744. typedef struct _MCI_GROUP_PARMS {
  745.     HWND    hwndCallback;    /* PM window handle for MCI notify message.    */
  746.     USHORT  usGroupID;       /* GroupID                                     */
  747.     USHORT  usReserved0;     /* RESERVED                                    */
  748.     ULONG   ulStructLength;  /* Length of Structure in ULONGS.              */
  749.     USHORT  usMasterID;      /* ID of Master device in Synchrounous groups. */
  750.     USHORT  usReserved1;     /* RESERVED                                    */
  751.     PSZ     pszGroupAlias;   /* Pointer to Alias Name.                      */
  752.     ULONG   ulNumDevices;    /* Number of Devices in group.                 */
  753.     PULONG  paulDeviceID;    /* Array of Device ids in the group.           */
  754. } MCI_GROUP_PARMS;
  755. typedef MCI_GROUP_PARMS *PMCI_GROUP_PARMS;
  756.  
  757.  
  758. /*********************************************************************/
  759. /* flags for the MCI_INFO message                                    */
  760. /*     0x00000X00 are reserved for MCI_INFO flags                    */
  761. /*********************************************************************/
  762. #define MCI_INFO_PRODUCT                    0x00000100L
  763. #define MCI_INFO_FILE                       0x00000200L
  764.  
  765.     /************************************************/
  766.     /* CD Audio                MCI_INFO             */
  767.     /************************************************/
  768. #define MCI_CD_INFO_ID                      0x00010000L
  769. #define MCI_CD_INFO_UPC                     0x00020000L
  770.  
  771.     /************************************************/
  772.     /* Videodisc               MCI_INFO             */
  773.     /************************************************/
  774. #define MCI_VD_INFO_LABEL                   0x00001000L
  775.  
  776.     /************************************************/
  777.     /* Digital Video           MCI_INFO             */
  778.     /************************************************/
  779. #define MCI_DGV_INFO_VIDEO_FILE             0x00001000L
  780. #define MCI_DGV_INFO_IMAGE_FILE             0x00002000L
  781. #define MCI_DGV_INFO_TEXT                   0x00010000L
  782.  
  783.     /************************************************/
  784.     /* Video Overlay           MCI_INFO             */
  785.     /************************************************/
  786. #define MCI_OVLY_INFO_TEXT                  0x00010000L
  787.  
  788.  
  789. typedef struct _MCI_INFO_PARMS {
  790.     HWND      hwndCallback;  /* PM window handle for MCI notify message */
  791.     PSZ       pszReturn;     /* Pointer to return buffer                */
  792.     ULONG     ulRetSize;     /* Return buffer size                      */
  793. } MCI_INFO_PARMS;
  794. typedef MCI_INFO_PARMS   *PMCI_INFO_PARMS;
  795.  
  796. /*********************************************************************/
  797. /* parameters and flags for the MCI_LOAD message                     */
  798. /*     0x00000X00 are reserved for MCI_LOAD flags                    */
  799. /*********************************************************************/
  800. typedef struct _MCI_LOAD_PARMS {
  801.     HWND   hwndCallback;     /* PM window handle for MCI notify message */
  802.     PSZ    pszElementName;   /* File name to loads                      */
  803. } MCI_LOAD_PARMS;
  804. typedef MCI_LOAD_PARMS   *PMCI_LOAD_PARMS;
  805.  
  806. /*********************************************************************/
  807. /* parameters and flags for the MCI_MASTERAUDIO                      */
  808. /*     0x000XXX00 are reserved for MCI_MASTERAUDIO  flags            */
  809. /*********************************************************************/
  810. #define MCI_ON                              0x00000100L
  811. #define MCI_OFF                             0x00000200L
  812. #define MCI_HEADPHONES                      0x00000400L
  813. #define MCI_SPEAKERS                        0x00000800L
  814. #define MCI_MASTERVOL                       0x00001000L
  815. #define MCI_SAVESETTING                     0x00002000L
  816. #define MCI_QUERYSAVEDSETTING               0x00004000L
  817. #define MCI_QUERYCURRENTSETTING             0x00008000L
  818.  
  819.  
  820. typedef struct _MCI_MASTERAUDIO_PARMS {
  821.     HWND    hwndDummyCallback; /* Notify not allowed for this message     */
  822.     ULONG   ulReturn;          /* Return field for query information      */
  823.     ULONG   ulMasterVolume;    /* Master volume field                     */
  824. } MCI_MASTERAUDIO_PARMS;
  825. typedef MCI_MASTERAUDIO_PARMS   *PMCI_MASTERAUDIO_PARMS;
  826.  
  827. /*********************************************************************/
  828. /* parameters and flags for the MCI_OPEN message                     */
  829. /*     0x0000XX00 are reserved for MCI_OPEN flags                    */
  830. /*********************************************************************/
  831. #define MCI_OPEN_ELEMENT                    0x00000100L
  832. #define MCI_OPEN_ALIAS                      0x00000200L
  833. #define MCI_OPEN_ELEMENT_ID                 0x00000400L
  834. #define MCI_OPEN_PLAYLIST                   0x00000800L
  835. #define MCI_OPEN_TYPE_ID                    0x00001000L
  836. #define MCI_OPEN_SHAREABLE                  0x00002000L
  837. #define MCI_OPEN_MMIO                       0x00004000L
  838. #define MCI_READONLY                        0x00008000L
  839.  
  840.     /***************************************************/
  841.     /* parameters and flags for the MCI_OPEN message   */
  842.     /* Digital Video, Video Overlay specific           */
  843.     /***************************************************/
  844. #define MCI_VID_OPEN_PARENT                 0x01000000L
  845. #define MCI_DGV_OPEN_PARENT                 MCI_VID_OPEN_PARENT
  846. #define MCI_OVLY_OPEN_PARENT                MCI_VID_OPEN_PARENT
  847.  
  848. typedef struct _MCI_OPEN_PARMS {
  849.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  850.     USHORT  usDeviceID;      /* Device ID returned to user              */
  851.     USHORT  usReserved0;     /* Reserved                                */
  852.     PSZ     pszDeviceType;   /* Device name from SYSTEM.INI             */
  853.     PSZ     pszElementName;  /* Typically a file name or NULL           */
  854.     PSZ     pszAlias;        /* Optional device alias                   */
  855. } MCI_OPEN_PARMS;
  856. typedef MCI_OPEN_PARMS   *PMCI_OPEN_PARMS;
  857.  
  858.     /**********************************************************/
  859.     /* parameters for the AMP MCI_OPEN message                */
  860.     /**********************************************************/
  861. typedef struct _MCI_AMP_OPEN_PARMS {
  862.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  863.     USHORT  usDeviceID;      /* Device ID returned to user              */
  864.     USHORT  usReserved0;     /* Reserved field                          */
  865.     PSZ     pszDeviceType;   /* Device name from SYSTEM.INI             */
  866.     PSZ     pszElementName;  /* Typically a file name or NULL           */
  867.     PSZ     pszAlias;        /* Optional device alias                   */
  868.     PVOID   pDevDataPtr;     /* Pointer to device data                  */
  869. } MCI_AMP_OPEN_PARMS;
  870. typedef MCI_AMP_OPEN_PARMS   *PMCI_AMP_OPEN_PARMS;
  871.  
  872.     /**********************************************************/
  873.     /* parameters for MCI_OPEN message for video devices      */
  874.     /**********************************************************/
  875.  
  876. typedef  struct _MCI_VID_OPEN_PARMS{
  877.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  878.     USHORT  usDeviceID;      /* Device ID returned to user              */
  879.     USHORT  usReserved0;     /* Reserved field                          */
  880.     PSZ     pszDeviceType;   /* Device name from SYSTEM.INI             */
  881.     PSZ     pszElementName;  /* Typically a file name or NULL           */
  882.     PSZ     pszAlias;        /* Optional device alias                   */
  883.     HWND    hwndParent;      /* Parent window handle                    */
  884. } MCI_VID_OPEN_PARMS;
  885.  
  886. typedef MCI_VID_OPEN_PARMS   MCI_DGV_OPEN_PARMS;
  887. typedef MCI_DGV_OPEN_PARMS   *PMCI_DGV_OPEN_PARMS;
  888.  
  889. typedef MCI_VID_OPEN_PARMS    MCI_OVLY_OPEN_PARMS;
  890. typedef MCI_OVLY_OPEN_PARMS   *PMCI_OVLY_OPEN_PARMS;
  891.  
  892.     /***************************************************/
  893.     /* MCI_PLAY flag values for videodisc              */
  894.     /***************************************************/
  895. #define MCI_VD_PLAY_REVERSE                 0x00001000L
  896. #define MCI_VD_PLAY_FAST                    0x00002000L
  897. #define MCI_VD_PLAY_SPEED                   0x00004000L
  898. #define MCI_VD_PLAY_SCAN                    0x00008000L
  899. #define MCI_VD_PLAY_SLOW                    0x00010000L
  900.  
  901.     /***************************************************/
  902.     /* MCI_PLAY flag values for digital video          */
  903.     /***************************************************/
  904. #define MCI_DGV_PLAY_REVERSE                0x00001000L
  905. #define MCI_DGV_PLAY_FAST                   0x00002000L
  906. #define MCI_DGV_PLAY_SPEED                  0x00004000L
  907. #define MCI_DGV_PLAY_SCAN                   0x00008000L
  908. #define MCI_DGV_PLAY_SLOW                   0x00010000L
  909. #define MCI_DGV_PLAY_REPEAT                 0x00020000L
  910.  
  911. typedef struct _MCI_PLAY_PARMS {
  912.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  913.     ULONG   ulFrom;          /* Play from this position                 */
  914.     ULONG   ulTo;            /* Play to this position                   */
  915. } MCI_PLAY_PARMS;
  916. typedef MCI_PLAY_PARMS   *PMCI_PLAY_PARMS;
  917.  
  918. typedef struct _MCI_VD_PLAY_PARMS {
  919.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  920.     ULONG   ulFrom;          /* Play from this position                 */
  921.     ULONG   ulTo;            /* Play to this position                   */
  922.     ULONG   ulFactor;        /* Play at this speed factor               */
  923. } MCI_VD_PLAY_PARMS;
  924. typedef MCI_VD_PLAY_PARMS   *PMCI_VD_PLAY_PARMS;
  925.  
  926. typedef  struct _MCI_DGV_PLAY_PARMS {
  927.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  928.     ULONG   ulFrom;          /* Play from this position                 */
  929.     ULONG   ulTo;            /* Play to this position                   */
  930.     ULONG   ulSpeed;         /* Specifies the play rate in frames per second */
  931. } MCI_DGV_PLAY_PARMS;
  932. typedef MCI_DGV_PLAY_PARMS   *PMCI_DGV_PLAY_PARMS;
  933.  
  934. /*********************************************************************/
  935. /* parameters for the MCI_PUT  message                               */
  936. /*     0x00000X00 are reserved for MCI_PUT  flags                    */
  937. /*********************************************************************/
  938. #define MCI_VID_PUT_RECT                    0x00000100L
  939. #define MCI_VID_PUT_DESTINATION             0x00000200L
  940. #define MCI_VID_PUT_SOURCE                  0x00000400L
  941. #define MCI_VID_PUT_WINDOW_MOVE             0x00000800L
  942. #define MCI_VID_PUT_WINDOW_SIZE             0x00001000L
  943.  
  944. #define MCI_DGV_PUT_RECT                    MCI_VID_PUT_RECT
  945. #define MCI_DGV_PUT_DESTINATION             MCI_VID_PUT_DESTINATION
  946. #define MCI_DGV_PUT_SOURCE                  MCI_VID_PUT_SOURCE
  947. #define MCI_DGV_PUT_WINDOW_MOVE             MCI_VID_PUT_WINDOW_MOVE
  948. #define MCI_DGV_PUT_WINDOW_SIZE             MCI_VID_PUT_WINDOW_SIZE
  949.  
  950. #define MCI_OVLY_PUT_RECT                   MCI_VID_PUT_RECT
  951. #define MCI_OVLY_PUT_DESTINATION            MCI_VID_PUT_DESTINATION
  952. #define MCI_OVLY_PUT_SOURCE                 MCI_VID_PUT_SOURCE
  953. #define MCI_OVLY_PUT_WINDOW_MOVE            MCI_VID_PUT_WINDOW_MOVE
  954. #define MCI_OVLY_PUT_WINDOW_SIZE            MCI_VID_PUT_WINDOW_SIZE
  955.  
  956.     /***************************************************/
  957.     /* Rectangle parameters for MCI_PUT, MCI_WHERE,    */
  958.     /* MCI_FREEZE, and MCI_UNFREEZE                    */
  959.     /***************************************************/
  960.  
  961. typedef  struct _MCI_VID_RECT_PARMS {
  962.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  963.     RECTL   rc;              /* rectangle array specifying the offset   */
  964.                              /* and size of a rectangle                 */
  965. } MCI_VID_RECT_PARMS;
  966.  
  967. typedef MCI_VID_RECT_PARMS   MCI_DGV_RECT_PARMS;
  968. typedef MCI_DGV_RECT_PARMS   *PMCI_DGV_RECT_PARMS;
  969.  
  970. typedef MCI_VID_RECT_PARMS   MCI_OVLY_RECT_PARMS;
  971. typedef MCI_OVLY_RECT_PARMS  *PMCI_OVLY_RECT_PARMS;
  972.  
  973. /*********************************************************************/
  974. /* parameters for the MCI_RECORD message                             */
  975. /*     0x00000X00 are reserved for MCI_RECORD flags                  */
  976. /*********************************************************************/
  977. #define MCI_RECORD_INSERT                   0x00000100L
  978. #define MCI_RECORD_OVERWRITE                0x00000200L
  979.  
  980. #define MCI_DGV_RECORD_RECT                 0x00000400L
  981.  
  982. typedef struct _MCI_RECORD_PARMS {
  983.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  984.     ULONG   ulFrom;          /* Record from position                    */
  985.     ULONG   ulTo;            /* Record to position                      */
  986. } MCI_RECORD_PARMS;
  987. typedef MCI_RECORD_PARMS   *PMCI_RECORD_PARMS;
  988.  
  989. /*********************************************************************/
  990. /* parameters for the MCI_RELEASEDEVICE message                      */
  991. /*     0xXXXXXX00 are reserved for MCI_RELEASEDEVICE message         */
  992. /*********************************************************************/
  993. #define MCI_RETURN_RESOURCE                 0x00000100L
  994.  
  995. /*********************************************************************/
  996. /* parameters for the MCI_RESTORE message                            */
  997. /*     0x0000XX00 are reserved for MCI_RESTORE flags                 */
  998. /*     MCI_CONVERT is defined by MCI_CAPTURE message as 0x00001000L  */
  999. /*********************************************************************/
  1000. #define MCI_RESTORE_SRC_RECT                0x00000100L
  1001. #define MCI_RESTORE_DEST_RECT               0x00000200L
  1002.  
  1003. typedef struct _MCI_RESTORE_PARMS {
  1004.     HWND    hwndCallback;    /* PM window handle for MCI notify message     */
  1005.     RECTL   SrcRect;         /* Rectangle array specifying the source       */
  1006.                              /* area to be restored                                 */
  1007.     RECTL   DestRect;        /* Rectangle array specifying the destination  */
  1008.                              /* area to be restored                         */
  1009. } MCI_RESTORE_PARMS;
  1010. typedef MCI_RESTORE_PARMS   *PMCI_RESTORE_PARMS;
  1011.  
  1012. /*********************************************************************/
  1013. /* parameters for the MCI_SAVE  message                              */
  1014. /*     0x00000X00 are reserved for MCI_SAVE  flags                   */
  1015. /*********************************************************************/
  1016. #define MCI_SAVE_FILE                       0x00000100L
  1017.  
  1018.     /*************************************************/
  1019.     /* Digital Video               MCI_SAVE          */
  1020.     /*************************************************/
  1021.  
  1022. #define MCI_DGV_SAVE_VIDEO_FILE             0x00001000L
  1023. #define MCI_DGV_SAVE_IMAGE_FILE             0x00002000L
  1024.  
  1025. typedef struct _MCI_SAVE_PARMS {
  1026.     HWND    hwndCallback;    /* PM window handle for MCI notify message     */
  1027.     PSZ     pszFileName;     /* Filename to save data to                    */
  1028. } MCI_SAVE_PARMS;
  1029. typedef MCI_SAVE_PARMS   *PMCI_SAVE_PARMS;
  1030.  
  1031. /*********************************************************************/
  1032. /* parameters for the MCI_SEEK message                               */
  1033. /*     0x00000X00 are reserved for MCI_SEEK flags                    */
  1034. /*********************************************************************/
  1035. #define MCI_TO_START                        0x00000100L
  1036. #define MCI_TO_END                          0x00000200L
  1037.  
  1038.     /*************************************************/
  1039.     /* Digital Video               MCI_SEEK          */
  1040.     /*************************************************/
  1041.  
  1042. #define MCI_DGV_SEEK_TO_NEAREST_IFRAME      0x00100000L
  1043.  
  1044.     /*************************************************/
  1045.     /* Videodisc                   MCI_SEEK          */
  1046.     /*************************************************/
  1047. #define MCI_VD_SEEK_REVERSE                 0x00001000L
  1048.  
  1049. typedef struct _MCI_SEEK_PARMS {
  1050.     HWND    hwndCallback;    /* PM window handle for MCI notify message     */
  1051.     ULONG   ulTo;            /* Seek to this position                       */
  1052. } MCI_SEEK_PARMS;
  1053. typedef MCI_SEEK_PARMS   *PMCI_SEEK_PARMS;
  1054.  
  1055. /*********************************************************************/
  1056. /* Flags for the MCI_SET message                                     */
  1057. /*     0x00XXXX00 are reserved for MCI_SET  flags                    */
  1058. /*********************************************************************/
  1059. #define MCI_SET_ITEM                        0x00000100L
  1060. #define MCI_SET_ON                          0x00000200L
  1061. #define MCI_SET_OFF                         0x00000400L
  1062. #define MCI_SET_VIDEO                       0x00000800L
  1063. #define MCI_SET_AUDIO                       0x00001000L
  1064. #define MCI_SET_DOOR_OPEN                   0x00002000L
  1065. #define MCI_SET_DOOR_CLOSED                 0x00004000L
  1066. #define MCI_SET_SPEED_FORMAT                0x00008000L
  1067. #define MCI_SET_TIME_FORMAT                 0x00010000L
  1068. #define MCI_SET_DOOR_LOCK                   0x00020000L
  1069. #define MCI_SET_DOOR_UNLOCK                 0x00040000L
  1070. #define MCI_SET_VOLUME                      0x00080000L
  1071. #define MCI_SET_ITEM_FOURCC                 0x00100000L
  1072.  
  1073. /*******************************************************/
  1074. /* Values for the ulAudio field                        */
  1075. /*******************************************************/
  1076. #define MCI_SET_AUDIO_ALL                   0x00000000L
  1077. #define MCI_SET_AUDIO_LEFT                  0x00000001L
  1078. #define MCI_SET_AUDIO_RIGHT                 0x00000002L
  1079.  
  1080. /*******************************************************/
  1081. /* MCI_SET flags for amp/mixer                         */
  1082. /*******************************************************/
  1083. #define MCI_AMP_SET_BALANCE                 0x00100000L
  1084. #define MCI_AMP_SET_PITCH                   0x00200000L
  1085. #define MCI_AMP_SET_TREBLE                  0x00400000L
  1086. #define MCI_AMP_SET_BASS                    0x00800000L
  1087. #define MCI_AMP_SET_GAIN                    0x01000000L
  1088.  
  1089. /*******************************************************/
  1090. /* General MCI_SET item values                         */
  1091. /*******************************************************/
  1092. #define MCI_SET_MONITOR                     0x00000001L
  1093. #define MCI_SET_MONITOR_AUDIO               0x00000002L
  1094. #define MCI_SET_MONITOR_VIDEO               0x00000003L
  1095. #define MCI_SET_RECORD                      0x00000004L
  1096.  
  1097. /*******************************************************/
  1098. /* MCI_SET item values for amp/mixer                   */
  1099. /*******************************************************/
  1100. #define MCI_AMP_SET_MONITOR                 MCI_SET_MONITOR_AUDIO
  1101.  
  1102. /*******************************************************/
  1103. /* MCI_SET flags for CDXA                              */
  1104. /*******************************************************/
  1105. #define MCI_CDXA_SET_CHANNEL                0x01000000L
  1106. #define MCI_CDXA_AUDIO_DEVICE               0x10000000L
  1107. #define MCI_CDXA_AUDIO_BUFFER               0x02000000L
  1108. #define MCI_CDXA_VIDEO_BUFFER               0x04000000L
  1109. #define MCI_CDXA_DATA_BUFFER                0x08000000L
  1110.  
  1111. /*******************************************************/
  1112. /* MCI_SET flags for videodisc                         */
  1113. /*******************************************************/
  1114. #define MCI_VD_SET_ON                       MCI_SET_ON
  1115. #define MCI_VD_SET_OFF                      MCI_SET_OFF
  1116. #define MCI_VD_SET_VIDEO                    MCI_SET_VIDEO
  1117. #define MCI_VD_SET_CHANNEL                  0x00100000L
  1118. #define MCI_VD_SET_DISPLAY                  0x00200000L
  1119.  
  1120. /*******************************************************/
  1121. /* Generic MCI_SET item values for video devices       */
  1122. /*******************************************************/
  1123. #define MCI_VID_SET_VIDEO_COMPRESSION           MCI_VID_ITEM_BASE
  1124. #define MCI_VID_SET_IMAGE_COMPRESSION           (MCI_VID_ITEM_BASE+1)
  1125. #define MCI_VID_SET_IMAGE_BITSPERPEL            (MCI_VID_ITEM_BASE+2)
  1126. #define MCI_VID_SET_IMAGE_PELFORMAT             (MCI_VID_ITEM_BASE+3)
  1127. #define MCI_VID_SET_BRIGHTNESS                  (MCI_VID_ITEM_BASE+4)
  1128. #define MCI_VID_SET_CONTRAST                    (MCI_VID_ITEM_BASE+5)
  1129. #define MCI_VID_SET_HUE                         (MCI_VID_ITEM_BASE+6)
  1130. #define MCI_VID_SET_SATURATION                  (MCI_VID_ITEM_BASE+7)
  1131. #define MCI_VID_SET_SHARPNESS                   (MCI_VID_ITEM_BASE+8)
  1132. #define MCI_VID_SET_GREYSCALE                   (MCI_VID_ITEM_BASE+9)
  1133. #define MCI_VID_SET_IMAGE_QUALITY               (MCI_VID_ITEM_BASE+10)
  1134. #define MCI_VID_SET_VIDEO_QUALITY               (MCI_VID_ITEM_BASE+11)
  1135. #define MCI_VID_SET_IMAGE_COMPRESSION_METHOD    (MCI_VID_ITEM_BASE+12)
  1136. #define MCI_VID_SET_MINIMUM_VIDEO_REFRESH_RATE  (MCI_VID_ITEM_BASE+13)
  1137. #define MCI_VID_SET_IMAGE_FILE_FORMAT           (MCI_VID_ITEM_BASE+14)
  1138. #define MCI_VID_SET_REF_INTERVAL                (MCI_VID_ITEM_BASE+15)
  1139. #define MCI_VID_SET_MAXDATARATE                 (MCI_VID_ITEM_BASE+16)
  1140. #define MCI_VID_SET_VIDEO_FILE_FORMAT           (MCI_VID_ITEM_BASE+17)
  1141.  
  1142. /*******************************************************/
  1143. /* MCI_SET item values for video overlay               */
  1144. /*******************************************************/
  1145. #define MCI_OVLY_SET_IMAGE_COMPRESSION          MCI_VID_SET_IMAGE_COMPRESSION
  1146. #define MCI_OVLY_SET_IMAGE_BITSPERPEL           MCI_VID_SET_IMAGE_BITSPERPEL
  1147. #define MCI_OVLY_SET_IMAGE_PELFORMAT            MCI_VID_SET_IMAGE_PELFORMAT
  1148. #define MCI_OVLY_SET_BRIGHTNESS                 MCI_VID_SET_BRIGHTNESS
  1149. #define MCI_OVLY_SET_CONTRAST                   MCI_VID_SET_CONTRAST
  1150. #define MCI_OVLY_SET_HUE                        MCI_VID_SET_HUE
  1151. #define MCI_OVLY_SET_SATURATION                 MCI_VID_SET_SATURATION
  1152. #define MCI_OVLY_SET_SHARPNESS                  MCI_VID_SET_SHARPNESS
  1153. #define MCI_OVLY_SET_GREYSCALE                  MCI_VID_SET_GREYSCALE
  1154. #define MCI_OVLY_SET_IMAGE_QUALITY              MCI_VID_SET_IMAGE_QUALITY
  1155. #define MCI_OVLY_SET_IMAGE_COMPRESSION_METHOD   MCI_VID_SET_IMAGE_COMPRESSION_METHOD
  1156. #define MCI_OVLY_SET_MINIMUM_VIDEO_REFRESH_RATE MCI_VID_SET_MINIMUM_VIDEO_REFRESH_RATE
  1157. #define MCI_OVLY_SET_IMAGE_FILE_FORMAT          MCI_VID_SET_IMAGE_FILE_FORMAT
  1158.  
  1159. /*******************************************************/
  1160. /* MCI_SET item values for digital video               */
  1161. /*******************************************************/
  1162. #define MCI_DGV_SET_VIDEO_COMPRESSION           MCI_VID_SET_VIDEO_COMPRESSION
  1163. #define MCI_DGV_SET_IMAGE_COMPRESSION           MCI_VID_SET_IMAGE_COMPRESSION
  1164. #define MCI_DGV_SET_IMAGE_BITSPERPEL            MCI_VID_SET_IMAGE_BITSPERPEL
  1165. #define MCI_DGV_SET_IMAGE_PELFORMAT             MCI_VID_SET_IMAGE_PELFORMAT
  1166. #define MCI_DGV_SET_BRIGHTNESS                  MCI_VID_SET_BRIGHTNESS
  1167. #define MCI_DGV_SET_CONTRAST                    MCI_VID_SET_CONTRAST
  1168. #define MCI_DGV_SET_HUE                         MCI_VID_SET_HUE
  1169. #define MCI_DGV_SET_SATURATION                  MCI_VID_SET_SATURATION
  1170. #define MCI_DGV_SET_SHARPNESS                   MCI_VID_SET_SHARPNESS
  1171. #define MCI_DGV_SET_GREYSCALE                   MCI_VID_SET_GREYSCALE
  1172. #define MCI_DGV_SET_IMAGE_QUALITY               MCI_VID_SET_IMAGE_QUALITY
  1173. #define MCI_DGV_SET_VIDEO_QUALITY               MCI_VID_SET_VIDEO_QUALITY
  1174. #define MCI_DGV_SET_IMAGE_COMPRESSION_METHOD    MCI_VID_SET_IMAGE_COMPRESSION_METHOD
  1175. #define MCI_DGV_SET_MONITOR                     MCI_SET_MONITOR
  1176. #define MCI_DGV_SET_MINIMUM_VIDEO_REFRESH_RATE  MCI_VID_SET_MINIMUM_VIDEO_REFRESH_RATE
  1177. #define MCI_DGV_SET_IMAGE_FILE_FORMAT           MCI_VID_SET_IMAGE_FILE_FORMAT
  1178. #define MCI_DGV_SET_REF_INTERVAL                MCI_VID_SET_REF_INTERVAL
  1179. #define MCI_DGV_SET_MAXDATARATE                 MCI_VID_SET_MAXDATARATE
  1180. #define MCI_DGV_SET_VIDEO_FILE_FORMAT           MCI_VID_SET_VIDEO_FILE_FORMAT
  1181.  
  1182. #define MCI_DGV_SET_AUDIO_COMPRESSION           MCI_DGV_ITEM_BASE
  1183. #define MCI_DGV_SET_AUDIO_QUALITY               (MCI_DGV_ITEM_BASE+1)
  1184.  
  1185. /*******************************************************/
  1186. /* Video file format                                   */
  1187. /*******************************************************/
  1188. #define MCI_VID_FILE_FORMAT_AVI       0x20495641L
  1189.  
  1190. /*******************************************************/
  1191. /* Audio/video/image compression types                 */
  1192. /*******************************************************/
  1193. #define MCI_AUD_COMP_ADPCM4          0x00000001L
  1194. #define MCI_AUD_COMP_PCM8            0x00000002L
  1195.  
  1196. #define MCI_VID_COMP_RTV_2_0         0x00000101L
  1197. #define MCI_VID_COMP_RTV_2_1         0x00000102L
  1198. #define MCI_VID_COMP_ULTI            0x49544C55L
  1199. #define MCI_VID_COMP_RT21            0x31325452L
  1200.  
  1201. #define MCI_IMG_COMP_NONE            0x00000201L
  1202. #define MCI_IMG_COMP_PIC9_1_0        0x00000202L
  1203. #define MCI_IMG_COMP_PIC16_1_0       0x00000203L
  1204. #define MCI_IMG_COMP_JPEG9           0x00000204L
  1205. #define MCI_IMG_COMP_JPEG9_1_0       MCI_IMG_COMP_JPEG9
  1206. #define MCI_IMG_COMP_BMP_RLE4        0x00000205L
  1207. #define MCI_IMG_COMP_BMP_RLE8        0x00000206L
  1208. #define MCI_IMG_COMP_JPEGN           0x00000207L
  1209.  
  1210. /*******************************************************/
  1211. /* PEL Formats (video/image)                           */
  1212. /*******************************************************/
  1213. #define MCI_VID_PALETTE              0x00000001L
  1214. #define MCI_VID_RGB                  0x00000002L
  1215. #define MCI_VID_YUV                  0x00000003L
  1216.  
  1217. #define MCI_IMG_PALETTE              MCI_VID_PALETTE
  1218. #define MCI_IMG_RGB                  MCI_VID_RGB
  1219. #define MCI_IMG_YUV                  MCI_VID_YUV
  1220.  
  1221.  
  1222. /*******************************************************/
  1223. /* Audio/video/image quality levels                    */
  1224. /*******************************************************/
  1225. #define MCI_AUD_QUALITY_HIGH         0x00000001L
  1226. #define MCI_AUD_QUALITY_MED          0x00000002L
  1227. #define MCI_AUD_QUALITY_LOW          0x00000003L
  1228.  
  1229. #define MCI_VID_QUALITY_HIGH         0x00000101L
  1230. #define MCI_VID_QUALITY_MED          0x00000102L
  1231. #define MCI_VID_QUALITY_LOW          0x00000103L
  1232. #define MCI_VID_QUALITY_BEST         MCI_VID_QUALITY_HIGH
  1233. #define MCI_VID_QUALITY_CDROM        MCI_VID_QUALITY_MED
  1234. #define MCI_VID_QUALITY_COMPACT      MCI_VID_QUALITY_LOW
  1235. #define MCI_VID_QUALITY_BETTER       MCI_VID_QUALITY_MED
  1236. #define MCI_VID_QUALITY_GOOD         MCI_VID_QUALITY_LOW
  1237.  
  1238. #define MCI_IMG_QUALITY_HIGH         0x00000201L
  1239. #define MCI_IMG_QUALITY_MED          0x00000202L
  1240. #define MCI_IMG_QUALITY_LOW          0x00000203L
  1241.  
  1242. /*******************************************************/
  1243. /* MCI_SET flags for wave audio                        */
  1244. /*******************************************************/
  1245. #define MCI_WAVE_SET_SAMPLESPERSEC          0x01000000L
  1246. #define MCI_WAVE_SET_AVGBYTESPERSEC         0x02000000L
  1247. #define MCI_WAVE_SET_BLOCKALIGN             0x04000000L
  1248. #define MCI_WAVE_SET_FORMATTAG              0x08000000L
  1249. #define MCI_WAVE_SET_CHANNELS               0x10000000L
  1250. #define MCI_WAVE_SET_BITSPERSAMPLE          0x80000000L
  1251.  
  1252. /*******************************************************/
  1253. /* Wave format tag defines                             */
  1254. /*******************************************************/
  1255. #define MCI_WAVE_FORMAT_PCM                 DATATYPE_WAVEFORM
  1256. #define MCI_WAVE_FORMAT_ADPCM               0x0002L
  1257. #define MCI_WAVE_FORMAT_IBM_CVSD            0x0005L
  1258. #define MCI_WAVE_FORMAT_ALAW                DATATYPE_RIFF_ALAW
  1259. #define MCI_WAVE_FORMAT_MULAW               DATATYPE_RIFF_MULAW
  1260. #define MCI_WAVE_FORMAT_OKI_ADPCM           0x0010L
  1261. #define MCI_WAVE_FORMAT_DVI_ADPCM           0x0011L
  1262. #define MCI_WAVE_FORMAT_DIGISTD             0x0015L
  1263. #define MCI_WAVE_FORMAT_DIGIFIX             0x0016L
  1264. #define MCI_WAVE_FORMAT_AVC_ADPCM           DATATYPE_ADPCM_AVC
  1265. #define MCI_WAVE_FORMAT_IBM_ADPCM           DATATYPE_ADPCM_AVC
  1266. #define MCI_WAVE_FORMAT_IBM_MULAW           DATATYPE_MULAW
  1267. #define MCI_WAVE_FORMAT_IBM_ALAW            DATATYPE_ALAW
  1268. #define MCI_WAVE_FORMAT_CT_ADPCM            DATATYPE_CT_ADPCM
  1269.  
  1270. /*******************************************************/
  1271. /* MCI_SET flags for sequencer                         */
  1272. /*******************************************************/
  1273. #define MCI_SEQ_SET_TEMPO                   0x00100000L
  1274. #define MCI_SEQ_SET_PORT                    0x00200000L
  1275. #define MCI_SEQ_ENABLE_PORT_MAPPER          0x00400000L
  1276. #define MCI_SEQ_DISABLE_PORT_MAPPER         0x00800000L
  1277. #define MCI_SEQ_SET_OFFSET                  0x01000000L
  1278. #define MCI_SEQ_SET_MASTER                  0x02000000L
  1279. #define MCI_SEQ_SET_SLAVE                   0x04000000L
  1280.  
  1281.    /**********************************************/
  1282.    /* SEQ time formats                           */
  1283.    /**********************************************/
  1284.    #define MCI_SEQ_SET_SMPTE_24             0x00000100L
  1285.    #define MCI_SEQ_SET_SMPTE_25             0x00000200L
  1286.    #define MCI_SEQ_SET_SMPTE_30             0x00000300L
  1287.    #define MCI_SEQ_SET_SMPTE_30DROP         0x00000400L
  1288.    #define MCI_SEQ_SET_SONGPTR              0x00000500L
  1289.  
  1290.    /**********************************************/
  1291.    /* SEQ synchronization types                  */
  1292.    /**********************************************/
  1293.    #define MCI_SEQ_MIDI                     0x00000001L
  1294.    #define MCI_SEQ_SMPTE                    0x00000002L
  1295.    #define MCI_SEQ_FILE                     0x00000003L
  1296.    #define MCI_SEQ_NONE                     0x00000004L
  1297.  
  1298.    /**********************************************/
  1299.    /* SEQ PORT TYPES                             */
  1300.    /**********************************************/
  1301.    #define MCI_SET_NONE                     0x10000000L
  1302.    #define MIDI_MAPPER                      0x20000000L
  1303.    #define MCI_MIDI_MAPPER                  MIDI_MAPPER
  1304.  
  1305. typedef struct _MCI_SET_PARMS {
  1306.     HWND    hwndCallback;    /* PM window handle for MCI notify message        */
  1307.     ULONG   ulTimeFormat;    /* Time format to be used by the device           */
  1308.     ULONG   ulSpeedFormat;   /* Speed format used by this device               */
  1309.     ULONG   ulAudio;         /* Channel number for this operation              */
  1310.                              /* (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,      */
  1311.                              /*  MCI_SET_AUDIO_ALL)                            */
  1312.     ULONG   ulLevel;         /* Volume, treble or bass level as % of max.      */
  1313.     ULONG   ulOver;          /* Delay time for vectored change in milliseconds */
  1314.     ULONG   ulItem;          /* Item field for set item flags                  */
  1315.     ULONG   ulValue;         /* Value associated with item flag                */
  1316. } MCI_SET_PARMS;
  1317. typedef MCI_SET_PARMS       *PMCI_SET_PARMS;
  1318.  
  1319. typedef MCI_SET_PARMS       MCI_AMP_SET_PARMS;
  1320. typedef MCI_AMP_SET_PARMS   *PMCI_AMP_SET_PARMS;
  1321.  
  1322. typedef MCI_SET_PARMS       MCI_DGV_SET_PARMS;
  1323. typedef MCI_DGV_SET_PARMS   *PMCI_DGV_SET_PARMS;
  1324.  
  1325. typedef MCI_SET_PARMS       MCI_OVLY_SET_PARMS;
  1326. typedef MCI_OVLY_SET_PARMS  *PMCI_OVLY_SET_PARMS;
  1327.  
  1328. typedef struct _MCI_CDXA_SET_PARMS {
  1329.     HWND    hwndCallback;    /* PM window handle for MCI notify message        */
  1330.     ULONG   ulTimeFormat;    /* Time format to be used by the device           */
  1331.     ULONG   ulSpeedFormat;   /* Speed format used by this device               */
  1332.     ULONG   ulAudio;         /* Channel number for this operation              */
  1333.                              /* (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,      */
  1334.                              /*  MCI_SET_AUDIO_ALL)                            */
  1335.     ULONG   ulLevel;         /* Volume, treble or bass level as % of max.      */
  1336.     ULONG   ulOver;          /* Delay time for vectored change in milliseconds */
  1337.     ULONG   ulItem;          /* Item field for set item flags                  */
  1338.     ULONG   ulValue;         /* Value associated with item flag                */
  1339.     ULONG   ulChannel;       /* Channel number                                 */
  1340.     PVOID   pPlayList;       /* Pointer to play list                           */
  1341.     ULONG   ulPlayListSize;  /* Play list size                                 */
  1342. } MCI_CDXA_SET_PARMS;
  1343. typedef MCI_CDXA_SET_PARMS   *PMCI_CDXA_SET_PARMS;
  1344.  
  1345. typedef struct _MCI_VD_SET_PARMS {
  1346.     HWND    hwndCallback;    /* PM window handle for MCI notify message        */
  1347.     ULONG   ulTimeFormat;    /* Time format to be used by the device           */
  1348.     ULONG   ulSpeedFormat;   /* Speed format used by this device               */
  1349.     ULONG   ulAudio;         /* Channel number for this operation              */
  1350.                              /* (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,      */
  1351.                              /*  MCI_SET_AUDIO_ALL)                            */
  1352.     ULONG   ulLevel;         /* Volume, treble or bass level as % of max.      */
  1353.     ULONG   ulOver;          /* Delay time for vectored change in milliseconds */
  1354.     ULONG   ulItem;          /* Item field for set item flags                  */
  1355.     ULONG   ulValue;         /* Value associated with item flag                */
  1356.     ULONG   ulChannel;       /* Videodisc channel                              */
  1357. } MCI_VD_SET_PARMS;
  1358. typedef MCI_VD_SET_PARMS   *PMCI_VD_SET_PARMS;
  1359.  
  1360. typedef struct _MCI_WAVE_SET_PARMS {
  1361.     HWND    hwndCallback;    /* PM window handle for MCI notify message        */
  1362.     ULONG   ulTimeFormat;    /* Time format to be used by the device           */
  1363.     ULONG   ulSpeedFormat;   /* Speed format used by this device               */
  1364.     ULONG   ulAudio;         /* Channel number for this operation              */
  1365.                              /* (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,      */
  1366.                              /*  MCI_SET_AUDIO_ALL)                            */
  1367.     ULONG   ulLevel;         /* Volume, trebble or bass level as % of max.     */
  1368.     ULONG   ulOver;          /* Delay time for vectored change in milliseconds */
  1369.     ULONG   ulItem;          /* Item field for set item flags                  */
  1370.     ULONG   ulValue;         /* Value associated with item flag                */
  1371.     USHORT  usInput;         /* Channel for input                              */
  1372.     USHORT  usReserved0;     /* Reserved field                                 */
  1373.     USHORT  usOutput;        /* Channel for output                             */
  1374.     USHORT  usReserved1;     /* Reserved field                                 */
  1375.     USHORT  usFormatTag;     /* Format tag                                     */
  1376.     USHORT  usReserved2;     /* Reserved field                                 */
  1377.     USHORT  usChannels;      /* mono(1) or stereo(2)                           */
  1378.     USHORT  usReserved3;     /* Reserved field                                 */
  1379.     ULONG   ulSamplesPerSec; /* Samples per seconds                            */
  1380.     ULONG   ulAvgBytesPerSec;/* Bytes per seconds                              */
  1381.     USHORT  usBlockAlign;    /* Block alignment of data                        */
  1382.     USHORT  usReserved4;     /* Reserved field                                 */
  1383.     USHORT  usBitsPerSample; /* Bits per seconds                               */
  1384.     USHORT  usReserved5;     /* Reserved field                                 */
  1385. } MCI_WAVE_SET_PARMS;
  1386. typedef MCI_WAVE_SET_PARMS   *PMCI_WAVE_SET_PARMS;
  1387.  
  1388. typedef struct _MCI_SEQ_SET_PARMS {
  1389.     HWND    hwndCallback;    /* PM window handle for MCI notify message        */
  1390.     ULONG   ulTimeFormat;    /* Time format to be used by the device           */
  1391.     ULONG   ulSpeedFormat;   /* Speed format used by this device               */
  1392.     ULONG   ulAudio;         /* Channel number for this operation              */
  1393.                              /* (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,      */
  1394.                              /*  MCI_SET_AUDIO_ALL)                            */
  1395.     ULONG   ulLevel;         /* Volume, trebble or bass level as % of max.     */
  1396.     ULONG   ulOver;          /* Delay time for vectored change in milliseconds */
  1397.     ULONG   ulItem;          /* Item field for set item flags                  */
  1398.     ULONG   ulValue;         /* Value associated with item flag                */
  1399.     ULONG   ulTempo;         /* Specified the tempo                            */
  1400.     ULONG   ulPort;          /* Output port                                    */
  1401.     ULONG   ulSlave;         /* Unused field                                   */
  1402.     ULONG   ulMaster;        /* Unused field                                   */
  1403.     ULONG   ulOffset;        /* Specified the data offset                      */
  1404. } MCI_SEQ_SET_PARMS;
  1405. typedef MCI_SEQ_SET_PARMS   *PMCI_SEQ_SET_PARMS;
  1406.  
  1407.  
  1408. /*********************************************************************/
  1409. /* parameters for the MCI_SET_CUEPOINT message                       */
  1410. /*     0x00000x00 are reserved for MCI_SET_CUEPOINT flags            */
  1411. /*********************************************************************/
  1412. #define MCI_SET_CUEPOINT_ON                 0x00000100L
  1413. #define MCI_SET_CUEPOINT_OFF                0x00000200L
  1414.  
  1415. typedef struct _MCI_CUEPOINT_PARMS {
  1416.     HWND    hwndCallback;    /* PM window handle for MCI notify message        */
  1417.     ULONG   ulCuepoint;      /* Specifies the cuepoint location                */
  1418.     USHORT  usUserParm;      /* User parmameter returned on cuepoint           */
  1419.                              /* notify message                                 */
  1420.     USHORT  usReserved0;     /* Reserved field                                 */
  1421. } MCI_CUEPOINT_PARMS;
  1422. typedef MCI_CUEPOINT_PARMS   *PMCI_CUEPOINT_PARMS;
  1423.  
  1424. /*********************************************************************/
  1425. /* parameters for the MCI_SETIMAGEPALETTE message                    */
  1426. /*     0x000XXX00 are reserved for MCI_SETIMAGEPALETTE flags         */
  1427. /*********************************************************************/
  1428. #define MCI_SET_REGISTERED                  0x00000100L
  1429.  
  1430. /*********************************************************************/
  1431. /* flags and parameter structure for the MCI_SET_POSITION_ADVISE msg */
  1432. /*     0x00000X00 are reserved for MCI_SET_POSITION_ADVISE flags     */
  1433. /*********************************************************************/
  1434. #define MCI_SET_POSITION_ADVISE_ON          0x00000100L
  1435. #define MCI_SET_POSITION_ADVISE_OFF         0x00000200L
  1436.  
  1437. typedef struct _MCI_POSITION_PARMS {
  1438.     HWND    hwndCallback;    /* PM window handle for MCI notify message        */
  1439.     ULONG   ulUnits;         /* Specifies position change notifiication        */
  1440.                              /* granularity                                    */
  1441.     USHORT  usUserParm;      /* User parameter returned on position change     */
  1442.                              /* notification message.                          */
  1443.     USHORT  Reserved0;       /* Reserved field                                 */
  1444.     ULONG   Reserved1;       /* Reserved field                                 */
  1445.     } MCI_POSITION_PARMS;
  1446. typedef MCI_POSITION_PARMS   *PMCI_POSITION_PARMS;
  1447.  
  1448. /*********************************************************************/
  1449. /* parameter structure for the MCI_SET_SYNC_OFFSET message           */
  1450. /*********************************************************************/
  1451. typedef struct _MCI_SYNC_OFFSET_PARMS {
  1452.     HWND    hwndCallback;    /* PM window handle for MCI notify message        */
  1453.     ULONG   ulOffset;        /* Specifies the device media position offset     */
  1454.                              /* in the currently specified device units.       */
  1455. } MCI_SYNC_OFFSET_PARMS;
  1456. typedef MCI_SYNC_OFFSET_PARMS   *PMCI_SYNC_OFFSET_PARMS;
  1457.  
  1458. /*********************************************************************/
  1459. /* flags for the MCI_SPIN message                                    */
  1460. /*     0x00000X00 are reserved for MCI_SPIN flags                    */
  1461. /*********************************************************************/
  1462. #define MCI_SPIN_UP                         0x00000100L
  1463. #define MCI_SPIN_DOWN                       0x00000200L
  1464.  
  1465. /*********************************************************************/
  1466. /* MCI_STATUS message flags                                          */
  1467. /*     0x000XXX00 are reserved for MCI_STATUS flags                  */
  1468. /*     MCI_VOLUME and MCI_VOLUME_DELAY are 0x00000100 and 0x00000200 */
  1469. /*********************************************************************/
  1470. #define MCI_STATUS_ITEM                     0x00000100L
  1471. #define MCI_STATUS_START                    0x00000200L
  1472.  
  1473. /*************************************************/
  1474. /* General MCI_STATUS item values                */
  1475. /*************************************************/
  1476. #define MCI_STATUS_CURRENT_TRACK            0x00000001L
  1477. #define MCI_STATUS_LENGTH                   0x00000002L
  1478. #define MCI_STATUS_MODE                     0x00000003L
  1479. #define MCI_STATUS_NUMBER_OF_TRACKS         0x00000004L
  1480. #define MCI_STATUS_POSITION                 0x00000005L
  1481. #define MCI_STATUS_POSITION_IN_TRACK        0x00000006L
  1482. #define MCI_STATUS_MEDIA_PRESENT            0x00000007L
  1483. #define MCI_STATUS_VOLUME                   0x00000008L
  1484. #define MCI_STATUS_READY                    0x00000009L
  1485. #define MCI_STATUS_TIME_FORMAT              0x0000000AL
  1486. #define MCI_STATUS_SPEED_FORMAT             0x0000000BL
  1487. #define MCI_STATUS_MONITOR                  0x0000000CL
  1488. #define MCI_STATUS_AUDIO                    0x0000000DL
  1489. #define MCI_STATUS_VIDEO                    0x0000000EL
  1490. #define MCI_STATUS_CLIPBOARD                0x0000000FL
  1491.  
  1492.    /*************************************************/
  1493.    /* ulValue field values for MCI_STATUS_AUDIO     */
  1494.    /*************************************************/
  1495. #define MCI_STATUS_AUDIO_ALL                   0x00000000L
  1496. #define MCI_STATUS_AUDIO_LEFT                  0x00000001L
  1497. #define MCI_STATUS_AUDIO_RIGHT                 0x00000002L
  1498.  
  1499. /*************************************************/
  1500. /* MCI_STATUS item values for amp/mixer          */
  1501. /*************************************************/
  1502. #define MCI_AMP_STATUS_PITCH                MCI_AMP_ITEM_BASE
  1503. #define MCI_AMP_STATUS_TREBLE               (MCI_AMP_ITEM_BASE+1)
  1504. #define MCI_AMP_STATUS_BASS                 (MCI_AMP_ITEM_BASE+2)
  1505. #define MCI_AMP_STATUS_BALANCE              (MCI_AMP_ITEM_BASE+3)
  1506. #define MCI_AMP_STATUS_GAIN                 (MCI_AMP_ITEM_BASE+4)
  1507. #define MCI_AMP_STATUS_MONITOR              (MCI_AMP_ITEM_BASE+5)
  1508.  
  1509. /*************************************************/
  1510. /* MCI_STATUS item values for cd audio           */
  1511. /*************************************************/
  1512. #define MCI_CD_STATUS_TRACK_TYPE            MCI_CD_ITEM_BASE
  1513. #define MCI_CD_STATUS_TRACK_COPYPERMITTED   (MCI_CD_ITEM_BASE+1)
  1514. #define MCI_CD_STATUS_TRACK_CHANNELS        (MCI_CD_ITEM_BASE+2)
  1515. #define MCI_CD_STATUS_TRACK_PREEMPHASIS     (MCI_CD_ITEM_BASE+3)
  1516.  
  1517.     /************************************************/
  1518.     /* return values for CD MCI_STATUS message with */
  1519.     /*   MCI_CD_STATUS_TRACK_TYPE set               */
  1520.     /************************************************/
  1521. #define MCI_CD_TRACK_AUDIO                  0x00000001L
  1522. #define MCI_CD_TRACK_DATA                   0x00000002L
  1523. #define MCI_CD_TRACK_OTHER                  0x00000003L
  1524.  
  1525. /*************************************************/
  1526. /* MCI_STATUS item values for CDXA               */
  1527. /*************************************************/
  1528. #define MCI_CDXA_STATUS_CHANNEL             MCI_CDXA_ITEM_BASE
  1529.  
  1530.     /************************************************/
  1531.     /*returned from call for MCI_CDXA_STATUS_CHANNEL*/
  1532.     /************************************************/
  1533. #define MCI_CDXA_NONE                       0x00000000L
  1534.  
  1535.  
  1536. /*************************************************/
  1537. /* MCI_STATUS item values for sequencer          */
  1538. /*************************************************/
  1539. #define MCI_SEQ_STATUS_TEMPO                MCI_SEQ_ITEM_BASE
  1540. #define MCI_SEQ_STATUS_OFFSET               (MCI_SEQ_ITEM_BASE+1)
  1541. #define MCI_SEQ_STATUS_DIVTYPE              (MCI_SEQ_ITEM_BASE+2)
  1542. #define MCI_SEQ_STATUS_MASTER               (MCI_SEQ_ITEM_BASE+3)
  1543. #define MCI_SEQ_STATUS_PORT                 (MCI_SEQ_ITEM_BASE+4)
  1544. #define MCI_SEQ_STATUS_SLAVE                (MCI_SEQ_ITEM_BASE+5)
  1545.  
  1546.    /**********************************************/
  1547.    /* Return value for current division type     */
  1548.    /**********************************************/
  1549. #define MCI_SEQ_DIV_PPQN                    0x00000001L
  1550. #define MCI_SEQ_DIV_SMPTE_24                0x00000002L
  1551. #define MCI_SEQ_DIV_SMPTE_25                0x00000003L
  1552. #define MCI_SEQ_DIV_SMPTE_30DROP            0x00000004L
  1553. #define MCI_SEQ_DIV_SMPTE_30                0x00000005L
  1554.  
  1555.    /*************************************************/
  1556.    /* MCI_STATUS items for videodisc                */
  1557.    /*************************************************/
  1558. #define MCI_VD_STATUS_SPEED                 MCI_VD_ITEM_BASE
  1559. #define MCI_VD_STATUS_FORWARD               (MCI_VD_ITEM_BASE+1)
  1560. #define MCI_VD_MEDIA_TYPE                   (MCI_VD_ITEM_BASE+2)
  1561. #define MCI_VD_STATUS_SIDE                  (MCI_VD_ITEM_BASE+3)
  1562. #define MCI_VD_STATUS_DISC_SIZE             (MCI_VD_ITEM_BASE+4)
  1563.  
  1564.     /***********************************************/
  1565.     /* return values for videodisc status command  */
  1566.     /***********************************************/
  1567. #define MCI_VD_SPEED_NORMAL                 0x00000000L
  1568. #define MCI_VD_SPEED_FAST                   0x00000001L
  1569. #define MCI_VD_SPEED_SLOW                   0x00000002L
  1570.  
  1571. /*************************************************/
  1572. /* MCI_STATUS items for wave audio               */
  1573. /*************************************************/
  1574. #define MCI_WAVE_STATUS_LEVEL               MCI_WAVE_ITEM_BASE
  1575. #define MCI_WAVE_STATUS_SAMPLESPERSEC       (MCI_WAVE_ITEM_BASE+1)
  1576. #define MCI_WAVE_STATUS_AVGBYTESPERSEC      (MCI_WAVE_ITEM_BASE+2)
  1577. #define MCI_WAVE_STATUS_BLOCKALIGN          (MCI_WAVE_ITEM_BASE+3)
  1578. #define MCI_WAVE_STATUS_FORMATTAG           (MCI_WAVE_ITEM_BASE+4)
  1579. #define MCI_WAVE_STATUS_CHANNELS            (MCI_WAVE_ITEM_BASE+5)
  1580. #define MCI_WAVE_STATUS_BITSPERSAMPLE       (MCI_WAVE_ITEM_BASE+6)
  1581.  
  1582. /*************************************************/
  1583. /* Common video MCI_STATUS items                 */
  1584. /*************************************************/
  1585. #define MCI_VID_STATUS_HWND                 MCI_VID_ITEM_BASE
  1586. #define MCI_VID_STATUS_AUDIO_COMPRESSION    (MCI_VID_ITEM_BASE+1)
  1587. #define MCI_VID_STATUS_VIDEO_COMPRESSION    (MCI_VID_ITEM_BASE+2)
  1588. #define MCI_VID_STATUS_IMAGE_COMPRESSION    (MCI_VID_ITEM_BASE+3)
  1589. #define MCI_VID_STATUS_AUDIO_QUALITY        (MCI_VID_ITEM_BASE+4)
  1590. #define MCI_VID_STATUS_VIDEO_QUALITY        (MCI_VID_ITEM_BASE+5)
  1591. #define MCI_VID_STATUS_IMAGE_QUALITY        (MCI_VID_ITEM_BASE+6)
  1592. #define MCI_VID_STATUS_IMAGE_BITSPERPEL     (MCI_VID_ITEM_BASE+7)
  1593. #define MCI_VID_STATUS_IMAGE_PELFORMAT      (MCI_VID_ITEM_BASE+8)
  1594. #define MCI_VID_STATUS_FORWARD              (MCI_VID_ITEM_BASE+9)
  1595. #define MCI_VID_STATUS_NORMAL_RATE          (MCI_VID_ITEM_BASE+10)
  1596. #define MCI_VID_STATUS_VIDEO_X_EXTENT       (MCI_VID_ITEM_BASE+11)
  1597. #define MCI_VID_STATUS_VIDEO_Y_EXTENT       (MCI_VID_ITEM_BASE+12)
  1598. #define MCI_VID_STATUS_IMAGE_X_EXTENT       (MCI_VID_ITEM_BASE+13)
  1599. #define MCI_VID_STATUS_IMAGE_Y_EXTENT       (MCI_VID_ITEM_BASE+14)
  1600. #define MCI_VID_STATUS_BRIGHTNESS           (MCI_VID_ITEM_BASE+15)
  1601. #define MCI_VID_STATUS_CONTRAST             (MCI_VID_ITEM_BASE+16)
  1602. #define MCI_VID_STATUS_HUE                  (MCI_VID_ITEM_BASE+17)
  1603. #define MCI_VID_STATUS_SATURATION           (MCI_VID_ITEM_BASE+18)
  1604. #define MCI_VID_STATUS_GREYSCALE            (MCI_VID_ITEM_BASE+19)
  1605. #define MCI_VID_STATUS_SHARPNESS            (MCI_VID_ITEM_BASE+20)
  1606. #define MCI_VID_STATUS_SPEED                (MCI_VID_ITEM_BASE+21)
  1607. #define MCI_VID_STATUS_IMAGE_FILE_FORMAT    (MCI_VID_ITEM_BASE+22)
  1608. #define MCI_VID_STATUS_TRANSPARENT_TYPE     (MCI_VID_ITEM_BASE+23)
  1609. #define MCI_VID_STATUS_REF_INTERVAL         (MCI_VID_ITEM_BASE+24)
  1610. #define MCI_VID_STATUS_MAXDATARATE          (MCI_VID_ITEM_BASE+25)
  1611. #define MCI_VID_STATUS_VIDEO_FILE_FORMAT    (MCI_VID_ITEM_BASE+26)
  1612.  
  1613.    /*************************************************/
  1614.    /* Status Transparent Type returns               */
  1615.    /* MCI_VID_PALETTE                               */
  1616.    /* MCI_VID_RGB                                   */
  1617.    /* MCI_VID_YUV                                   */
  1618.    /*************************************************/
  1619. #define MCI_VID_STATUS_TRANSPARENT_COLOR    (MCI_VID_ITEM_BASE+24)
  1620.  
  1621. /*************************************************/
  1622. /* MCI_STATUS items for digital video            */
  1623. /*************************************************/
  1624. #define MCI_DGV_STATUS_HWND                 MCI_VID_STATUS_HWND
  1625. #define MCI_DGV_STATUS_AUDIO_COMPRESSION    MCI_VID_STATUS_AUDIO_COMPRESSION
  1626. #define MCI_DGV_STATUS_VIDEO_COMPRESSION    MCI_VID_STATUS_VIDEO_COMPRESSION
  1627. #define MCI_DGV_STATUS_IMAGE_COMPRESSION    MCI_VID_STATUS_IMAGE_COMPRESSION
  1628. #define MCI_DGV_STATUS_AUDIO_QUALITY        MCI_VID_STATUS_AUDIO_QUALITY
  1629. #define MCI_DGV_STATUS_VIDEO_QUALITY        MCI_VID_STATUS_VIDEO_QUALITY
  1630. #define MCI_DGV_STATUS_IMAGE_QUALITY        MCI_VID_STATUS_IMAGE_QUALITY
  1631. #define MCI_DGV_STATUS_IMAGE_BITSPERPEL     MCI_VID_STATUS_IMAGE_BITSPERPEL
  1632. #define MCI_DGV_STATUS_IMAGE_PELFORMAT      MCI_VID_STATUS_IMAGE_PELFORMAT
  1633. #define MCI_DGV_STATUS_FORWARD              MCI_VID_STATUS_FORWARD
  1634. #define MCI_DGV_STATUS_NORMAL_RATE          MCI_VID_STATUS_NORMAL_RATE
  1635. #define MCI_DGV_STATUS_VIDEO_X_EXTENT       MCI_VID_STATUS_VIDEO_X_EXTENT
  1636. #define MCI_DGV_STATUS_VIDEO_Y_EXTENT       MCI_VID_STATUS_VIDEO_Y_EXTENT
  1637. #define MCI_DGV_STATUS_IMAGE_X_EXTENT       MCI_VID_STATUS_IMAGE_X_EXTENT
  1638. #define MCI_DGV_STATUS_IMAGE_Y_EXTENT       MCI_VID_STATUS_IMAGE_Y_EXTENT
  1639. #define MCI_DGV_STATUS_BRIGHTNESS           MCI_VID_STATUS_BRIGHTNESS
  1640. #define MCI_DGV_STATUS_CONTRAST             MCI_VID_STATUS_CONTRAST
  1641. #define MCI_DGV_STATUS_HUE                  MCI_VID_STATUS_HUE
  1642. #define MCI_DGV_STATUS_SATURATION           MCI_VID_STATUS_SATURATION
  1643. #define MCI_DGV_STATUS_SPEED                MCI_VID_STATUS_SPEED
  1644. #define MCI_DGV_STATUS_SHARPNESS            MCI_VID_STATUS_SHARPNESS
  1645. #define MCI_DGV_STATUS_REF_INTERVAL         MCI_VID_STATUS_REF_INTERVAL
  1646. #define MCI_DGV_STATUS_MAXDATARATE          MCI_VID_STATUS_MAXDATARATE
  1647. #define MCI_DGV_STATUS_VIDEO_FILE_FORMAT    MCI_VID_STATUS_VIDEO_FILE_FORMAT
  1648.  
  1649. /*************************************************/
  1650. /* MCI_STATUS item values for video overlay      */
  1651. /*************************************************/
  1652. #define MCI_OVLY_STATUS_HWND                 MCI_VID_STATUS_HWND
  1653. #define MCI_OVLY_STATUS_IMAGE_COMPRESSION    MCI_VID_STATUS_IMAGE_COMPRESSION
  1654. #define MCI_OVLY_STATUS_IMAGE_BITSPERPEL     MCI_VID_STATUS_IMAGE_BITSPERPEL
  1655. #define MCI_OVLY_STATUS_IMAGE_PELFORMAT      MCI_VID_STATUS_IMAGE_PELFORMAT
  1656. #define MCI_OVLY_STATUS_IMAGE_X_EXTENT       MCI_VID_STATUS_IMAGE_X_EXTENT
  1657. #define MCI_OVLY_STATUS_IMAGE_Y_EXTENT       MCI_VID_STATUS_IMAGE_Y_EXTENT
  1658. #define MCI_OVLY_STATUS_BRIGHTNESS           MCI_VID_STATUS_BRIGHTNESS
  1659. #define MCI_OVLY_STATUS_CONTRAST             MCI_VID_STATUS_CONTRAST
  1660. #define MCI_OVLY_STATUS_HUE                  MCI_VID_STATUS_HUE
  1661. #define MCI_OVLY_STATUS_SATURATION           MCI_VID_STATUS_SATURATION
  1662. #define MCI_OVLY_STATUS_GREYSCALE            MCI_VID_STATUS_GREYSCALE
  1663. #define MCI_OVLY_STATUS_IMAGE_QUALITY        MCI_VID_STATUS_IMAGE_QUALITY
  1664. #define MCI_OVLY_STATUS_SHARPNESS            MCI_VID_STATUS_SHARPNESS
  1665. #define MCI_OVLY_STATUS_IMAGE_FILE_FORMAT    MCI_VID_STATUS_IMAGE_FILE_FORMAT
  1666. #define MCI_OVLY_STATUS_TRANSPARENT_TYPE     MCI_VID_STATUS_TRANSPARENT_TYPE
  1667. #define MCI_OVLY_STATUS_TRANSPARENT_COLOR    MCI_VID_STATUS_TRANSPARENT_COLOR
  1668.  
  1669.    /*************************************************/
  1670.    /* Status Mode return values                     */
  1671.    /*************************************************/
  1672. #define MCI_MODE_NOT_READY                  0x00000001L
  1673. #define MCI_MODE_PAUSE                      0x00000002L
  1674. #define MCI_MODE_PLAY                       0x00000003L
  1675. #define MCI_MODE_STOP                       0x00000004L
  1676. #define MCI_MODE_RECORD                     0x00000005L
  1677. #define MCI_MODE_SEEK                       0x00000006L
  1678.  
  1679. typedef struct _MCI_STATUS_PARMS {
  1680.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  1681.     ULONG   ulReturn;        /* Return field                            */
  1682.     ULONG   ulItem;          /* Item field for STATUS item to query     */
  1683.     ULONG   ulValue;         /* Status value field (this used to be)    */
  1684.                              /*  ulTrack but was changed in Rel 1.1     */
  1685.                              /*  to extend the status structure.        */
  1686.                              /*  See the programming reference on when  */
  1687.                              /*  ulValue is used and how...             */
  1688. } MCI_STATUS_PARMS;
  1689. typedef MCI_STATUS_PARMS   *PMCI_STATUS_PARMS;
  1690.  
  1691.  
  1692. typedef struct _MCI_CDXA_STATUS_PARMS {
  1693.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  1694.     ULONG   ulReturn;        /* Return field                            */
  1695.     ULONG   ulItem;          /* Item field for STATUS item to query     */
  1696.     ULONG   ulValue;         /* Status value field (this used to be)    */
  1697.                              /*  ulTrack but was changed in Rel 1.1     */
  1698.                              /*  to extend the status structure.        */
  1699.                              /*  See the programming reference on when  */
  1700.                              /*  ulValue is used and how...             */
  1701.     ULONG   ulChannel;       /* Channel                                 */
  1702. } MCI_CDXA_STATUS_PARMS;
  1703. typedef MCI_CDXA_STATUS_PARMS   *PMCI_CDXA_STATUS_PARMS;
  1704.  
  1705. /*********************************************************************/
  1706. /* flags and parameter structure for the MCI_STEP message            */
  1707. /*     0x00000X00 are reserved for MCI_STEP flags                    */
  1708. /*********************************************************************/
  1709. #define MCI_STEP_FRAMES                     0x00000100L
  1710. #define MCI_STEP_REVERSE                    0x00000200L
  1711.  
  1712. typedef struct _MCI_STEP_PARMS {
  1713.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  1714.     ULONG   ulStep;          /* amount to step in current time format   */
  1715. } MCI_STEP_PARMS;
  1716. typedef MCI_STEP_PARMS   *PMCI_STEP_PARMS;
  1717.  
  1718. /*********************************************************************/
  1719. /* flags for the MCI_SYSINFO message                                 */
  1720. /*     0xXXXXXX00 are reserved for MCI_SYSINFO flags                 */
  1721. /*********************************************************************/
  1722. #define MCI_SYSINFO_QUANTITY                0x00000100L
  1723. #define MCI_SYSINFO_OPEN                    0x00000200L
  1724. #define MCI_SYSINFO_NAME                    0x00000400L
  1725. #define MCI_SYSINFO_INSTALLNAME             0x00000800L
  1726. #define MCI_SYSINFO_ITEM                    0x00001000L
  1727. #define MCI_SYSINFO_INI_LOCK                0x00002000L
  1728.  
  1729.     /********************************************************/
  1730.     /* Extended SYSINFO functions                            /
  1731.     /********************************************************/
  1732.     #define MCI_SYSINFO_INSTALL_DRIVER      0x00000001L
  1733.     #define MCI_SYSINFO_QUERY_DRIVER        0x00000002L
  1734.     #define MCI_SYSINFO_DELETE_DRIVER       0x00000004L
  1735.     #define MCI_SYSINFO_SET_PARAMS          0x00000008L
  1736.     #define MCI_SYSINFO_QUERY_PARAMS        0x00000010L
  1737.     #define MCI_SYSINFO_SET_CONNECTORS      0x00000020L
  1738.     #define MCI_SYSINFO_QUERY_CONNECTORS    0x00000040L
  1739.     #define MCI_SYSINFO_SET_EXTENSIONS      0x00000080L
  1740.     #define MCI_SYSINFO_QUERY_EXTENSIONS    0x00000100L
  1741.     #define MCI_SYSINFO_SET_ALIAS           0x00000200L
  1742.     #define MCI_SYSINFO_QUERY_NAMES         0x00000400L
  1743.     #define MCI_SYSINFO_SET_DEFAULT         0x00000800L
  1744.     #define MCI_SYSINFO_QUERY_DEFAULT       0x00001000L
  1745.     #define MCI_SYSINFO_SET_TYPES           0x00002000L
  1746.     #define MCI_SYSINFO_QUERY_TYPES         0x00004000L
  1747.  
  1748.     /********************************************************/
  1749.     /* Device Flags                                          /
  1750.     /********************************************************/
  1751.     #define MCI_SYSINFO_DEV_CONTROLLABLE    0x00000001L
  1752.     #define MCI_SYSINFO_DEV_NONCONTROLLABLE 0x00000002L
  1753.     #define MCI_SYSINFO_DEVICESETTINGS      0x00000004L
  1754.  
  1755. /*********************************************************************/
  1756. /* parameter structures for the MCI_SYSINFO message                  */
  1757. /*********************************************************************/
  1758. typedef struct _MCI_SYSINFO_PARMS {
  1759.     HWND    hwndDummyCallback; /* NOTIFY not allowed for SYSINFO          */
  1760.     PSZ     pszReturn;         /* Pointer to return buffer                */
  1761.     ULONG   ulRetSize;         /* Return buffer size                      */
  1762.     ULONG   ulNumber;          /* Ordinal Number                          */
  1763.     USHORT  usDeviceType;      /* MCI device type number                  */
  1764.     USHORT  usReserved0;       /* Reserved field                          */
  1765.     ULONG   ulItem;            /* Used to indicate the MCI_SYSINFO        */
  1766.                                /* extended function to perform            */
  1767.     PVOID   pSysInfoParm;
  1768. } MCI_SYSINFO_PARMS;
  1769. typedef MCI_SYSINFO_PARMS   *PMCI_SYSINFO_PARMS;
  1770.  
  1771. typedef struct _MCI_SYSINFO_LOGDEVICE {
  1772.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name            */
  1773.     USHORT  usDeviceType;                         /* Device type number             */
  1774.     ULONG   ulDeviceFlag;                         /* Flag indicating whether device */
  1775.                                                   /*  device is controllable or not */
  1776.     CHAR    szVersionNumber[MAX_VERSION_NUMBER];  /* INI file version number        */
  1777.     CHAR    szProductInfo[MAX_PRODINFO];          /* Textual product description    */
  1778.     CHAR    szMCDDriver[MAX_DEVICE_NAME];         /* MCI Driver dll name            */
  1779.     CHAR    szVSDDriver[MAX_DEVICE_NAME];         /* VSD dll name                   */
  1780.     CHAR    szPDDName[MAX_PDD_NAME];              /* Device PDD name                */
  1781.     CHAR    szMCDTable[MAX_DEVICE_NAME];          /* Device type command table      */
  1782.     CHAR    szVSDTable[MAX_DEVICE_NAME];          /* Device specific command table  */
  1783.     USHORT  usShareType;                          /* Device sharing mode            */
  1784.     CHAR    szResourceName[MAX_DEVICE_NAME];      /* Resource name                  */
  1785.     USHORT  usResourceUnits;                      /* Total resource units available */
  1786.                                                   /*  for this device               */
  1787.     USHORT  usResourceClasses;                    /* Number of resource classes for */
  1788.                                                   /*  this device                   */
  1789.     USHORT  ausClassArray[MAX_CLASSES];           /* Maximum number of resource     */
  1790.                                                   /*  units for each class          */
  1791.     USHORT  ausValidClassArray[MAX_CLASSES][MAX_CLASSES]; /* Valid class combinations */
  1792. } MCI_SYSINFO_LOGDEVICE;
  1793. typedef MCI_SYSINFO_LOGDEVICE  *PMCI_SYSINFO_LOGDEVICE;
  1794.  
  1795.  
  1796. typedef struct _MCI_SYSINFO_DEVPARAMS {
  1797.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name            */
  1798.     CHAR    szDevParams[MAX_DEV_PARAMS];          /* Device specific parameters     */
  1799. } MCI_SYSINFO_DEVPARAMS;
  1800. typedef MCI_SYSINFO_DEVPARAMS *PMCI_SYSINFO_DEVPARAMS;
  1801.  
  1802. typedef struct _CONNECT {
  1803.     USHORT usConnectType;                         /* Connector type                 */
  1804.     CHAR   szToInstallName[MAX_DEVICE_NAME];      /* Install name this connector    */
  1805.                                                   /*  is connected to               */
  1806.     USHORT usToConnectIndex;                      /* Connector index this connector */
  1807.                                                   /*  is connected to               */
  1808. } CONNECT;
  1809. typedef CONNECT *PCONNECT;
  1810.  
  1811.  
  1812. typedef struct _MCI_SYSINFO_CONPARAMS {
  1813.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name            */
  1814.     USHORT  usNumConnectors;                      /* Number of device connectors    */
  1815.     CONNECT ConnectorList[MAX_CONNECTORS];        /* Connector list array           */
  1816. } MCI_SYSINFO_CONPARAMS;
  1817. typedef MCI_SYSINFO_CONPARAMS *PMCI_SYSINFO_CONPARAMS;
  1818.  
  1819. typedef struct _MCI_SYSINFO_EXTENSION {
  1820.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name            */
  1821.     USHORT  usNumExtensions;                      /* Number of extensions           */
  1822.     CHAR    szExtension[MAX_EXTENSIONS][MAX_EXTENSION_NAME];
  1823.                                                   /* Extension name array           */
  1824. } MCI_SYSINFO_EXTENSION;
  1825. typedef MCI_SYSINFO_EXTENSION *PMCI_SYSINFO_EXTENSION;
  1826.  
  1827. typedef struct _MCI_SYSINFO_ALIAS {
  1828.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name  */
  1829.     CHAR    szAliasName[MAX_ALIAS_NAME];          /* Alias name           */
  1830. } MCI_SYSINFO_ALIAS;
  1831. typedef MCI_SYSINFO_ALIAS *PMCI_SYSINFO_ALIAS;
  1832.  
  1833. typedef struct _MCI_SYSINFO_DEFAULTDEVICE {
  1834.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name  */
  1835.     USHORT  usDeviceType;                         /* Device type number   */
  1836. } MCI_SYSINFO_DEFAULTDEVICE;
  1837. typedef MCI_SYSINFO_DEFAULTDEVICE *PMCI_SYSINFO_DEFAULTDEVICE;
  1838.  
  1839. typedef struct _MCI_SYSINFO_QUERY_NAME {
  1840.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name  */
  1841.     CHAR    szLogicalName[MAX_DEVICE_NAME];       /* Logical device name  */
  1842.     CHAR    szAliasName[MAX_ALIAS_NAME];          /* Alias name           */
  1843.     USHORT  usDeviceType;                         /* Device type number   */
  1844.     USHORT  usDeviceOrd;                          /* Device type ordinal  */
  1845. } MCI_SYSINFO_QUERY_NAME;
  1846. typedef MCI_SYSINFO_QUERY_NAME *PMCI_SYSINFO_QUERY_NAME;
  1847.  
  1848. typedef struct _MCI_SYSINFO_TYPES {
  1849.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name  */
  1850.     CHAR    szTypes[MAX_TYPEBUFFER+1];            /* EA types             */
  1851. } MCI_SYSINFO_TYPES;
  1852. typedef MCI_SYSINFO_TYPES *PMCI_SYSINFO_TYPES;
  1853.  
  1854.  
  1855. /*********************************************************************/
  1856. /* flags for the MCI_UNFREEZE message                                */
  1857. /*     0x00000X00 are reserved for MCI_UNFREEZE flags                */
  1858. /*********************************************************************/
  1859. #define MCI_OVLY_UNFREEZE_RECT              0x00000100L
  1860. #define MCI_OVLY_UNFREEZE_RECT_OUTSIDE      0x00000200L
  1861.  
  1862. /*********************************************************************/
  1863. /* flags for the MCI_WHERE message                                   */
  1864. /*     0x0000XX00 are reserved for MCI_WHERE flags                   */
  1865. /*********************************************************************/
  1866. #define MCI_VID_WHERE_DESTINATION           0x00000100L
  1867. #define MCI_VID_WHERE_SOURCE                0x00000200L
  1868. #define MCI_VID_WHERE_WINDOW                0x00000400L
  1869.  
  1870. #define MCI_DGV_WHERE_DESTINATION           MCI_VID_WHERE_DESTINATION
  1871. #define MCI_DGV_WHERE_SOURCE                MCI_VID_WHERE_SOURCE
  1872. #define MCI_DGV_WHERE_WINDOW                MCI_VID_WHERE_WINDOW
  1873.  
  1874. #define MCI_OVLY_WHERE_DESTINATION          MCI_VID_WHERE_DESTINATION
  1875. #define MCI_OVLY_WHERE_SOURCE               MCI_VID_WHERE_SOURCE
  1876. #define MCI_OVLY_WHERE_WINDOW               MCI_VID_WHERE_WINDOW
  1877.  
  1878. /*********************************************************************/
  1879. /* flags and parameter structure for the MCI_WINDOW message          */
  1880. /*     0x0000XX00   are reserved for MCI_WINDOW flags                */
  1881. /*********************************************************************/
  1882. #define MCI_VID_WINDOW_HWND                 0x00000100L
  1883. #define MCI_VID_WINDOW_STATE                0x00000200L
  1884. #define MCI_VID_WINDOW_TEXT                 0x00000400L
  1885. #define MCI_VID_WINDOW_DEFAULT              0x00000800L
  1886.  
  1887. #define MCI_DGV_WINDOW_HWND                 MCI_VID_WINDOW_HWND
  1888. #define MCI_DGV_WINDOW_STATE                MCI_VID_WINDOW_STATE
  1889. #define MCI_DGV_WINDOW_TEXT                 MCI_VID_WINDOW_TEXT
  1890. #define MCI_DGV_WINDOW_DEFAULT              MCI_VID_WINDOW_DEFAULT
  1891.  
  1892. #define MCI_OVLY_WINDOW_HWND                MCI_VID_WINDOW_HWND
  1893. #define MCI_OVLY_WINDOW_STATE               MCI_VID_WINDOW_STATE
  1894. #define MCI_OVLY_WINDOW_TEXT                MCI_VID_WINDOW_TEXT
  1895. #define MCI_OVLY_WINDOW_DEFAULT             MCI_VID_WINDOW_DEFAULT
  1896.  
  1897. typedef  struct _MCI_VID_WINDOW_PARMS {
  1898.     HWND    hwndCallback;    /* PM window handle for MCI notify message */
  1899.     HWND    hwndDest;        /* Handle to the client window used for    */
  1900.                              /* the destination of the video image      */
  1901.     USHORT  usCmdShow;       /* Specifies how the window is displayed   */
  1902.     USHORT  usReserved1;     /* Reserved                                */
  1903.     PSZ     pszText;         /* The text to use as the window caption   */
  1904.     PSZ     pszAlias;        /* The window alias for the display window */
  1905. } MCI_VID_WINDOW_PARMS;
  1906.  
  1907. typedef MCI_VID_WINDOW_PARMS   MCI_DGV_WINDOW_PARMS;
  1908. typedef MCI_DGV_WINDOW_PARMS   *PMCI_DGV_WINDOW_PARMS;
  1909.  
  1910. typedef MCI_VID_WINDOW_PARMS   MCI_OVLY_WINDOW_PARMS;
  1911. typedef MCI_OVLY_WINDOW_PARMS  *PMCI_OVLY_WINDOW_PARMS;
  1912.  
  1913.  
  1914. #pragma pack()
  1915. /*********************************************************************/
  1916. /*                                                                   */
  1917. /*  MCI system value defines                                         */
  1918. /*                                                                   */
  1919. /*********************************************************************/
  1920. #define MSV_CLOSEDCAPTION                   0x0
  1921. #define MSV_MASTERVOLUME                    0x1
  1922. #define MSV_HEADPHONES                      0x2
  1923. #define MSV_SPEAKERS                        0x3
  1924. #define MSV_WORKPATH                        0x4
  1925. #define MSV_SYSQOSVALUE                     0x5
  1926. #define MSV_SYSQOSERRORFLAG                 0x6
  1927.  
  1928. #define MSV_MAX                             0x7
  1929.  
  1930. #endif                       /* INCL_32 */
  1931.  
  1932. /*********************************************************************/
  1933. /* Playlist defines                                                  */
  1934. /*********************************************************************/
  1935. #define DATA_OPERATION                      0
  1936. #define BRANCH_OPERATION                    1
  1937. #define LOOP_OPERATION                      2
  1938. #define CALL_OPERATION                      3
  1939. #define RETURN_OPERATION                    4
  1940. #define EXIT_OPERATION                      5
  1941. #define NOP_OPERATION                       6
  1942. #define MESSAGE_OPERATION                   7
  1943. #define CUEPOINT_OPERATION                  8
  1944.  
  1945. /*********************************************************************/
  1946. /*                                                                   */
  1947. /*  MCI Function prototypes                                          */
  1948. /*                                                                   */
  1949. /*********************************************************************/
  1950.  
  1951. #ifdef INCL_32
  1952.  
  1953. ULONG APIENTRY mciSendCommand   (USHORT   usDeviceID,
  1954.                                  USHORT   usMessage,
  1955.                                  ULONG    ulParam1,
  1956.                                  PVOID    pParam2,
  1957.                                  USHORT   usUserParm);
  1958.  
  1959. ULONG APIENTRY  mciSendString   (PSZ      pszCommandBuf,
  1960.                                  PSZ      pszReturnString,
  1961.                                  USHORT   wReturnLength,
  1962.                                  HWND     hwndCallBack,
  1963.                                  USHORT   usUserParm );
  1964.  
  1965. ULONG APIENTRY mciGetErrorString(ULONG   ulError,
  1966.                                  PSZ     pszBuffer,
  1967.                                  USHORT  usLength);
  1968.  
  1969.  
  1970. ULONG APIENTRY mciMakeGroup     (PUSHORT pusDeviceGroupID,
  1971.                                  USHORT  usDeviceCount,
  1972.                                  PUSHORT pausDeviceList,
  1973.                                  ULONG   ulFlags,
  1974.                                  ULONG   ulMMTime);
  1975.  
  1976.  
  1977. ULONG APIENTRY mciDeleteGroup   (USHORT   usGroupID);
  1978.  
  1979.  
  1980.  
  1981. BOOL APIENTRY mciSetSysValue (USHORT iSysValue, PVOID pValue);
  1982.  
  1983. BOOL  APIENTRY mciQuerySysValue (USHORT iSysValue, PVOID pValue);
  1984.  
  1985. ULONG  APIENTRY mciGetDeviceID  (PSZ  pszName);
  1986.  
  1987. #else                        /* INCL_32 */
  1988.  
  1989. #define mciSendString mci16SendString
  1990. #define mciGetErrorString mci16GetErrorString
  1991. #define mciGetDeviceID mci16GetDeviceID
  1992.  
  1993. ULONG APIENTRY  mciSendString   (PSZ     pszCommandBuf,
  1994.                                  PSZ     pszReturnString,
  1995.                                  USHORT  usReturnLength,
  1996.                                  HWND    hwndCallBack,
  1997.                                  USHORT  usUserParm );
  1998.  
  1999. ULONG APIENTRY mciGetErrorString    (ULONG    usError,
  2000.                                      PSZ      pszBuffer,
  2001.                                      USHORT   usLength);
  2002.  
  2003. ULONG APIENTRY mciGetDeviceID  (PSZ  pszName);
  2004.  
  2005.  
  2006. #endif                       /* INCL_32 */
  2007.