/* ** -- HEADER PROLOG -- ***********************************************
 
    Ultimedia System Facilities/400  COPYRIGHT (C) IBM Corporation 1993
             LICENSED MATERIAL-PROGRAM PROPERTY OF IBM
                                                      *** KeyUSHORT *** '%n'
    'FZZMSAPI.H'
 
    DESCRIPTION:
    ------------
    API Entry Point header for SADC PWS Component
 
 
   ** -- HEADER PROLOG END -- *******************************************/
 
 
/* Prototype for API to retrieve an entry from the capabilities file */
USHORT USFENTRY fzzmRtvCapabilitiesEntry(ULONG  ulSectionKeyID,
                                         ULONG  ulEntryKeyID,
                                         ULONG  ulBytesProvided,
                                         PULONG pulBytesAvail,
                                         PSZ    pszCapabiltyEntry);
 
 
 
/* Capabilities Section Key IDs */
#define FZZM_CAP_SECT_SADC_RMD_DEVICE          1
#define FZZM_CAP_SECT_SADC_PWS_DEVICE          2
#define FZZM_CAP_SECT_SADC_AS400_TARGET        3
#define FZZM_CAP_SECT_MMAPI_GEN_SETTINGS       4
 
/* Capabilities Entries Key IDs */
#define FZZM_CAP_ENTRY_SADC_RMD_VIDEOTAPE    1
#define FZZM_CAP_ENTRY_SADC_RMD_VIDEODISC    2
#define FZZM_CAP_ENTRY_SADC_RMD_OTHER        3
#define FZZM_CAP_ENTRY_SADC_VIDEO            4
#define FZZM_CAP_ENTRY_MMAPI_WORK_PATH       5
 
 
 
/* You must include the mmsystem.h header file before fzzmapi.h */
/* in order to get the SADC Remote Media Driver definitions */
#ifdef MCI_USER_MESSAGES
 
 
#ifdef _WINDOWS
#define MCI_FORMAT_MMTIME          32
#endif
 
 
 
#ifndef __RMDMCI_H
#define __RMDMCI_H
 
 
#define MAX_DATA                       250
#define MAX_CUEPOINTS                   20
#define FZZM_LEN_REMOTE_DEVICE_NAME      8
#define FZZM_LEN_SADC_DEVICE_NAME       20
 
 
/*************************************************************/
/*** Flags and Constants common across both Windows & OS/2 ***/
/*************************************************************/
 
/*********************************************************************/
/* The following range of message ID's are reserved for internal use */
/*  by MCI drivers                                                   */
/*********************************************************************/
#define MCI_CONNECT                         MCI_USER_MESSAGES + 1
#define MCI_RECEIVE                         MCI_USER_MESSAGES + 2
#define MCI_SADCSYSINFO                     MCI_USER_MESSAGES + 3
#define MCI_SEND                            MCI_USER_MESSAGES + 4
#define MCI_SET_TUNER_CHANNEL               MCI_USER_MESSAGES + 5
 
 
/*********************************************************************/
/* SADC MCI Device Type Names                                        */
/*********************************************************************/
#define MCI_DEVTYPE_SWITCH_NAME             "Switch"
#define MCI_DEVTYPE_TUNER_NAME              "Tuner"
#define MCI_DEVTYPE_CODEC_NAME              "Codec"
#define MCI_DEVTYPE_CAMERA_NAME             "Camera"
#define MCI_DEVTYPE_SCAN_CONVERTER_NAME     "ScanConverter"
#define MCI_DEVTYPE_SADC_VIDEOTAPE_NAME     "SADCVideotape"
#define MCI_DEVTYPE_SADC_VIDEODISC_NAME     "SADCVideodisc"
#define MCI_DEVTYPE_SADC_OTHER_NAME         "SADCOther"
 
/*********************************************************************/
/* flags for the MCI_CONNECT message                                 */
/*********************************************************************/
   #define MCI_MAKE_CONNECTION                  0x00010000L
   #define MCI_BREAK_CONNECTION                 0x00020000L
   #define MCI_CODEC_MAKE_CALL                  0x00040000L
   #define MCI_CODEC_BREAK_CALL                 0x00080000L
   #define MCI_RELEASE_CONNECTION               0x08000000L
 
/*********************************************************************/
/* USF flags for the MCI_OPEN message                                */
/*********************************************************************/
   #define MCI_NORESET                          0x00100000L
   #define MCI_OPEN_NO_CONNECT                  0x00400000L
   #define MCI_OPEN_USE_ELEMENT_NAME            0x00800000L
 
/*********************************************************************/
/* flags for the MCI_RECEIVE message                                 */
/*********************************************************************/
   #define MCI_RECEIVE_CALL                     0x00000100L
   #define MCI_RECEIVE_DATA                     0x00000200L
 
/*********************************************************************/
/* flags for the MCI_SADCSYSINFO message                             */
/*********************************************************************/
   #define MCI_SADCSYSINFO_QUANTITY             0x00000100L
   #define MCI_SADCSYSINFO_OPEN                 0x00000200L
   #define MCI_SADCSYSINFO_NOT_OPEN             0x00010000L
 
/*********************************************************************/
/* flags for the MCI_SEND message                                    */
/*********************************************************************/
   #define MCI_SEND_STRING                      0x00000100L
   #define MCI_SEND_GRAPHIC                     0x00000200L
 
/*********************************************************************/
/* Flags for the MCI_SET message                                     */
/*********************************************************************/
 
   /******************************************************************/
   /* MCI_SET flags for video codecs                                 */
   /******************************************************************/
   #define MCI_CODEC_SET_VIDEO_PIP              0x01000000L
   #define MCI_CODEC_SET_AUDIO                  0x02000000L
   #define MCI_CODEC_SET_VIDEO                  0x04000000L
 
   /******************************************************************/
   /* MCI_SET ulSource constants for video codecs                    */
   /******************************************************************/
   #define MCI_CODEC_SET_SOURCE_FAREND          0x00100000L
   #define MCI_CODEC_SET_SOURCE_BLACK           0x00200000L
   #define MCI_CODEC_SET_SOURCE_MAIN            0x00300000L
   #define MCI_CODEC_SET_SOURCE_VCR             0x00400000L
   #define MCI_CODEC_SET_SOURCE_DOCUMENT        0x00500000L
   #define MCI_CODEC_SET_SOURCE_GRAPHIC         0x00600000L
 
   /******************************************************************/
   /* MCI_SET ulDestination constants for video codecs               */
   /******************************************************************/
   #define MCI_CODEC_SET_DESTINATION_MAIN       0x00700000L
   #define MCI_CODEC_SET_DESTINATION_PIP        0x00800000L
   #define MCI_CODEC_SET_DESTINATION_VCR        0x00900000L
 
/*********************************************************************/
/* flags for the MCI_SET_TUNER_CHANNEL message                       */
/*********************************************************************/
   #define MCI_SET_TUNER_CHANNEL_UP             0x00000100L
   #define MCI_SET_TUNER_CHANNEL_DOWN           0x00000200L
   #define MCI_SET_TUNER_CHANNEL_NUMBER         0x00000400L
 
/************************/
/*** MCI_STATUS items ***/
/************************/
 
   /*************************************************/
   /* MCI_STATUS_ITEM constants for the video codec */
   /*************************************************/
   #define MCI_CODEC_STATUS_MODEM_DIALED        0x0000000CL
 
   /***********************************************/
   /* return values for video codec status        */
   /***********************************************/
   #define MCI_CODEC_MODE_STOP                  0x00000000L
   #define MCI_CODEC_MODE_ONHOOK                0x00000001L
   #define MCI_CODEC_MODE_WAIT_DIAL_TONE        0x00000002L
   #define MCI_CODEC_MODE_OFFHOOK               0x00000003L
   #define MCI_CODEC_MODE_INCOME_CALL           0x00000004L
   #define MCI_CODEC_MODE_CONNECTIONG           0x00000005L
   #define MCI_CODEC_MODE_NET_CONNECT           0x00000006L
   #define MCI_CODEC_MODE_VID_CONNECT           0x00000007L
   #define MCI_CODEC_MODE_LOCAL_DISC            0x00000008L
   #define MCI_CODEC_MODE_REMOTE_DISC           0x00000009L
   #define MCI_CODEC_MODE_WAIT_STOP             0x0000000AL
 
 
#ifdef __OS2_H__
 
 
/*********************************************************************/
/* SADC MCI Device Type Constants for MMPM/2s                        */
/*********************************************************************/
#define MCI_DEVTYPE_SWITCH                  42
#define MCI_DEVTYPE_TUNER                   43
#define MCI_DEVTYPE_CODEC                   44
#define MCI_DEVTYPE_CAMERA                  45
#define MCI_DEVTYPE_SCAN_CONVERTER          46
 
 
/********************************************/
/*** Client Server/400 MCI error messages ***/
/********************************************/
 
#define MCIERR_DEVICE_NOT_RESPONDING    (MCIERR_CUSTOM_DRIVER_BASE +  1)
#define MCIERR_LINE_NAME_NOT_FOUND      (MCIERR_CUSTOM_DRIVER_BASE + 10)
#define MCIERR_SADC_CONNECTION_NOT_MADE (MCIERR_CUSTOM_DRIVER_BASE + 11)
#define MCIERR_SADC_SYSTEMCHANGED       (MCIERR_CUSTOM_DRIVER_BASE + 12)
 
/*****************************************************************/
/*** Client Server/400 SADC device specific MCI error messages ***/
/*****************************************************************/
 
#define MCIERR_DEVICE_BASE               5300
 
#define MCIERR_COMMUNICATION_ERROR       (MCIERR_DEVICE_BASE + 0)
#define MCIERR_FEATURE_NOT_AVAILABLE     (MCIERR_DEVICE_BASE + 4)
#define MCIERR_MISSING_ARGUMENT          (MCIERR_DEVICE_BASE + 6 )
#define MCIERR_DISC_NOT_LOADED           (MCIERR_DEVICE_BASE + 11)
#define MCIERR_SEARCH_ERROR              (MCIERR_DEVICE_BASE + 12)
#define MCIERR_DEFOCUSSING_ERROR         (MCIERR_DEVICE_BASE + 13)
#define MCIERR_PICTURE_STOPPED           (MCIERR_DEVICE_BASE + 15)
#define MCIERR_INTERRUPT_BY_PANEL_KEYS   (MCIERR_DEVICE_BASE + 16)
#define MCIERR_CHANGER_ERROR             (MCIERR_DEVICE_BASE + 20)
#define MCIERR_CHANGER_DOOR_OPEN         (MCIERR_DEVICE_BASE + 21)
#define MCIERR_CHANGER_NOT_SET           (MCIERR_DEVICE_BASE + 22)
 
#define MCIERR_POWER_OFF                 (MCIERR_DEVICE_BASE + 30)
#define MCIERR_ADDRESS_CANNOT_BE_READ    (MCIERR_DEVICE_BASE + 31)
#define MCIERR_TAPE_NOT_LOADED           (MCIERR_DEVICE_BASE + 32)
#define MCIERR_COMMAND_INCORRECT         (MCIERR_DEVICE_BASE + 34)
#define MCIERR_PARAMETERS_INCORRECT      (MCIERR_DEVICE_BASE + 35)
#define MCIERR_RECEPTION_BUFFER_OVERFLOW (MCIERR_DEVICE_BASE + 36)
#define MCIERR_HEADER_CANNOT_BE_READ     (MCIERR_DEVICE_BASE + 38)
#define MCIERR_CANNOT_EXECUTE_COMMAND    (MCIERR_DEVICE_BASE + 39)
 
#define MCIERR_MEDIA_ERROR               (MCIERR_DEVICE_BASE + 80)
#define MCIERR_UNRECOVERABLE_ERROR       (MCIERR_DEVICE_BASE + 99)
 
/*********************************************************************/
/* parameters for the MCI_CONNECT message                            */
/*********************************************************************/
 
   /*********************************************************************/
   /* MCI_CONNECT parameter structure                                   */
   /*********************************************************************/
   typedef struct _MCI_CONNECT_PARMS {
      HWND     hwndCallback;        // PM window handle for MCI notify message
      USHORT   usDeviceConnector;   // Specifies the source device connector
      USHORT   usToDeviceID;        // Target device to connect
      USHORT   usToDeviceConnector; // Specifies the target device connector
      } MCI_CONNECT_PARMS ;
 
   typedef MCI_CONNECT_PARMS        *PMCI_CONNECT_PARMS ;
 
   /******************************************************************/
   /* MCI_CODEC_CONNECT parameter structure                          */
   /******************************************************************/
   typedef struct _MCI_CODEC_CONNECT_PARMS {
      HWND     hwndCallback;         // PM window handle for MCI notify message
      ULONG    ulNumPhoneNumbers;    // # of phone numbers to use
      CHAR     szPhoneNumber[2][65]; // phone numbers to call
   }  MCI_CODEC_CONNECT_PARMS;
 
   typedef MCI_CODEC_CONNECT_PARMS  *PMCI_CODEC_CONNECT_PARMS;
 
 
/*********************************************************************/
/* parameters for the MCI_RECEIVE message                            */
/*********************************************************************/
 
   /******************************************************************/
   /* MCI_RECEIVE parameter structure                                */
   /******************************************************************/
   typedef struct _MCI_RECEIVE_PARMS {
      HWND     hwndCallback;         // PM window handle for MCI notify message
      ULONG    ulDataLen;
      CHAR     szDataQ[21];
      CHAR     szData[MAX_DATA];
      }  MCI_RECEIVE_PARMS;
 
   typedef MCI_RECEIVE_PARMS        *PMCI_RECEIVE_PARMS;
 
 
 
/*********************************************************************/
/* parameters for the MCI_SADCSYSINFO message                        */
/*********************************************************************/
 
   /******************************************************************/
   /* MCI_SADCSYSINFO_PARMS parameter structure                      */
   /******************************************************************/
   typedef struct _MCI_SADCSYSINFO_PARMS {
      HWND     hwndCallback;         // PM window handle for MCI notify message
      PSZ      pszReturn;            // Pointer to return buffer
      ULONG    ulRetSize;            // Return buffer size
      ULONG    ulNumber;             // Ordinal Number
      USHORT   usDeviceType;         // MCI device type number
      USHORT   usReserved0;          // Reserved field
      ULONG    ulItem;               // Used to indicate the MCI_SYSINFO
      PVOID    pSysInfoParm;
      }  MCI_SADCSYSINFO_PARMS;
 
   typedef MCI_SADCSYSINFO_PARMS    *PMCI_SADCSYSINFO_PARMS;
 
 
 
/*********************************************************************/
/* parameters for the MCI_SEND message                               */
/*********************************************************************/
 
   /******************************************************************/
   /* MCI_SEND_PARMS parameter structure as defined in OS/2          */
   /******************************************************************/
   typedef struct _MCI_SEND_PARMS {
      HWND     hwndCallback;         // PM window handle for MCI notify message
      ULONG    ulDataLen;            // Length of data to send
      CHAR     szData[MAX_DATA];     // Data to send
   }  MCI_SEND_PARMS;
 
   typedef MCI_SEND_PARMS           *PMCI_SEND_PARMS;
 
 
 
/*********************************************************************/
/* Flags for the MCI_SET message                                     */
/*********************************************************************/
 
   /******************************************************************/
   /* MCI_CODEC_SET_PARMS parameter structure as defined by USF      */
   /******************************************************************/
   typedef struct _MCI_CODEC_SET_PARMS {
      HWND     hwndCallback;         // PM window handle for MCI notify message
      ULONG    ulTimeFormat;
      ULONG    ulSpeedFormat;
      ULONG    ulAudio;
      ULONG    ulLevel;
      ULONG    ulOver;
      ULONG    ulItem;
      ULONG    ulValue;
      ULONG    ulSource;             // Video codec source
      ULONG    ulDestination;        // Video codec destination
   }  MCI_CODEC_SET_PARMS;
 
   typedef MCI_CODEC_SET_PARMS      *PMCI_CODEC_SET_PARMS;
 
 
 
/*********************************************************************/
/* parameters for the MCI_SET_TUNER_CHANNEL message                  */
/*********************************************************************/
 
   /******************************************************************/
   /* MCI_SET_TUNER_CHANNEL_PARMS structure                          */
   /******************************************************************/
   typedef struct _MCI_SET_TUNER_PARM {
      HWND     hwndCallback;         // PM window handle for MCI notify message
      ULONG    ulChannel;            // Channel number for this operation
 
   }  MCI_SET_TUNER_PARMS ;
 
   typedef MCI_SET_TUNER_PARMS      *PMCI_SET_TUNER_PARMS;
 
 
 
#else  /***************  WINDOWS  SECTION **********************************/
 
 
 
/*********************************************************************/
/* OS/2 MCI Device Type Constants for Windows                        */
/*********************************************************************/
 
#define MCI_DEVTYPE_VIDEOTAPE                MCI_DEVTYPE_VCR
#define MCI_DEVTYPE_AUDIO_TAPE              (MCI_DEVTYPE_LAST +  1)
#define MCI_DEVTYPE_AUDIO_AMPMIX            (MCI_DEVTYPE_LAST +  2)
#define MCI_DEVTYPE_SPEAKER                 (MCI_DEVTYPE_LAST +  3)
#define MCI_DEVTYPE_HEADPHONE               (MCI_DEVTYPE_LAST +  4)
#define MCI_DEVTYPE_MICROPHONE              (MCI_DEVTYPE_LAST +  5)
#define MCI_DEVTYPE_MONITOR                 (MCI_DEVTYPE_LAST +  6)
#define MCI_DEVTYPE_CDXA                    (MCI_DEVTYPE_LAST +  7)
 
/*********************************************************************/
/* SADC MCI Device Type Constants for Windows                        */
/*********************************************************************/
#define MCI_DEVTYPE_TUNER                   (MCI_DEVTYPE_LAST +  8)
#define MCI_DEVTYPE_CODEC                   (MCI_DEVTYPE_LAST +  9)
#define MCI_DEVTYPE_CAMERA                  (MCI_DEVTYPE_LAST + 10)
#define MCI_DEVTYPE_SCAN_CONVERTER          (MCI_DEVTYPE_LAST + 11)
#define MCI_DEVTYPE_SWITCH                  (MCI_DEVTYPE_LAST + 12)
#define MCI_DEVTYPE_SADC_VIDEOTAPE           MCI_DEVTYPE_VCR
#define MCI_DEVTYPE_SADC_VIDEODISC           MCI_DEVTYPE_VIDEODISC
#define MCI_DEVTYPE_SADC_OTHER               MCI_DEVTYPE_OTHER
 
/*********************************************************************/
/* OS/2 MCI Device Type Names                                        */
/*********************************************************************/
#define MCI_DEVTYPE_VIDEOTAPE_NAME          "Videotape"
#define MCI_DEVTYPE_VIDEODISC_NAME          "Videodisc"
#define MCI_DEVTYPE_CD_AUDIO_NAME           "CDaudio"
#define MCI_DEVTYPE_DAT_NAME                "DAT"
#define MCI_DEVTYPE_AUDIO_TAPE_NAME         "Audiotape"
#define MCI_DEVTYPE_OTHER_NAME              "Other"
#define MCI_DEVTYPE_WAVEFORM_AUDIO_NAME     "Waveaudio"
#define MCI_DEVTYPE_SEQUENCER_NAME          "Sequencer"
#define MCI_DEVTYPE_AUDIO_AMPMIX_NAME       "Ampmix"
#define MCI_DEVTYPE_OVERLAY_NAME            "Overlay"
#define MCI_DEVTYPE_ANIMATION_NAME          "Animation"
#define MCI_DEVTYPE_DIGITAL_VIDEO_NAME      "Digitalvideo"
#define MCI_DEVTYPE_SPEAKER_NAME            "Speaker"
#define MCI_DEVTYPE_HEADPHONE_NAME          "Headphone"
#define MCI_DEVTYPE_MICROPHONE_NAME         "Microphone"
#define MCI_DEVTYPE_MONITOR_NAME            "Monitor"
#define MCI_DEVTYPE_CDXA_NAME               "CDXA"
 
 
 
 
/*********************************************************************/
/* flags for the MCI_CONNECT message                                 */
/*********************************************************************/
   #define MCI_CONNECTOR_INDEX                  0x10000000L
   #define MCI_TO_CONNECTOR_INDEX               0x20000000L
 
/*********************************************************************/
/* parameters for the MCI_CONNECT message                            */
/*********************************************************************/
 
   /*********************************************************************/
   /* MCI_CONNECT parameter structure                                   */
   /*********************************************************************/
   typedef struct _MCI_CONNECT_PARMS {
      DWORD     dwCallback;           // Window handle for MCI notify message
      WORD      wDeviceConnector;     // Source device connector
      WORD      wToDeviceID;          // Target device to connect
      WORD      wToDeviceConnector;   // Target device connector
      }  MCI_CONNECT_PARMS ;
 
   typedef MCI_CONNECT_PARMS FAR  *LPMCI_CONNECT_PARMS ;
 
   /******************************************************************/
   /* MCI_CODEC_CONNECT parameter structure                          */
   /******************************************************************/
   typedef struct _MCI_CODEC_CONNECT_PARMS {
      DWORD     dwCallback;           // Window handle for MCI notify message
      DWORD     dwNumPhoneNumbers;    // # of phone numbers to use
      CHAR      szPhoneNumber[2][65]; // phone numbers to call
   }  MCI_CODEC_CONNECT_PARMS;
 
   typedef MCI_CODEC_CONNECT_PARMS  FAR *LPMCI_CODEC_CONNECT_PARMS;
 
 
 
/*********************************************************************/
/* parameters for the MCI_ESCAPE message                             */
/*********************************************************************/
   #define MCI_ESCAPE_STRING          MCI_VD_ESCAPE_STRING
   typedef MCI_VD_ESCAPE_PARMS        MCI_ESCAPE_PARMS;
   typedef MCI_VD_ESCAPE_PARMS FAR *LPMCI_ESCAPE_PARMS;
 
 
/*********************************************************************/
/* parameters/flags/constants/structures for the MCI_GETDEVCAPS      */
/*   message when used with the USF Remote Media Driver to support   */
/*   the OS/2 calling conventions                                    */
/*********************************************************************/
   #define MCI_GETDEVCAPS_MESSAGE               0x01000000L
 
   /******************************************************************/
   /* OS/2 MCI constants for MCI_GETDEVCAPS_ITEM in Windows          */
   /******************************************************************/
   #define MCI_GETDEVCAPS_CAN_RECORD_INSERT     0x00000010L
   #define MCI_GETDEVCAPS_CAN_SETVOLUME         0x00000011L
   #define MCI_GETDEVCAPS_CAN_PROCESS_INTERNAL  0x00000012L
   #define MCI_GETDEVCAPS_CAN_LOCKEJECT         0x00000013L
 
   /******************************************************************/
   /* OS/2 MCI Videodisc constants for MCI_GETDEVCAPS_ITEM in Windows*/
   /******************************************************************/
 
   #define MCI_VD_GETDEVCAPS_MINIMUM_RATE       0x00004006L
   #define MCI_VD_GETDEVCAPS_MAXIMUM_RATE       0x00004007L
 
   /******************************************************************/
   /* OS/2 parameter structure for Windows MCI_GETDEVCAPS message    */
   /******************************************************************/
   typedef struct _FZZM_GETDEVCAPS_PARMS
   {
       DWORD   dwCallback;   /* Window handle for MCI notify message */
       DWORD   dwReturn;     /* Return field                         */
       DWORD   dwItem;       /* Item for GETDEVCAPS item to query    */
       WORD    wMessage;     /* Field to hold MCI message to query   */
       WORD    wReserved0;   /* Reserved field                       */
   } FZZM_GETDEVCAPS_PARMS;
 
   typedef FZZM_GETDEVCAPS_PARMS FAR * LPFZZM_GETDEVCAPS_PARMS;
 
 
 
/*********************************************************************/
/* OS2 parameters and flags for use with Windows MCI_INFO message    */
/*********************************************************************/
   #define MCI_VD_INFO_LABEL                    0x00100000L
 
 
 
/*********************************************************************/
/* parameters for the MCI_RECEIVE message                            */
/*********************************************************************/
 
   /******************************************************************/
   /* MCI_RECEIVE parameter structure                                */
   /******************************************************************/
   typedef struct _MCI_RECEIVE_PARMS {
       DWORD   dwCallback;   /* Window handle for MCI notify message */
       DWORD   dwDataLen;
       CHAR    szDataQ[21];
       CHAR    szData[MAX_DATA];
       } MCI_RECEIVE_PARMS;
 
   typedef MCI_RECEIVE_PARMS FAR * LPMCI_RECEIVE_PARMS;
 
 
 
/*********************************************************************/
/* parameters for the MCI_SADCSYSINFO message                        */
/*********************************************************************/
 
   /******************************************************************/
   /* MCI_SADCSYSINFO_PARMS parameter structure                      */
   /******************************************************************/
   typedef struct _MCI_SADCSYSINFO_PARMS
   {
      DWORD   dwCallback;    /* Window handle for MCI notify message */
      LPSTR   lpstrReturn;   /* Pointer to return buffer             */
      DWORD   dwRetSize;     /* Return buffer size                   */
      DWORD   dwNumber;      /* Ordinal Number                       */
      WORD    wDeviceType;   /* MCI device type number               */
      WORD    wReserved0;    /* Reserved field                       */
      DWORD   dwItem;        /* Used to indicate the MCI_SYSINFO     */
      LPVOID  pSysInfoParm;
   }  MCI_SADCSYSINFO_PARMS;
 
   typedef MCI_SADCSYSINFO_PARMS  FAR *LPMCI_SADCSYSINFO_PARMS;
 
 
 
/*********************************************************************/
/* parameters for the MCI_SEEK message                               */
/*********************************************************************/
   #define MCI_TO_END                           MCI_SEEK_TO_END
   #define MCI_TO_START                         MCI_SEEK_TO_START
 
 
 
/*********************************************************************/
/* parameters for the MCI_SEND message                               */
/*********************************************************************/
 
   /******************************************************************/
   /* MCI_SEND_PARMS parameter structure as defined in OS/2          */
   /******************************************************************/
   typedef struct _MCI_SEND_PARMS {
      DWORD   dwCallback;    /* Window handle for MCI notify message */
      DWORD   dwDataLen;
      CHAR    szData[MAX_DATA];
   }  MCI_SEND_PARMS;
 
   typedef MCI_SEND_PARMS  FAR *LPMCI_SEND_PARMS;
 
 
 
/*********************************************************************/
/* Flags for the MCI_SET message                                     */
/*********************************************************************/
   #define MCI_SET_ITEM                         0x00100000L
   #define MCI_SET_SPEED_FORMAT                 0x00200000L
   #define MCI_SET_DOOR_LOCK                    0x00400000L
   #define MCI_SET_DOOR_UNLOCK                  0x00800000L
   #define MCI_SET_VOLUME                       0x00080000L
 
   /******************************************************************/
   /* FZZM_SET_PARMS parameter structure as defined in OS/2          */
   /*    use this structure in place of Windows MCI_SET_PARMS        */
   /******************************************************************/
   typedef struct _FZZM_SET_PARMS
   {
      DWORD   dwCallback;    /* Window handle for MCI notify message */
      DWORD   dwTimeFormat;
      DWORD   dwSpeedFormat;
      DWORD   dwAudio;
      DWORD   dwLevel;
      DWORD   dwOver;
      DWORD   dwItem;
      DWORD   dwValue;
   }  FZZM_SET_PARMS;
 
   typedef FZZM_SET_PARMS        FAR *LPFZZM_SET_PARMS;
 
   /*******************************************************/
   /* MCI_SET flags for videodisc                         */
   /*******************************************************/
   #define MCI_VD_SET_CHANNEL                   0x10000000L
   #define MCI_VD_SET_DISPLAY                   0x20000000L
 
   /****************************************************************/
   /* MCI_SET_TIME_FORMAT time constants used by USF for videodisc */
   /****************************************************************/
   #define MCI_FORMAT_MMTIME                    32
   #define MCI_FORMAT_HMSF                      33
 
   /******************************************************************/
   /* MCI_VD_SET_PARMS parameter structure as defined in OS/2        */
   /******************************************************************/
   typedef struct _MCI_VD_SET_PARMS
   {
      DWORD   dwCallback;    /* Window handle for MCI notify message */
      DWORD   dwTimeFormat;
      DWORD   dwSpeedFormat;
      DWORD   dwAudio;
      DWORD   dwLevel;
      DWORD   dwOver;
      DWORD   dwItem;
      DWORD   dwValue;
      DWORD   dwChannel;
   }  MCI_VD_SET_PARMS;
 
   typedef MCI_VD_SET_PARMS      FAR *LPMCI_VD_SET_PARMS;
 
   /******************************************************************/
   /* MCI_CODEC_SET_PARMS parameter structure as defined by USF      */
   /******************************************************************/
   typedef struct _MCI_CODEC_SET_PARMS {
      DWORD   dwCallback;    /* Window handle for MCI notify message */
      DWORD   dwTimeFormat;
      DWORD   dwSpeedFormat;
      DWORD   dwAudio;
      DWORD   dwLevel;
      DWORD   dwOver;
      DWORD   dwItem;
      DWORD   dwValue;
      DWORD   dwSource;
      DWORD   dwDestination;
      }  MCI_CODEC_SET_PARMS;
 
   typedef MCI_CODEC_SET_PARMS   FAR *LPMCI_CODEC_SET_PARMS;
 
 
 
/*********************************************************************/
/* parameters for the MCI_SET_TUNER_CHANNEL message                  */
/*********************************************************************/
 
   /******************************************************************/
   /* MCI_SET_TUNER_CHANNEL_PARMS structure                          */
   /******************************************************************/
   typedef struct _MCI_SET_TUNER_PARMS  {
      DWORD   dwCallback;    /* Window handle for MCI notify message */
      DWORD   dwChannel;
      }  MCI_SET_TUNER_PARMS ;
 
   typedef MCI_SET_TUNER_PARMS   FAR *LPMCI_SET_TUNER_PARMS;
 
 
 
/*********************************************************************/
/* additional flags for the MCI_SPIN message                         */
/*********************************************************************/
   #define MCI_SPIN_UP                          MCI_VD_SPIN_UP
   #define MCI_SPIN_DOWN                        MCI_VD_SPIN_DOWN
 
 
 
/************************/
/*** MCI_STATUS items ***/
/************************/
 
   /*******************************************************/
   /* MCI_STATUS_ITEM OS/2 constants supported by the RMD */
   /*******************************************************/
   #define MCI_STATUS_POSITION_IN_TRACK         0x0000000AL
   #define MCI_STATUS_VOLUME                    0x0000000BL
 
 
 
/*********************************************************************/
/* additional flags for the MCI_STEP message                         */
/*********************************************************************/
   #define MCI_STEP_FRAMES                      MCI_VD_STEP_FRAMES
   #define MCI_STEP_REVERSE                     MCI_VD_STEP_REVERSE
 
 
   /******************************************************************/
   /* MCI_STEP_PARMS parameter structure as defined in OS/2 this     */
   /* structure is equivalent to Windows MCI_VD_SET_PARMS structure  */
   /******************************************************************/
   typedef struct _MCI_STEP_PARMS {
      DWORD   dwCallback;    /* Window handle for MCI notify message */
      DWORD   dwStep;
   }  MCI_STEP_PARMS;
 
   typedef MCI_STEP_PARMS        FAR *LPMCI_STEP_PARMS;
 
 
 
/***************************************************/
/*** OS/2 - Client Server/400 MCI error messages ***/
/***************************************************/
 
#define MCIERR_SUCCESS                  0
#define MCIERR_NO_MASTER                (MCIERR_CUSTOM_DRIVER_BASE + 2)
#define MCIERR_MASTER_CONFLICT          (MCIERR_CUSTOM_DRIVER_BASE + 4)
#define MCIERR_CANNOT_ADD_ALIAS         (MCIERR_CUSTOM_DRIVER_BASE + 27)
#define MCIERR_CANNOT_USE_NOUNLOAD      (MCIERR_CUSTOM_DRIVER_BASE + 29)
#define MCIERR_INSTANCE_INACTIVE        (MCIERR_CUSTOM_DRIVER_BASE + 34)
#define MCIERR_COMMAND_TABLE            (MCIERR_CUSTOM_DRIVER_BASE + 35)
#define MCIERR_INI_FILE_LOCKED          (MCIERR_CUSTOM_DRIVER_BASE + 37)
#define MCIERR_NO_AUDIO_SUPPORT         (MCIERR_CUSTOM_DRIVER_BASE + 40)
#define MCIERR_NOT_IN_PM_SESSION        (MCIERR_CUSTOM_DRIVER_BASE + 41)
#define MCIERR_DUPLICATE_KEYWORD        (MCIERR_CUSTOM_DRIVER_BASE + 42)
#define MCIERR_COMMAND_STRING_OVERFLOW  (MCIERR_CUSTOM_DRIVER_BASE + 43)
#define MCIERR_DRIVER_PROC_NOT_FOUND    (MCIERR_CUSTOM_DRIVER_BASE + 44)
#define MCIERR_INVALID_DEVICE_TYPE      (MCIERR_CUSTOM_DRIVER_BASE + 45)
#define MCIERR_INVALID_DEVICE_ORDINAL   (MCIERR_CUSTOM_DRIVER_BASE + 46)
#define MCIERR_HEADPHONES_NOT_SET       (MCIERR_CUSTOM_DRIVER_BASE + 47)
#define MCIERR_SPEAKERS_NOT_SET         (MCIERR_CUSTOM_DRIVER_BASE + 48)
#define MCIERR_SOUND_NOT_SET            (MCIERR_CUSTOM_DRIVER_BASE + 49)
#define MCIERR_INVALID_BUFFER           (MCIERR_CUSTOM_DRIVER_BASE + 50)
#define MCIERR_INVALID_MEDIA_TYPE       (MCIERR_CUSTOM_DRIVER_BASE + 51)
#define MCIERR_INVALID_CONNECTOR_INDEX  (MCIERR_CUSTOM_DRIVER_BASE + 52)
#define MCIERR_NO_CONNECTION            (MCIERR_CUSTOM_DRIVER_BASE + 53)
#define MCIERR_INVALID_FLAG             (MCIERR_CUSTOM_DRIVER_BASE + 54)
#define MCIERR_CANNOT_LOAD_DSP_MOD      (MCIERR_CUSTOM_DRIVER_BASE + 55)
#define MCIERR_ALREADY_CONNECTED        (MCIERR_CUSTOM_DRIVER_BASE + 56)
#define MCIERR_INVALID_CALLBACK_HANDLE  (MCIERR_CUSTOM_DRIVER_BASE + 57)
#define MCIERR_DRIVER_NOT_FOUND         (MCIERR_CUSTOM_DRIVER_BASE + 58)
#define MCIERR_DUPLICATE_DRIVER         (MCIERR_CUSTOM_DRIVER_BASE + 59)
#define MCIERR_INI_FILE                 (MCIERR_CUSTOM_DRIVER_BASE + 60)
#define MCIERR_INVALID_GROUP_ID         (MCIERR_CUSTOM_DRIVER_BASE + 61)
#define MCIERR_ID_ALREADY_IN_GROUP      (MCIERR_CUSTOM_DRIVER_BASE + 62)
#define MCIERR_MEDIA_CHANGED            (MCIERR_CUSTOM_DRIVER_BASE + 63)
#define MCIERR_MISSING_FLAG             (MCIERR_CUSTOM_DRIVER_BASE + 64)
#define MCIERR_UNSUPPORTED_FLAG         (MCIERR_CUSTOM_DRIVER_BASE + 65)
#define MCIERR_DRIVER_NOT_LOADED        (MCIERR_CUSTOM_DRIVER_BASE + 66)
#define MCIERR_INVALID_MODE             (MCIERR_CUSTOM_DRIVER_BASE + 67)
#define MCIERR_INVALID_ITEM_FLAG        (MCIERR_CUSTOM_DRIVER_BASE + 68)
#define MCIERR_INVALID_TIME_FORMAT_FLAG (MCIERR_CUSTOM_DRIVER_BASE + 69)
#define MCIERR_SPEED_FORMAT_FLAG        (MCIERR_CUSTOM_DRIVER_BASE + 70)
#define MCIERR_INVALID_AUDIO_FLAG       (MCIERR_CUSTOM_DRIVER_BASE + 71)
#define MCIERR_NODEFAULT_DEVICE         (MCIERR_CUSTOM_DRIVER_BASE + 72)
#define MCIERR_DUPLICATE_EXTENSION      (MCIERR_CUSTOM_DRIVER_BASE + 73)
#define MCIERR_FILE_ATTRIBUTE           (MCIERR_CUSTOM_DRIVER_BASE + 74)
#define MCIERR_DUPLICATE_CUEPOINT       (MCIERR_CUSTOM_DRIVER_BASE + 75)
#define MCIERR_INVALID_CUEPOINT         (MCIERR_CUSTOM_DRIVER_BASE + 76)
#define MCIERR_CUEPOINT_LIMIT_REACHED   (MCIERR_CUSTOM_DRIVER_BASE + 77)
#define MCIERR_MISSING_ITEM             (MCIERR_CUSTOM_DRIVER_BASE + 78)
#define MCIERR_MISSING_TIME_FORMAT      (MCIERR_CUSTOM_DRIVER_BASE + 79)
#define MCIERR_MISSING_SPEED_FORMAT     (MCIERR_CUSTOM_DRIVER_BASE + 80)
#define MCIERR_INVALID_CONNECTOR_TYPE   (MCIERR_CUSTOM_DRIVER_BASE + 81)
#define MCIERR_TARGET_DEVICE_FULL       (MCIERR_CUSTOM_DRIVER_BASE + 82)
#define MCIERR_UNSUPPORTED_CONN_TYPE    (MCIERR_CUSTOM_DRIVER_BASE + 83)
#define MCIERR_CANNOT_MODIFY_CONNECTOR  (MCIERR_CUSTOM_DRIVER_BASE + 84)
#define MCIERR_RECORD_ABORTED           (MCIERR_CUSTOM_DRIVER_BASE + 85)
#define MCIERR_GROUP_COMMAND            (MCIERR_CUSTOM_DRIVER_BASE + 86)
#define MCIERR_DEVICE_NOT_FOUND         (MCIERR_CUSTOM_DRIVER_BASE + 87)
#define MCIERR_RESOURCE_NOT_AVAILABLE   (MCIERR_CUSTOM_DRIVER_BASE + 88)
#define MCIERR_INVALID_IO_PROC          (MCIERR_CUSTOM_DRIVER_BASE + 89)
#define MCIERR_VDP_COMMANDCANCELLED     (MCIERR_CUSTOM_DRIVER_BASE + 106)
#define MCIERR_VDP_COMMANDFAILURE       (MCIERR_CUSTOM_DRIVER_BASE + 107)
#define MCIERR_VDP_NOTSPUNUP            (MCIERR_CUSTOM_DRIVER_BASE + 108)
#define MCIERR_VDP_NOCHAPTER            (MCIERR_CUSTOM_DRIVER_BASE + 109)
#define MCIERR_VDP_NOSIDE               (MCIERR_CUSTOM_DRIVER_BASE + 110)
#define MCIERR_VDP_NOSIZE               (MCIERR_CUSTOM_DRIVER_BASE + 111)
#define MCIERR_VDP_INVALID_TIMEFORMAT   (MCIERR_CUSTOM_DRIVER_BASE + 112)
#define MCIERR_CLIPBOARD_ERROR          (MCIERR_CUSTOM_DRIVER_BASE + 114)
#define MCIERR_CANNOT_CONVERT           (MCIERR_CUSTOM_DRIVER_BASE + 115)
#define MCIERR_CANNOT_REDO              (MCIERR_CUSTOM_DRIVER_BASE + 116)
#define MCIERR_CANNOT_UNDO              (MCIERR_CUSTOM_DRIVER_BASE + 117)
#define MCIERR_CLIPBOARD_EMPTY          (MCIERR_CUSTOM_DRIVER_BASE + 118)
#define MCIERR_INVALID_WORKPATH         (MCIERR_CUSTOM_DRIVER_BASE + 119)
#define MCIERR_INDETERMINATE_LENGTH     (MCIERR_CUSTOM_DRIVER_BASE + 120)
#define MCIERR_DUPLICATE_EA             (MCIERR_CUSTOM_DRIVER_BASE + 121)
#define MCIERR_INVALID_CONNECTION       (MCIERR_CUSTOM_DRIVER_BASE + 122)
#define MCIERR_CHANNEL_OFF              (MCIERR_CUSTOM_DRIVER_BASE + 123)
#define MCIERR_CANNOT_CHANGE_CHANNEL    (MCIERR_CUSTOM_DRIVER_BASE + 124)
#define MCIERR_FILE_IO                  (MCIERR_CUSTOM_DRIVER_BASE + 125)
#define MCIERR_SYSTEM_FILE              (MCIERR_CUSTOM_DRIVER_BASE + 126)
#define MCIERR_DISPLAY_RESOLUTION       (MCIERR_CUSTOM_DRIVER_BASE + 127)
#define MCIERR_NO_ASYNC_PLAY_ACTIVE     (MCIERR_CUSTOM_DRIVER_BASE + 128)
#define MCIERR_UNSUPP_FORMAT_TAG        (MCIERR_CUSTOM_DRIVER_BASE + 129)
#define MCIERR_UNSUPP_SAMPLESPERSEC     (MCIERR_CUSTOM_DRIVER_BASE + 130)
#define MCIERR_UNSUPP_BITSPERSAMPLE     (MCIERR_CUSTOM_DRIVER_BASE + 131)
#define MCIERR_UNSUPP_CHANNELS          (MCIERR_CUSTOM_DRIVER_BASE + 132)
#define MCIERR_UNSUPP_FORMAT_MODE       (MCIERR_CUSTOM_DRIVER_BASE + 133)
#define MCIERR_NO_DEVICE_DRIVER         (MCIERR_CUSTOM_DRIVER_BASE + 134)
#define MCIERR_CODEC_NOT_SUPPORTED      (MCIERR_CUSTOM_DRIVER_BASE + 135)
 
#define MCIERR_LINE_NAME_NOT_FOUND      (MCIERR_CUSTOM_DRIVER_BASE + 136)
#define MCIERR_SADC_CONNECTION_NOT_MADE (MCIERR_CUSTOM_DRIVER_BASE + 137)
#define MCIERR_SADC_SYSTEMCHANGED       (MCIERR_CUSTOM_DRIVER_BASE + 138)
#define MCIERR_DEVICE_NOT_RESPONDING    (MCIERR_CUSTOM_DRIVER_BASE + 139)
 
/***************************************************************/
/*** Windows Remote Media Driver internal MCI error messages ***/
/***************************************************************/
 
#define MCIERR_LOAD_USF                 (MCIERR_CUSTOM_DRIVER_BASE + 140)
#define MCIERR_LOAD_DATAQ               (MCIERR_CUSTOM_DRIVER_BASE + 141)
#define MCIERR_OPEN_USF_INITIALIZE      (MCIERR_CUSTOM_DRIVER_BASE + 142)
#define MCIERR_OPEN_USF_COMM_INFO       (MCIERR_CUSTOM_DRIVER_BASE + 143)
#define MCIERR_OPEN_USF_PWS_ID          (MCIERR_CUSTOM_DRIVER_BASE + 144)
#define MCIERR_OPEN_MAX_DEVICE_LIMIT_20 (MCIERR_CUSTOM_DRIVER_BASE + 145)
#define MCIERR_WIN_TIMER_LIMIT          (MCIERR_CUSTOM_DRIVER_BASE + 146)
#define MCIERR_PWS_DATAQ_TIMEOUT        (MCIERR_CUSTOM_DRIVER_BASE + 147)
#define MCIERR_PWS_DATAQ_RETBUFF        (MCIERR_CUSTOM_DRIVER_BASE + 148)
#define MCIERR_PWS_DATAQ_RECEIVE        (MCIERR_CUSTOM_DRIVER_BASE + 149)
 
/*****************************************************************/
/*** Client Server/400 SADC device specific MCI error messages ***/
/*****************************************************************/
 
#define MCIERR_DEVICE_BASE               (MCIERR_CUSTOM_DRIVER_BASE + 288)
 
#define MCIERR_COMMUNICATION_ERROR       (MCIERR_DEVICE_BASE + 0)
#define MCIERR_FEATURE_NOT_AVAILABLE     (MCIERR_DEVICE_BASE + 4)
#define MCIERR_MISSING_ARGUMENT          (MCIERR_DEVICE_BASE + 6 )
#define MCIERR_DISC_NOT_LOADED           (MCIERR_DEVICE_BASE + 11)
#define MCIERR_SEARCH_ERROR              (MCIERR_DEVICE_BASE + 12)
#define MCIERR_DEFOCUSSING_ERROR         (MCIERR_DEVICE_BASE + 13)
#define MCIERR_PICTURE_STOPPED           (MCIERR_DEVICE_BASE + 15)
#define MCIERR_INTERRUPT_BY_PANEL_KEYS   (MCIERR_DEVICE_BASE + 16)
#define MCIERR_CHANGER_ERROR             (MCIERR_DEVICE_BASE + 20)
#define MCIERR_CHANGER_DOOR_OPEN         (MCIERR_DEVICE_BASE + 21)
#define MCIERR_CHANGER_NOT_SET           (MCIERR_DEVICE_BASE + 22)
 
#define MCIERR_POWER_OFF                 (MCIERR_DEVICE_BASE + 30)
#define MCIERR_ADDRESS_CANNOT_BE_READ    (MCIERR_DEVICE_BASE + 31)
#define MCIERR_TAPE_NOT_LOADED           (MCIERR_DEVICE_BASE + 32)
#define MCIERR_COMMAND_INCORRECT         (MCIERR_DEVICE_BASE + 34)
#define MCIERR_PARAMETERS_INCORRECT      (MCIERR_DEVICE_BASE + 35)
#define MCIERR_RECEPTION_BUFFER_OVERFLOW (MCIERR_DEVICE_BASE + 36)
#define MCIERR_HEADER_CANNOT_BE_READ     (MCIERR_DEVICE_BASE + 38)
#define MCIERR_CANNOT_EXECUTE_COMMAND    (MCIERR_DEVICE_BASE + 39)
 
#define MCIERR_MEDIA_ERROR               (MCIERR_DEVICE_BASE + 80)
#define MCIERR_UNRECOVERABLE_ERROR       (MCIERR_DEVICE_BASE + 99)
 
#endif
#endif
 
#endif /* MCI_USER_MESSAGES */
