/**************************************************************************/
/*                                                                        */
/*  MCIFTDD.H                                                             */
/*                                                                        */
/*  This file defines the API types and constants for the Mwave FAX & TAM */
/*  interfaces.                                                           */
/*                                                                        */
/*------------------------------------------------------------------------*/

#ifdef __OS2__
#define MMPM_ONLY  /* force MMPM style if running on OS/2 */
#endif

#define MCI_DIAL                                    MCI_USER_MESSAGES+1
#define MCI_SEND                                    MCI_USER_MESSAGES+2
#ifndef MMPM_ONLY   /* APC...ewt mmpm already defines this */
#define MCI_CONVERT                                 MCI_USER_MESSAGES+3
#endif
#define MCI_RECEIVE                                 MCI_USER_MESSAGES+4

/***SML***********************************************************************/

#define MCI_FAX_GETDEVCAPS_MODEM_TYPES               0x00010000L
#define MCI_FAX_GETDEVCAPS_COMPRESSION_TYPES         0x00020000L
#define MCI_FAX_GETDEVCAPS_CAN_RECEIVE               0x00030000L
#define MCI_FAX_GETDEVCAPS_CAN_SEND                  0x00040000L
#define MCI_FAX_GETDEVCAPS_HAS_HANDSET               0x00050000L
#define MCI_FAX_GETDEVCAPS_SUPPORTS_ECM              0x00090000L
#define MCI_FAX_GETDEVCAPS_POLLING                   0x000A0000L
#define MCI_FAX_GETDEVCAPS_FILE_FORMATS              0x000B0000L
#define MCI_FAX_GETDEVCAPS_RESOLUTION                0x000C0000L
#define MCI_FAX_GETDEVCAPS_WIDTH                     0x000D0000L
/*
#define MCI_FAX_GETDEVCAPS_SERIAL_COMMAND_CLASS1     0x00060000L
#define MCI_FAX_GETDEVCAPS_SERIAL_COMMAND_CLASS2     0x00070000L
#define MCI_FAX_GETDEVCAPS_SERIAL_PORT               0x00080000L
*/

#define MCI_TAM_GETDEVCAPS_SUPPORTS_CUSTOM_TAG       0x00010000L
#define MCI_TAM_GETDEVCAPS_SUPPORTS_PCM_TAG          0x00020000L


/***SML***********************************************************************/

/* constants used with the MCI_SEND message */
#define MCI_SEND_FILE                                0x00010000L
#define MCI_FAX_CLEAR_SEND_FILE                      0x00020000L
/* note MCI_ALREADY_DIALED also used for send and recieve */

typedef struct {
    DWORD dwCallback;
    LPCSTR lpstrFilename;
    } MCI_SEND_PARMS;

typedef MCI_SEND_PARMS  FAR *LPMCI_SEND_PARMS;

/***SML***********************************************************************/

#define MCI_DIAL_DIALMODE                            0x00010000L
#define MCI_DIAL_STRING                              0x00020000L
#define MCI_DIAL_VERIFY                              0x00040000L
#define MCI_DIAL_MONITOR                             0x00080000L
#define MCI_DIAL_FLASH                               0x00100000L
#define MCI_DIAL_MONITOR_HANDSHAKING_ONLY            0x00200000L

#define MCI_DIAL_MODE_PULSE                          0x00010000L
#define MCI_DIAL_MODE_TONE                           0x00020000L

typedef struct {
    DWORD dwCallback;
    DWORD dwDialMode;
    LPCSTR lpstrDialString;
    } MCI_DIAL_PARMS;
typedef MCI_DIAL_PARMS  FAR *LPMCI_DIAL_PARMS;
/***SML***********************************************************************/


#ifndef MMPM_ONLY   /* APC...ewt mmpm already defines this */
#define MCI_SET_ITEM                                 0x00010000L
#endif
#define MCI_FAX_SET_AUDIO_VOLUME                     0x00010000L
#define MCI_FAX_SET_CALL_FILTER                      0x00020000L
#define MCI_FAX_SET_COMPRESSION_TYPES                0x00030000L
#define MCI_FAX_SET_DIAL_FLASH_TIME                  0x00040000L
#define MCI_FAX_SET_DIAL_PAUSE_TIME                  0x00050000L
#define MCI_FAX_SET_DIAL_WAIT_TIME                   0x00060000L
#define MCI_FAX_SET_ECM_LEVEL                        0x00070000L
#define MCI_FAX_SET_EVENT_HANDLER                    0x00080000L
#define MCI_FAX_SET_HOOK                             0x00090000L
#define MCI_FAX_SET_MODEM_TYPES                      0x000A0000L
#define MCI_FAX_SET_RESOLUTION                       0x000B0000L
#define MCI_FAX_SET_RING_COUNT                       0x000C0000L
#define MCI_FAX_SET_STATION_ID                       0x000E0000L
#define MCI_FAX_SET_POLLING                          0x000F0000L
#define MCI_FAX_SET_API_STYLE                        0x00100000L  /* APC */
#define MCI_FAX_SET_CALLER_ID                        0x00200000L  /* APC    */
/*
#define MCI_FAX_SET_SERIAL_COMMUNICATIONS            0x000D0000L
*/

#define MCI_FAX_FORMAT_PAGES                         0x00000001L

#define MCI_FAX_COMPRESSION_MH                       0x00000001L
#define MCI_FAX_COMPRESSION_MR                       0x00000002L
#define MCI_FAX_COMPRESSION_MMR                      0x00000004L
#define MCI_FAX_COMPRESSION_NONE                     0x00000008L
#define MCI_FAX_COMPRESSION_BFT                      0x00000010L
#define MCI_FAX_COMPRESSION_ANY                      0x00000020L
#define MCI_FAX_COMPRESSION_1D                       0x00000040L
#define MCI_FAX_COMPRESSION_2D                       0x00000080L

#define MCI_FAX_ECM_POOR_LINE                        0x00000001L
#define MCI_FAX_ECM_AVERAGE_LINE                     0x00000002L
#define MCI_FAX_ECM_QUALITY_LINE                     0x00000004L
#define MCI_FAX_ECM_NONE                             0x00000008L

#define MCI_FAX_LINE_ONHOOK                          0x00000001L
#define MCI_FAX_LINE_DIALTONE                        0x00000002L
#define MCI_FAX_LINE_BUSY                            0x00000003L
#define MCI_FAX_LINE_RINGTONE                        0x00000004L
#define MCI_FAX_LINE_FAX_CARRIER                     0x00000005L
#define MCI_FAX_LINE_UNKNOWN                         0x00000006L
#define MCI_FAX_LINE_FASTBUSY                        0x00000007L
#define MCI_FAX_LINE_QUIET                           0x00000008L

#define MCI_PHONE_LINE_ONHOOK                        0x00000001L
#define MCI_PHONE_LINE_DIALTONE                      0x00000002L
#define MCI_PHONE_LINE_BUSY                          0x00000003L
#define MCI_PHONE_LINE_RINGTONE                      0x00000004L
#define MCI_PHONE_LINE_UNKNOWN                       0x00000006L

#define MCI_FAX_MODEM_V27TER_2400                    0x00000001L
#define MCI_FAX_MODEM_V27TER_4800                    0x00000002L
#define MCI_FAX_MODEM_V29_7200                       0x00000004L
#define MCI_FAX_MODEM_V29_9600                       0x00000008L
#define MCI_FAX_MODEM_V17_7200                       0x00000010L
#define MCI_FAX_MODEM_V17_9600                       0x00000020L
#define MCI_FAX_MODEM_V17_12000                      0x00000040L
#define MCI_FAX_MODEM_V17_14400                      0x00000080L
#define MCI_FAX_MODEM_ANY                            0x00000100L

#define TIFF_CLASS_F                                 0x00000001L
#define DCX                                          0x00000002L
#define RIFF                                         0x00000004L
#define TIFF_6                                       0x00000008L

#define MCI_FAX_RESOLUTION_NORMAL                    0x00000001L
#define MCI_FAX_RESOLUTION_FINE                      0x00000002L

#define MCI_FAX_SERIAL_COM_CLASS1                    0x00000001L
#define MCI_FAX_SERIAL_COM_CLASS2                    0x00000002L
#define MCI_FAX_SERIAL_COM_DISABLED                  0x00000004L

#define MCI_FAXTAM_STYLE_MMPM                        0x00000001L  /* APC */
#define MCI_FAXTAM_STYLE_WINDOWS                     0x00000002L  /* APC */

#define MCI_TAM_SET_AVGBYTESPERSEC                   0x00010000L
#define MCI_TAM_SET_AUDIO_VOLUME                     0x00020000L
#define MCI_TAM_SET_BITSPERSAMPLE                    0x00030000L
#define MCI_TAM_SET_CALL_FILTER                      0x00040000L
#define MCI_TAM_SET_CONNECT                          0x00050000L
#define MCI_TAM_SET_DIAL_FLASH_TIME                  0x00060000L
#define MCI_TAM_SET_DIAL_PAUSE_TIME                  0x00070000L
#define MCI_TAM_SET_DIAL_WAIT_TIME                   0x00080000L
#define MCI_TAM_SET_EVENT_HANDLER                    0x00090000L
#define MCI_TAM_SET_FORMATTAG                        0x000A0000L
#define MCI_TAM_SET_HANDSET_VOLUME                   0x000B0000L
#define MCI_TAM_SET_HOOK                             0x000C0000L
#define MCI_TAM_SET_QUALITY                          0x000D0000L
#define MCI_TAM_SET_RING_COUNT                       0x000E0000L
#define MCI_TAM_SET_SAMPLESPERSEC                    0x000F0000L
#define MCI_TAM_SET_SPEED                            0x00100000L
#define MCI_TAM_SET_AUDIO_MUTE                       0x00200000L  /*addendum*/
#define MCI_TAM_SET_HANDSET_MUTE                     0x00300000L  /*addendum*/
#define MCI_TAM_SET_QUIET_DURATION                   0x00400000L
#define MCI_TAM_SET_API_STYLE                        0x00500000L  /* APC    */
#define MCI_TAM_SET_CALLER_ID                        0x00600000L  /* APC    */

#define MCI_TAM_AUDIO                                0x00000001L
#define MCI_TAM_HANDSET                              0x00000002L
#define MCI_TAM_PHONELINE                            0x00000004L
#define MCI_TAM_SPEAKER                              0x00000008L
#define MCI_TAM_AUDIO_PHONELINE        (MCI_TAM_AUDIO | MCI_TAM_PHONELINE)
#define MCI_TAM_HANDSET_PHONELINE      (MCI_TAM_HANDSET | MCI_TAM_PHONELINE)
#define MCI_TAM_SPEAKER_PHONELINE      (MCI_TAM_SPEAKER | MCI_TAM_PHONELINE)

#define TAM_WAVE_FORMAT_CUSTOM                       0x00000002L


typedef struct {
    DWORD dwCallback;

#ifdef MMPM_ONLY  /* APC mmpm string interface needs to define item first */
    DWORD dwItem;
#endif

    DWORD dwSetData;

#ifndef MMPM_ONLY  /* APC this is for windows */
    DWORD dwItem;
#endif

    } MCI_TAM_SET_PARMS;
typedef MCI_TAM_SET_PARMS  FAR *LPMCI_TAM_SET_PARMS;

typedef struct {
    DWORD dwCallback;
#ifdef MMPM_ONLY  /* APC mmpm string interface needs to define item first */
    DWORD dwItem;
#endif

    DWORD dwSetData;

#ifndef MMPM_ONLY    /* APC this is for windows */
    DWORD dwItem;
#endif
    } MCI_FAX_SET_PARMS;
typedef MCI_FAX_SET_PARMS  FAR *LPMCI_FAX_SET_PARMS;
/***SML***********************************************************************/

/* constants used with the MCI_STATUS message */
#define MCI_FAX_STATUS_MODEM_TYPES                   0x00010000L
#define MCI_FAX_STATUS_AUDIO_VOLUME                  0x00030000L
#define MCI_FAX_STATUS_CALL_FILTER                   0x00040000L
#define MCI_FAX_STATUS_COMPRESSION_TYPES             0x00050000L
#define MCI_FAX_STATUS_DIAL_PAUSE_TIME               0x00060000L
#define MCI_FAX_STATUS_DIAL_WAIT_TIME                0x00070000L
#define MCI_FAX_STATUS_ECM_LEVEL                     0x00080000L
#define MCI_FAX_STATUS_HANDSET                       0x00090000L
#define MCI_FAX_STATUS_HANDSET_VOLUME                0x000A0000L
#define MCI_FAX_STATUS_HOOK                          0x000B0000L
#define MCI_FAX_STATUS_LINE                          0x000C0000L
#define MCI_FAX_STATUS_RESOLUTION                    0x000E0000L
#define MCI_FAX_STATUS_RING_COUNT                    0x000F0000L
#define MCI_FAX_STATUS_DIAL_FLASH_TIME               0x00200000L
#define MCI_FAX_STATUS_STATION_ID                    0x00300000L
#define MCI_FAX_STATUS_POLLING                       0x00400000L
/*
#define MCI_FAX_STATUS_TIME_FORMAT                   0x00020000L
#define MCI_FAX_STATUS_PAGE_COUNT                    0x000D0000L
#define MCI_FAX_STATUS_SERIAL_COMMUNICATIONS         0x00100000L
*/
#define MCI_FAX_STATUS_CALLER_ID                     0x00500000L

#define MCI_TAM_STATUS_AUDIO_VOLUME                  0x00010000L
#define MCI_TAM_STATUS_FORMATTAG                     0x00020000L
#define MCI_TAM_STATUS_HANDSET_VOLUME                0x00030000L
#define MCI_TAM_STATUS_QUALITY                       0x00040000L
#define MCI_TAM_STATUS_SPEED                         0x00050000L
#define MCI_TAM_STATUS_AVGBYTESPERSEC                0x00060000L
#define MCI_TAM_STATUS_BITSPERSAMPLE                 0x00070000L
#define MCI_TAM_STATUS_CONNECT                       0x00080000L
#define MCI_TAM_STATUS_CALL_FILTER                   0x00090000L
#define MCI_TAM_STATUS_DIAL_FLASH_TIME               0x000A0000L
#define MCI_TAM_STATUS_DIAL_PAUSE_TIME               0x000B0000L
#define MCI_TAM_STATUS_DIAL_WAIT_TIME                0x000C0000L
#define MCI_TAM_STATUS_HANDSET                       0x000D0000L
#define MCI_TAM_STATUS_HOOK                          0x000E0000L
#define MCI_TAM_STATUS_LINE                          0x000F0000L
#define MCI_TAM_STATUS_RING_COUNT                    0x00100000L
#define MCI_TAM_STATUS_SAMPLESPERSEC                 0x00200000L
#define MCI_TAM_STATUS_AUDIO_MUTE                    0x00300000L  /*addendum*/
#define MCI_TAM_STATUS_HANDSET_MUTE                  0x00400000L  /*addendum*/
#define MCI_TAM_STATUS_QUIET_DURATION                0x00500000L
#define MCI_TAM_STATUS_CALLER_ID                     0x00600000L

#define MCI_MODE_RECEIVE                             0x00000001L
#define MCI_MODE_SEND                                0x00000002L

#define MCI_CALLER_ID_ACTIVE                         0x00000001L
#define MCI_CALLER_ID_DISABLED                       0x00000002L
#define MCI_CALLER_ID_NOT_SUPPORTED                  0x00000003L

/*
typedef struct {
    DWORD dwCallback;
    DWORD dwReturn;
    DWORD dwItem;
    } MCI_STATUS_PARMS;
typedef MCI_STATUS_PARMS  FAR *LPMCI_STATUS_PARMS;
*/
/***SML***********************************************************************/

/* constants used with the MCI_CONVERT message */
#define MCI_CONVERT_CREATE                           0x00010000L
#define MCI_CONVERT_DESTINATION_FILE                 0x00020000L
#define MCI_CONVERT_DESTINATION_FORMAT               0x00040000L
#define MCI_CONVERT_DESTINATION_FROM                 0x00080000L
#define MCI_CONVERT_INFO                             0x00100000L
#define MCI_CONVERT_OVERWRITE                        0x00200000L
#define MCI_CONVERT_SOURCE_FILE                      0x00400000L
#define MCI_CONVERT_SOURCE_FROM                      0x00800000L
#define MCI_CONVERT_LENGTH                           0x01000000L

#define MCI_CONVERT_FMT_DIB_BMP                      0x00010000L
#define MCI_CONVERT_FMT_DIB_RLE                      0x00020000L
#define MCI_FAX_CONVERT_FMT_DEVFAX                   0x00040000L

typedef struct {
    DWORD dwCallback;
    LPCSTR lpstrDestFilename;
    DWORD dwDestFormat;
    DWORD dwDestFrom;
    DWORD dwLength;
    LPCSTR lpstrSrcFilename;
    DWORD dwSrcFrom;
    } MCI_CONVERT_PARMS;
typedef MCI_CONVERT_PARMS  FAR *LPMCI_CONVERT_PARMS;
/***SML***********************************************************************/

/* constants used with the MCI_RECEIVE message */
#define MCI_RECEIVE_FILE                             0x00010000L
/* constant used with MCI_RECEIVE and MCI_SEND */
#define MCI_ALREADY_CONNECTED                        0x00030000L

typedef struct {
    DWORD dwCallback;
    LPCSTR lpstrFilename;
    } MCI_RECEIVE_PARMS;
typedef MCI_RECEIVE_PARMS  FAR *LPMCI_RECEIVE_PARMS;
/***SML***********************************************************************/

/* constants used with the MCI_PLAY/RECORD message */
#define MCI_TAM_BEEP                                 0x00020000L   /*TM 5 Feb*/

/***SML***********************************************************************/

/* constants used with the MCI_RECORD message */
#define MCI_TAM_TO_MESSAGE_END                       0x00010000L
/* constant used with MCI_RECEIVE and MCI_SEND */
#define MCI_ALREADY_DIALED                           0x00030000L

/***SML**APC**added caller id 9/9/93 *****************************************/

/* constants used with the CALLER_ID          */
#define MCI_VALID_CALLER_ID_RECEIVED                 0x00000001L
#define MCI_CALLER_ID_FRAME_ERROR                    0x00000002L
#define MCI_MAX_CALLER_ID_SIZE                       256
/* the 150 & 151 on the next lines is flakey, but necessary    */
/* because RC files don't handle +, so I can't build off of a  */
/* base define.  In any case, under windows and OS/2,          */
/* MCI_INFO_PRODUCT are 100, so 200 and 400 should be safe     */
#define MCI_INFO_CALLER_ID                           0x00000200L
#define MCI_INFO_CALLER_ID_ERROR                     0x00000400L
/***APC***********************************************************************/

#define PHONE_EVENT_CALLER_ID                        0x0001
#define PHONE_EVENT_HANDSET                          0x0002
#define PHONE_EVENT_HANDSET_KEY                      0x0003
#define PHONE_EVENT_LINE                             0x0004
#define PHONE_EVENT_LINE_KEY                         0x0005
#define PHONE_EVENT_RING                             0x0006
#define PHONE_EVENT_CALL_TERMINATED                  0x0007
#define PHONE_EVENT_CALL_PROGRESS                    0x0008

#define PHONE_EVENT_CALL_FAX                         0x0010
#define PHONE_EVENT_FAX_COMPRESSION                  0x0020
#define PHONE_EVENT_FAX_HEADER                       0x0030
#define PHONE_EVENT_FAX_PAGE_COMPLETE                0x0040
#define PHONE_EVENT_FAX_PAGE_STATUS                  0x0050
#define PHONE_EVENT_FAX_CONNECT                      0x0060
#define PHONE_EVENT_FAX_POLL                         0x0070

#define PHONE_EVENT_CALL_TAM                         0x0100
#define PHONE_EVENT_CALL_DIS                         0x0200

#define TERMINATION_NORMAL                           0x00000001L
#define TERMINATION_REQUESTED                        0x00000002L
#define TERMINATION_UNEXPECTED                       0x00000003L
#define TERMINATION_ERROR_XMIT                       0x00000004L
#define TERMINATION_ERROR_RECV                       0x00000005L

#define DIALTONE                                     0x00000001L
#define ANSWERTONE                                   0x00000002L
#define SLOWBUSY                                     0x00000003L
#define FASTBUSY                                     0x00000004L
#define RINGTONE                                     0x00000005L
#define UNIDENTIFIEDTONE                             0x00000006L
#define QUIET                                        0x00000007L
#define BUSY                                         0x00000008L

#define CALL_PROGRESS_DIAL_TONE                      0x00000001L
#define CALL_PROGRESS_ANSWER_TONE                    0x00000002L
#define CALL_PROGRESS_SLOW_BUSY                      0x00000003L
#define CALL_PROGRESS_FAST_BUSY                      0x00000004L
#define CALL_PROGRESS_REMOTE_RINGING                 0x00000005L
#define CALL_PROGRESS_UNIDENTIFIED_TONE              0x00000006L
#define CALL_PROGRESS_QUIET                          0x00000007L
#define CALL_PROGRESS_BUSY                           0x00000008L

typedef struct
{
   DWORD dwDataParam1;
   DWORD dwEventData;
} MCI_EVENT_PARMS;

typedef MCI_EVENT_PARMS FAR *LPMCI_EVENT_PARMS;

typedef struct
{
   DWORD dwSignalRate;
   DWORD dwCompression;
   DWORD dwErrorCorrection;
   DWORD dwResolution;
   DWORD dwWidth;
   DWORD dwMinScanLineTime;
} MCI_FAX_CONNECT_PARMS;

typedef MCI_FAX_CONNECT_PARMS FAR *LPMCI_FAX_CONNECT_PARMS;

/* first defines are to support mmpm mci string interface dwreturn types */
#define MCI_USER_RETURN_COMPRESS                 0xFF02
#define MCI_USER_RETURN_MODEMS                   0xFF03
#define MCI_USER_RETURN_RESOLUTION               0xFF04
#define MCI_USER_RETURN_FILE_FORMATS             0xFF05
#define MCI_USER_RETURN_LINE                     0xFF06
#define MCI_USER_RETURN_CALLER_ID                0xFF07
/***SML***********************************************************************/

/*****************************************************************************/
/*                               MCI Error Codes                             */
/*****************************************************************************/

#define MCIERR_NO_ERROR                                                      0


#define MCIERR_FT    MCIERR_CUSTOM_DRIVER_BASE          /* 512 under windows*/
#define MCIERR_FAX   MCIERR_CUSTOM_DRIVER_BASE + 101    /* 613 */
#define MCIERR_TAM   MCIERR_CUSTOM_DRIVER_BASE + 301    /* 813 */
#define MCIERR_TIFF  MCIERR_CUSTOM_DRIVER_BASE + 513    /* 1025 */
#define MCIERR_DIS   MCIERR_CUSTOM_DRIVER_BASE + 401    /* 913  */
#define MCIERR_MEIO  MCIERR_CUSTOM_DRIVER_BASE + 801    /* 1313 */

/**
 ** Error Codes Shared by Fax and Tam Drivers
 **/
#define MCIERR_FT_DSP_NO_RESOURCES               MCIERR_FT + 0
#define MCIERR_FT_DSP_FILE_NOT_FOUND             MCIERR_FT + 1
#define MCIERR_FT_DSP_LABEL_NOT_FOUND            MCIERR_FT + 2
#define MCIERR_FT_DSP_INVALID_HANDLE             MCIERR_FT + 3
#define MCIERR_FT_DSP_CALL_FAILED                MCIERR_FT + 4
#define MCIERR_FT_UNRECOGNIZED_COMMAND           MCIERR_FT + 5
#define MCIERR_FT_CMD_COMPLETE_NOT_RTN           MCIERR_FT + 6
#define MCIERR_FT_UNRECOGNIZED_MODE              MCIERR_FT + 7
#define MCIERR_FT_POSTMESSAGE                    MCIERR_FT + 8
#define MCIERR_FT_MAKEPROCINSTANCE               MCIERR_FT + 9
#define MCIERR_FT_SETWINDOWSHOOKEX               MCIERR_FT + 10
#define MCIERR_FT_GLOBALALLOC                    MCIERR_FT + 11
#define MCIERR_FT_GLOBALLOCK                     MCIERR_FT + 12
#define MCIERR_FT_GLOBALPAGELOCK                 MCIERR_FT + 13
#define MCIERR_FT_GLOBALUNLOCK                   MCIERR_FT + 14
#define MCIERR_FT_GLOBALPAGEUNLOCK               MCIERR_FT + 15
#define MCIERR_FT_GLOBALFREE                     MCIERR_FT + 16
#define MCIERR_FT_DSP_HARDWARE_IN_USE            MCIERR_FT + 17
#define MCIERR_FT_DSP_HARDWARE_UNAVAILABLE       MCIERR_FT + 18
#define MCIERR_FT_MEIO_MIC_S1_TO_CDADC_S1        MCIERR_FT + 19
#define MCIERR_FT_MEIO_MIC_L1_TO_VOICEADC_1      MCIERR_FT + 20
#define MCIERR_FT_MEIO_HANDIN_1_TO_VOICEADC_1    MCIERR_FT + 21
#define MCIERR_FT_MEIO_HANDIN_1_TO_TELEOUT_1     MCIERR_FT + 22
#define MCIERR_FT_MEIO_CDDAC_S1_TO_LINEOUT_S1    MCIERR_FT + 23
#define MCIERR_FT_MEIO_CDDAC_S1_TO_INTSPKROUT_L1 MCIERR_FT + 24
#define MCIERR_FT_MEIO_TELEDAC_1_TO_TELEOUT_1    MCIERR_FT + 25
#define MCIERR_FT_MEIO_VOICEDAC_1_TO_HANDOUT_1   MCIERR_FT + 26
#define MCIERR_FT_INSUFFICIENT_MIPS              MCIERR_FT + 27
#define MCIERR_FT_INVALID_ABS_SEG_START          MCIERR_FT + 28
#define MCIERR_FT_INI_LABEL_NOT_FOUND            MCIERR_FT + 29
#define MCIERR_FT_CALLER_ID_NOT_VALID            MCIERR_FT + 30
#ifndef MMPM_ONLY    /* mmpm already defines this rc */
#define MCIERR_INVALID_BUFFER                    MCIERR_FT + 31
#endif
/**
 ** MCI Errors for Fax Driver
 **/
#define MCIERR_FAX_GLOBALALLOC                   MCIERR_FAX + 0
#define MCIERR_FAX_GLOBALLOCK                    MCIERR_FAX + 1
#define MCIERR_FAX_GLOBALUNLOCK                  MCIERR_FAX + 2
#define MCIERR_FAX_GLOBALFREE                    MCIERR_FAX + 3
#define MCIERR_FAX_LCLOSE                        MCIERR_FAX + 4
#define MCIERR_FAX_LLSEEK                        MCIERR_FAX + 5
#define MCIERR_FAX_LREAD                         MCIERR_FAX + 6
#define MCIERR_FAX_LSTRCPY                       MCIERR_FAX + 7
#define MCIERR_FAX_OPENFILE                      MCIERR_FAX + 8
#define MCIERR_FAX_POSTMESSAGE                   MCIERR_FAX + 9
#define MCIERR_FAX_NO_ELEMENT_ALLOWED            MCIERR_FAX + 10
#define MCIERR_FAX_FLAGS_NOT_COMPATIBLE          MCIERR_FAX + 11
#define MCIERR_FAX_UNRECOGNIZED_KEYWORD          MCIERR_FAX + 12
#define MCIERR_FAX_CANNOT_SET_HOOK               MCIERR_FAX + 13
#define MCIERR_FAX_UNRECOGNIZED_COMMAND          MCIERR_FAX + 14
#define MCIERR_FAX_UNRECOGNIZED_FLAG             MCIERR_FAX + 15
#define MCIERR_FAX_INVALID_DIAL_DIGIT            MCIERR_FAX + 16
#define MCIERR_FAX_NULL_DIAL_STRING              MCIERR_FAX + 17
#define MCIERR_FAX_FILENAME_REQUIRED             MCIERR_FAX + 18
#define MCIERR_FAX_UNSUPPORTED_FUNCTION          MCIERR_FAX + 19
#define MCIERR_FAX_MISSING_FLAG                  MCIERR_FAX + 20
#define MCIERR_FAX_GLOBALREALLOC                 MCIERR_FAX + 21
#define MCIERR_FAX_LSTRCAT                       MCIERR_FAX + 22
#define MCIERR_FAX_WRONG_COMMAND                 MCIERR_FAX + 23
#define MCIERR_FAX_COMMAND_REJECT                MCIERR_FAX + 24
#define MCIERR_FAX_NO_FREE_STATUS_BLOCK          MCIERR_FAX + 25
#define MCIERR_FAX_UNRECOGNIZED_STATUS           MCIERR_FAX + 26
#define MCIERR_FAX_GLOBALPAGEUNLOCK              MCIERR_FAX + 27
#define MCIERR_FAX_LWRITE                        MCIERR_FAX + 29
#define MCIERR_FAX_UNRECOGNIZED_STREAM_ID        MCIERR_FAX + 30
#define MCIERR_FAX_INVALID_CONFIG                MCIERR_FAX + 31
#define MCIERR_FAX_FILTER_NOT_SET                MCIERR_FAX + 32
#define MCIERR_FAX_MULTIPLE_OPEN                 MCIERR_FAX + 33
#define MCIERR_FAX_TASK_NOT_FOUND                MCIERR_FAX + 34
/* #define MCIERR_FAX_DATA_INCORRECT                MCIERR_FAX + 35 */
#define MCIERR_FAX_INVALID_HANDLE                MCIERR_FAX + 35

#define MCIERR_FAX_CONFLICT_FLAGS                MCIERR_FAX + 36
#define MCIERR_FAX_INVALID_STATE                 MCIERR_FAX + 36

/**
 ** MCI Errors for Tam Driver
 **/
#define MCIERR_TAM_GLOBALALLOC                   MCIERR_TAM + 0
#define MCIERR_TAM_GLOBALLOCK                    MCIERR_TAM + 1
#define MCIERR_TAM_GLOBALUNLOCK                  MCIERR_TAM + 2
#define MCIERR_TAM_GLOBALFREE                    MCIERR_TAM + 3
#define MCIERR_TAM_LCLOSE                        MCIERR_TAM + 4
#define MCIERR_TAM_LLSEEK                        MCIERR_TAM + 5
#define MCIERR_TAM_LREAD                         MCIERR_TAM + 6
#define MCIERR_TAM_LSTRCPY                       MCIERR_TAM + 7
#define MCIERR_TAM_OPENFILE                      MCIERR_TAM + 8
#define MCIERR_TAM_POSTMESSAGE                   MCIERR_TAM + 9
#define MCIERR_TAM_NO_ELEMENT_ALLOWED            MCIERR_TAM + 10
#define MCIERR_TAM_FLAGS_NOT_COMPATIBLE          MCIERR_TAM + 11
#define MCIERR_TAM_UNRECOGNIZED_KEYWORD          MCIERR_TAM + 12
#define MCIERR_TAM_CANNOT_SET_HOOK               MCIERR_TAM + 13
#define MCIERR_TAM_UNRECOGNIZED_COMMAND          MCIERR_TAM + 14
#define MCIERR_TAM_UNRECOGNIZED_FLAG             MCIERR_TAM + 15
#define MCIERR_TAM_INVALID_DIAL_DIGIT            MCIERR_TAM + 16
#define MCIERR_TAM_NULL_DIAL_STRING              MCIERR_TAM + 17
#define MCIERR_TAM_FILENAME_REQUIRED             MCIERR_TAM + 18
#define MCIERR_TAM_UNSUPPORTED_FUNCTION          MCIERR_TAM + 19
#define MCIERR_TAM_MISSING_FLAG                  MCIERR_TAM + 20
#define MCIERR_TAM_GLOBALREALLOC                 MCIERR_TAM + 21
#define MCIERR_TAM_LSTRCAT                       MCIERR_TAM + 22
#define MCIERR_TAM_WRONG_COMMAND                 MCIERR_TAM + 23
#define MCIERR_TAM_COMMAND_REJECT                MCIERR_TAM + 24
#define MCIERR_TAM_NO_FREE_STATUS_BLOCK          MCIERR_TAM + 25
#define MCIERR_TAM_UNRECOGNIZED_STATUS           MCIERR_TAM + 26
#define MCIERR_TAM_GLOBALPAGEUNLOCK              MCIERR_TAM + 27
#define MCIERR_TAM_GLOBALPAGELOCK                MCIERR_TAM + 28
#define MCIERR_TAM_LWRITE                        MCIERR_TAM + 29
#define MCIERR_TAM_UNRECOGNIZED_STREAM_ID        MCIERR_TAM + 30
#define MCIERR_TAM_UNHOOKWINDOWSHOOKEX           MCIERR_TAM + 31
#define MCIERR_TAM_INVALID_MEDIA_HANDLE          MCIERR_TAM + 32
#define MCIERR_TAM_INVALID_MEDIA_LENGTH          MCIERR_TAM + 33
#define MCIERR_TAM_INVALID_MEDIA_HEADER          MCIERR_TAM + 34
#define MCIERR_TAM_INVALID_MEDIA_FRAME           MCIERR_TAM + 35
#define MCIERR_TAM_INVALID_MEDIA_FORMAT          MCIERR_TAM + 36
#define MCIERR_TAM_INVALID_MEDIA_DATA            MCIERR_TAM + 37
#define MCIERR_TAM_DWFROM_OUTOFRANGE             MCIERR_TAM + 38
#define MCIERR_TAM_DWTO_OUTOFRANGE               MCIERR_TAM + 39
#define MCIERR_TAM_ACCESS_ZERO_LENGTH            MCIERR_TAM + 40
#define MCIERR_TAM_EMPTY_MEDIA                   MCIERR_TAM + 41
#define MCIERR_TAM_NO_STREAM_EXIST               MCIERR_TAM + 42
#define MCIERR_TAM_ANOTHER_STREAM_RUNNING        MCIERR_TAM + 43
#define MCIERR_TAM_MODULE_NOT_LOADED             MCIERR_TAM + 44
#define MCIERR_TAM_DEVICE_NOT_USED               MCIERR_TAM + 45
#define MCIERR_TAM_DATA_OUTOFRANGE               MCIERR_TAM + 46
#define MCIERR_TAM_WRONG_CONNECT                 MCIERR_TAM + 47
#define MCIERR_TAM_INVALID_FILE_HANDLE           MCIERR_TAM + 48
#define MCIERR_TAM_INVALID_POSITION              MCIERR_TAM + 49
#define MCIERR_TAM_INVALID_CONFIG                MCIERR_TAM + 50
#define MCIERR_TAM_INVALID_STATUS_BLOCK          MCIERR_TAM + 51
#define MCIERR_TAM_UNSUITABLE_CONDITION          MCIERR_TAM + 52
#define MCIERR_TAM_UNSUITABLE_OBJECT             MCIERR_TAM + 53
#define MCIERR_TAM_DATA_INCORRECT                MCIERR_TAM + 54
#define MCIERR_TAM_MULTIPLE_OPEN                 MCIERR_TAM + 55
#define MCIERR_TAM_INVALID_MODE                  MCIERR_TAM + 56
#define MCIERR_TAM_TPL_MEIO_ALREADY_OPENED       MCIERR_TAM + 57
#define MCIERR_TAM_TPS_MEIO_ALREADY_OPENED       MCIERR_TAM + 58
#define MCIERR_TAM_SWITCH_TO_TPS_AUDIO           MCIERR_TAM + 59
#define MCIERR_TAM_SWITCH_TO_TPS_AUDIO_REC       MCIERR_TAM + 60
#define MCIERR_TAM_SWITCH_TO_TPS_HANDSET         MCIERR_TAM + 61
#define MCIERR_TAM_SWITCH_TO_TPL_PHONELINE       MCIERR_TAM + 62
#define MCIERR_TAM_SWITCH_TO_TPL_SPEAKERPHONE    MCIERR_TAM + 63
#define MCIERR_TAM_SWITCH_TO_TPL_NORMALPHONE     MCIERR_TAM + 64
#define MCIERR_TAM_SWITCH_TO_TPL_CALL_SCREEN     MCIERR_TAM + 65
#define MCIERR_TAM_NO_DIAL_TONE                  MCIERR_TAM + 66
#define MCIERR_TAM_UNSUPPORTED_FLAG              MCIERR_TAM + 67
#define MCIERR_TAM_INVALID_HANDLE                MCIERR_TAM + 68

/**
 ** MCI Errors for Discriminator DLL
 **/
#define MCIERR_DIS_TYPE_ALREADY_REGISTERED       MCIERR_DIS + 0
#define MCIERR_DIS_TYPE_NOT_REGISTERED           MCIERR_DIS + 1
#define MCIERR_DIS_NOT_LOADED                    MCIERR_DIS + 2
#define MCIERR_DIS_INVALID_TYPE                  MCIERR_DIS + 3
#define MCIERR_DIS_LOAD_FAIL                     MCIERR_DIS + 4
#define MCIERR_DIS_APPLICATION_NOT_REGISTERED    MCIERR_DIS + 5

#define MCIERR_FAX_TIF_MHTIF_CANNOTCREATETIFF    MCIERR_TIFF + 0
#define MCIERR_FAX_TIF_MHTIF_GALLOCHWRITE        MCIERR_TIFF + 1
#define MCIERR_FAX_TIF_MHTIF_GLOCKHWRITE         MCIERR_TIFF + 2
#define MCIERR_FAX_TIF_MHTIF_GALLOCHTGT          MCIERR_TIFF + 3
#define MCIERR_FAX_TIF_MHTIF_GLOCKHTGT           MCIERR_TIFF + 4
#define MCIERR_FAX_TIF_MHTIF_GALLOCHMEM          MCIERR_TIFF + 5
#define MCIERR_FAX_TIF_MHTIF_GLOCKHMEM           MCIERR_TIFF + 6
#define MCIERR_FAX_TIF_MHTIF_WRITETIF            MCIERR_TIFF + 7
#define MCIERR_FAX_TIF_MHTIF_IMAGEMH             MCIERR_TIFF + 8


#define MCIERR_FAX_TIF_TIFMH_GALLOCHR            MCIERR_TIFF + 38
#define MCIERR_FAX_TIF_TIFMH_GLOCKHR             MCIERR_TIFF + 39
#define MCIERR_FAX_TIF_TIFMH_GALLOCHW            MCIERR_TIFF + 40
#define MCIERR_FAX_TIF_TIFMH_GLOCKHW             MCIERR_TIFF + 41
#define MCIERR_FAX_TIF_TIFMH_GALLOCHMHLIST       MCIERR_TIFF + 42
#define MCIERR_FAX_TIF_TIFMH_GLOCKHMHLIST        MCIERR_TIFF + 43
#define MCIERR_FAX_TIF_TIFMH_GALLOCTIFTOMHBUF    MCIERR_TIFF + 44
#define MCIERR_FAX_TIF_TIFMH_GLOCKTIFTOMHBUF     MCIERR_TIFF + 45
#define MCIERR_FAX_TIF_TIFMH_GALLOCHPART         MCIERR_TIFF + 46
#define MCIERR_FAX_TIF_TIFMH_GLOCKHPART          MCIERR_TIFF + 47
#define MCIERR_FAX_TIF_TIFMH_GALLOCHTEMP         MCIERR_TIFF + 48
#define MCIERR_FAX_TIF_TIFMH_GLOCKHTEMP          MCIERR_TIFF + 49
#define MCIERR_FAX_TIF_TIFMH_NOTINTELFORMAT      MCIERR_TIFF + 50
#define MCIERR_FAX_TIF_TIFMH_CANNOTCREATEMH      MCIERR_TIFF + 51
#define MCIERR_FAX_TIF_TIFMH_CANNOTOPENTIFF      MCIERR_TIFF + 52


#define MCIERR_FAX_TIF_TIFBMP_CANNOTOPENTIFF       MCIERR_TIFF + 78
#define MCIERR_FAX_TIF_TIFBMP_NOSUCHPAGEINTIFF     MCIERR_TIFF + 79
#define MCIERR_FAX_TIF_TIFBMP_CANNOTCREATETEMPMH   MCIERR_TIFF + 80
#define MCIERR_FAX_TIF_TIFBMP_GALLOCHTIFF          MCIERR_TIFF + 81
#define MCIERR_FAX_TIF_TIFBMP_GLOCKHTIFF           MCIERR_TIFF + 82
#define MCIERR_FAX_TIF_TIFBMP_LOADCCITTIMAGE       MCIERR_TIFF + 83
#define MCIERR_FAX_TIF_TIFBMP_SAVEBITMAP           MCIERR_TIFF + 84
#define MCIERR_FAX_TIF_TIFBMP_NOTTIFFFILE          MCIERR_TIFF + 85


#define MCIERR_FAX_TIF_INSERT_LOADBITMAPFROMFILE       MCIERR_TIFF + 108
#define MCIERR_FAX_TIF_INSERT_SAVEBITMAPINCCITTFORMAT  MCIERR_TIFF + 109
#define MCIERR_FAX_TIF_INSERT_OPENTEMPMH               MCIERR_TIFF + 110
#define MCIERR_FAX_TIF_INSERT_OPENTIFF                 MCIERR_TIFF + 111
#define MCIERR_FAX_TIF_INSERT_GALLOCHTIFF              MCIERR_TIFF + 112
#define MCIERR_FAX_TIF_INSERT_GLOCKHTIFF               MCIERR_TIFF + 113


#define MCIERR_FAX_TIF_REPLACE_LOADBITMAPFROMFILE      MCIERR_TIFF + 138
#define MCIERR_FAX_TIF_REPLACE_SAVEBITMAPINCCITTFORMAT MCIERR_TIFF + 139
#define MCIERR_FAX_TIF_REPLACE_OPENTEMPMH              MCIERR_TIFF + 140
#define MCIERR_FAX_TIF_REPLACE_OPENTIFF                MCIERR_TIFF + 141
#define MCIERR_FAX_TIF_REPLACE_OPENTEMPTIFF            MCIERR_TIFF + 142
#define MCIERR_FAX_TIF_REPLACE_GALLOCHTIFF             MCIERR_TIFF + 143
#define MCIERR_FAX_TIF_REPLACE_GLOCKHTIFF              MCIERR_TIFF + 144
#define MCIERR_FAX_TIF_REPLACE_CANNOTCREATETIFF        MCIERR_TIFF + 145


#define MCIERR_FAX_TIF_BMPTIF_LOADBITMAPFROMFILE       MCIERR_TIFF + 168
#define MCIERR_FAX_TIF_BMPTIF_SAVEBITMAPINCCITTFORMAT  MCIERR_TIFF + 169
#define MCIERR_FAX_TIF_BMPTIF_CANNOTOPENTEMPMH         MCIERR_TIFF + 170
#define MCIERR_FAX_TIF_BMPTIF_CANNOTCREATETIFF         MCIERR_TIFF + 171
#define MCIERR_FAX_TIF_BMPTIF_GALLOCHTIFF              MCIERR_TIFF + 172
#define MCIERR_FAX_TIF_BMPTIF_GLOCKHTIFF               MCIERR_TIFF + 173
#define MCIERR_FAX_TIF_BMPTIF_NOTBMPFILE               MCIERR_TIFF + 174


#define MCIERR_FAX_TIF_NUMBER_CANNOTOPENTIFF           MCIERR_TIFF + 188

#define MCIERR_MEIO_DSPMEIOCONNECT                     MCIERR_MEIO + 0

