/*******************************Module*Header*********************************\
* Module Name: mcicda.h
*
* Media Control Architecture Redbook CD Audio Driver
*
* Created:
* Author:
*
* History:
*
* Internal data structures
*
* Copyright (c) 1990-1999 Microsoft Corporation
*
\****************************************************************************/
#define MCIRBOOK_MAX_DRIVES 26

#define MCICDAERR_NO_TIMERS (MCIERR_CUSTOM_DRIVER_BASE)
#define IDS_PRODUCTNAME         1
#define IDS_CDMUSIC             2
#define IDS_CDMUSICCAPTION      3

#define MCI_CDA_AUDIO_S         96
#define MCI_CDA_OTHER_S         97

#define MCI_STATUS_TRACK_POS    0xBEEF

#ifndef cchLENGTH
#define cchLENGTH(_sz) (sizeof(_sz)/sizeof(_sz[0]))
#endif

extern HANDLE hInstance;

/* Instance data type */
typedef struct tag_INSTDATA
{
    MCIDEVICEID uMCIDeviceID;      /* MCI Device ID */
    UINT        uDevice;           /* Index of physical device */
    DWORD       dwTimeFormat;      /* Current instance time format */
                                   //    MCI_FORMAT_MSF - minutes, seconds, frames
                                   //    MCI_FORMAT_TMSF - tracks, minutes ...
                                   //    MCI_FORMAT_MILLISECONDS
} INSTDATA, *PINSTDATA;

typedef struct
{
    HWND   hCallback;         /* Handle to window function to call back     */
    BOOL   bDiscPlayed;       /* TRUE if the disk was played since it       */
                              /* was changed                                */
    BOOL   bActiveTimer;      /* TRUE if waiting to notify                  */
    DWORD  dwPlayTo;          /* Last position being played to              */
    MCIDEVICEID wDeviceID;    /* MCI device ID for this drive */
    BOOL   bShareable;        /* If the device was opened shareable         */
    int    nUseCount;         /* Number of current opens on the device      */
} DRIVEDATA;

typedef struct
{
    DWORD   dwStatus;
    DWORD   dwTrack;
    DWORD   dwDiscTime;
} STATUSTRACKPOS, *PSTATUSTRACKPOS;

extern DWORD FAR PASCAL CD_MCI_Handler (MCIDEVICEID wDeviceID,
                                        UINT message, DWORD_PTR lParam1,
                                        DWORD_PTR lParam2);

extern DWORD CDAudio_GetUnitVolume     (UINT uDrive);