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

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