home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / header45.zip / mmsystem.h < prev    next >
C/C++ Source or Header  |  1999-04-30  |  143KB  |  2,437 lines

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