Annotation of mstools/h/winmm.h, revision 1.1

1.1     ! root        1: /*++ BUILD Version: 0001    // Increment this if a change has global effects
        !             2: 
        !             3: Copyright (c) 1990-91, Microsoft Corporation
        !             4: 
        !             5: Module Name:
        !             6: 
        !             7:     winmm.h
        !             8: 
        !             9: Abstract:
        !            10: 
        !            11:     This include file defines all the support for Multimedia applications.
        !            12: 
        !            13:     24-Apr-91 MMTIME structure added. NigelT.
        !            14: 
        !            15: --*/
        !            16: 
        !            17: #ifndef _WINMM_
        !            18: #define _WINMM_
        !            19: 
        !            20: /****************************************************************************
        !            21: 
        !            22:     Multimedia Systems Window Messages
        !            23: 
        !            24: ****************************************************************************/
        !            25: 
        !            26: #ifndef WM_MM_RESERVED_FIRST
        !            27: // taken from windows.h
        !            28: /* The following message range reserved for multi-media */
        !            29: #define WM_MM_RESERVED_FIRST 0x03B0
        !            30: #define WM_MM_RESERVED_LAST  0x03EF
        !            31: #endif
        !            32: 
        !            33: #define MM_MCINOTIFY       (WM_MM_RESERVED_FIRST + 9)
        !            34: #define MM_MCISYSTEM_STRING (WM_MM_RESERVED_FIRST + 26)
        !            35: 
        !            36: /****************************************************************************
        !            37: 
        !            38:     PlaySound API and flags
        !            39: 
        !            40: ****************************************************************************/
        !            41: 
        !            42: BOOL APIENTRY PlaySound(LPSTR lpszName, HANDLE hModule, DWORD dwFlags);
        !            43: 
        !            44: // sound types
        !            45: 
        !            46: #define SND_ALIAS       0x00000001      // name is a WIN.INI [sounds] entry
        !            47: #define SND_FILENAME    0x00000002      // name is a file name
        !            48: #define SND_RESOURCE    0x00000003      // name is a resource name or atom
        !            49: #define SND_TYPE_MASK   0x000000FF
        !            50: 
        !            51: #define SND_ASYNC       0x00000000      // sound plays asynchronously
        !            52: #define SND_SYNC        0x00000100      // sound plays synchronously
        !            53: 
        !            54: #define SND_NODEFAULT   0x00001000      // don't use the default sound
        !            55: #define SND_NOWAIT      0x00002000      // don't wait if the driver is busy
        !            56: 
        !            57: /***************************************************************************
        !            58: 
        !            59:     Time structure used by Multimedia APIs
        !            60: 
        !            61: ***************************************************************************/
        !            62: 
        !            63: typedef struct _MMTIME {
        !            64:     WORD    wType;              // the contents of the union
        !            65:     union {
        !            66:         DWORD ms;               // milliseconds
        !            67:         DWORD sample;           // samples
        !            68:         DWORD cb;               // byte count
        !            69:         struct {                // SMPTE
        !            70:             BYTE hour;          // hours
        !            71:             BYTE minutes;       // minutes - can't use min as it's a macro
        !            72:             BYTE sec;           // seconds
        !            73:             BYTE frame;         // frames
        !            74:             BYTE fps;           // frames per second (24, 25, 29(30 drop) or 30)
        !            75:             BYTE dummy;
        !            76:             } smpte;
        !            77:         struct {                // MIDI
        !            78:         DWORD songptrpos;       // song pointer position
        !            79:             } midi;
        !            80:         } u;
        !            81:     } MMTIME, *PMMTIME, *LPMMTIME;
        !            82: 
        !            83: //
        !            84: // types for MMTIME struct
        !            85: //
        !            86: 
        !            87: #define TIME_MS         0x0001  // time counted in Milliseconds
        !            88: #define TIME_SAMPLES    0x0002  // number of wave samples
        !            89: #define TIME_BYTES      0x0004  // current byte offset
        !            90: #define TIME_SMPTE      0x0008  // smpte time
        !            91: #define TIME_MIDI       0x0010  // midi time
        !            92: 
        !            93: /***************************************************************************
        !            94: 
        !            95:     MMIO types, structures and APIs
        !            96: 
        !            97: ***************************************************************************/
        !            98: 
        !            99: typedef DWORD           FOURCC;         // a four character code
        !           100: typedef HANDLE          HMMIO;          // a handle to an open file
        !           101: 
        !           102: #define CFSEPCHAR       '+'             // compound file name separator char.
        !           103: 
        !           104: typedef LONG (*LPMMIOPROC)(
        !           105:             LPSTR lpmmioinfo,
        !           106:             WORD wMsg,
        !           107:             LONG lParam1,
        !           108:             LONG lParam2
        !           109:             );
        !           110: 
        !           111: typedef struct _MMIOINFO        // structure for representing MMIO state
        !           112: {
        !           113:         /* general fields */
        !           114:         DWORD           dwFlags;        // general status flags
        !           115:         FOURCC          fccIOProc;      // ptr. to I/O procedure
        !           116:         LPMMIOPROC      pIOProc;        // ptr. to I/O procedure
        !           117:         WORD            wErrorRet;      // place for error to be returned
        !           118:         WORD            wReserved;      // <for structure alignment>
        !           119: 
        !           120:         /* fields maintained by MMIO functions during buffered I/O */
        !           121:         LONG            cchBuffer;      // size of I/O buffer (or 0L)
        !           122:         LPSTR           pchBuffer;      // start of I/O buffer (or NULL)
        !           123:         LPSTR           pchNext;        // ptr. to next byte to read/write
        !           124:         LPSTR           pchEndRead;     // ptr. to last valid byte to read
        !           125:         LPSTR           pchEndWrite;    // ptr. to last available byte to write
        !           126:         LONG            lBufOffset;     // disk offset of start of buffer
        !           127: 
        !           128:         /* fields maintained by I/O procedure */
        !           129:         LONG            lDiskOffset;    // disk offset of next read or write
        !           130:         DWORD           adwInfo[3];     // data specific to type of MMIOPROC
        !           131: 
        !           132:         /* other fields maintained by MMIO */
        !           133:         DWORD           dwReserved1;    // reserved for MMIO use
        !           134:         DWORD           dwReserved2;    // reserved for MMIO use
        !           135:         HMMIO           hmmio;          // handle to open file
        !           136: } MMIOINFO, FAR * LPMMIOINFO;
        !           137: 
        !           138: typedef struct _MMCKINFO        // structure for representing RIFF chunk info.
        !           139: {
        !           140:         FOURCC          ckid;           // chunk ID
        !           141:         DWORD           cksize;         // chunk size
        !           142:         FOURCC          fccType;        // form type or list type
        !           143:         DWORD           dwDataOffset;   // offset of data portion of chunk
        !           144:         DWORD           dwFlags;        // flags used by MMIO functions
        !           145: } MMCKINFO, FAR *LPMMCKINFO;
        !           146: 
        !           147: /* <dwFlags> field of MMIOINFO structure -- many same as OpenFile() flags */
        !           148: /* Low word of flags will be passed to OpenFile() -- therefore, any MMIO-
        !           149:     specific flags should be in the high word.  */
        !           150: #define MMIO_RWMODE     0x00000003      // open file for reading/writing/both
        !           151: #define MMIO_SHAREMODE  0x00000070      // file sharing mode number
        !           152: #define MMIO_CREATE     0x00001000      // create new file (or truncate file)
        !           153: #define MMIO_DELETE     0x00000200      // create new file (or truncate file)
        !           154: #define MMIO_ALLOCBUF   0x00010000      // mmioOpen() should allocate a buffer
        !           155: #define MMIO_DIRTY      0x10000000      // I/O buffer is dirty
        !           156: /* MMIO_DIRTY is also used in the <dwFlags> field of MMCKINFO structure */
        !           157: 
        !           158: /* read/write mode numbers (bit field MMIO_RWMODE) */
        !           159: #define MMIO_READ       0x00000000      // open file for reading only
        !           160: #define MMIO_WRITE      0x00000001      // open file for writing only
        !           161: #define MMIO_READWRITE  0x00000002      // open file for reading and writing
        !           162: 
        !           163: /* share mode numbers (bit field MMIO_SHAREMODE) */
        !           164: #define MMIO_COMPAT     0x00000000      // compatibility mode
        !           165: #define MMIO_EXCLUSIVE  0x00000010      // exclusive-access mode
        !           166: #define MMIO_DENYWRITE  0x00000020      // deny writing to other processes
        !           167: #define MMIO_DENYREAD   0x00000030      // deny reading to other processes
        !           168: #define MMIO_DENYNONE   0x00000040      // deny nothing to other processes
        !           169: 
        !           170: /* flags for other functions */
        !           171: #define MMIO_FHOPEN             0x0010  // mmioClose(): keep file handle open
        !           172: #define MMIO_EMPTYBUF           0x0010  // mmioFlush(): empty the I/O buffer
        !           173: #define MMIO_TOUPPER            0x0010  // mmioStringToFOURCC(): cvt. to u-case
        !           174: #define MMIO_INSTALLPROC    0x00010000  // mmioInstallIOProc(): install MMIOProc
        !           175: #define MMIO_REMOVEPROC     0x00020000  // mmioInstallIOProc(): remove MMIOProc
        !           176: #define MMIO_FINDPROC       0x00040000  // mmioInstallIOProc(): find an MMIOProc
        !           177: #define MMIO_FINDCHUNK          0x0010  // mmioDescend(): find a chunk by ID
        !           178: #define MMIO_FINDRIFF           0x0020  // mmioDescend(): find a LIST chunk
        !           179: #define MMIO_FINDLIST           0x0040  // mmioDescend(): find a RIFF chunk
        !           180: #define MMIO_CREATERIFF         0x0020  // mmioCreateChunk(): make a LIST chunk
        !           181: #define MMIO_CREATELIST         0x0040  // mmioCreateChunk(): make a RIFF chunk
        !           182: 
        !           183: /* message numbers for MMIOPROC */
        !           184: #define MMIOM_READ      MMIO_READ       // read (must equal MMIO_READ!)
        !           185: #define MMIOM_WRITE    MMIO_WRITE       // write (must equal MMIO_WRITE!)
        !           186: #define MMIOM_SEEK              2       // seek to a new position in file
        !           187: #define MMIOM_OPEN              3       // open file
        !           188: #define MMIOM_CLOSE             4       // close file
        !           189: #define MMIOM_WRITEFLUSH        5       // write and flush
        !           190: #define MMIOM_USER         0x8000       // beginning of user-defined messages
        !           191: 
        !           192: /* standard four character codes */
        !           193: #define FOURCC_RIFF     mmioFOURCC('R', 'I', 'F', 'F')
        !           194: #define FOURCC_LIST     mmioFOURCC('L', 'I', 'S', 'T')
        !           195: 
        !           196: /* four character codes used to identify standard built-in I/O procedures */
        !           197: #define FOURCC_DOS      mmioFOURCC('D', 'O', 'S', ' ')
        !           198: #define FOURCC_MEM      mmioFOURCC('M', 'E', 'M', ' ')
        !           199: 
        !           200: /* error numbers */
        !           201: #define MMIOERR_BASE            256
        !           202: #define MMIOERR_FILENOTFOUND    (MMIOERR_BASE + 1)  // file not found
        !           203: #define MMIOERR_OUTOFMEMORY     (MMIOERR_BASE + 2)  // out of memory
        !           204: #define MMIOERR_CANNOTOPEN      (MMIOERR_BASE + 3)  // cannot open
        !           205: #define MMIOERR_CANNOTCLOSE     (MMIOERR_BASE + 4)  // cannot close
        !           206: #define MMIOERR_CANNOTREAD      (MMIOERR_BASE + 5)  // cannot read
        !           207: #define MMIOERR_CANNOTWRITE     (MMIOERR_BASE + 6)  // cannot write
        !           208: #define MMIOERR_CANNOTSEEK      (MMIOERR_BASE + 7)  // cannot seek
        !           209: #define MMIOERR_CANNOTEXPAND    (MMIOERR_BASE + 8)  // cannot expand file
        !           210: #define MMIOERR_CHUNKNOTFOUND   (MMIOERR_BASE + 9)  // chunk not found
        !           211: #define MMIOERR_UNBUFFERED      (MMIOERR_BASE + 10) // file is unbuffered
        !           212: 
        !           213: /* other constants */
        !           214: #define MMIO_DEFAULTBUFFER      8192    // default buffer size
        !           215: 
        !           216: /* macros */
        !           217: #define mmioFOURCC( ch0, ch1, ch2, ch3 )                                \
        !           218:                 ( (DWORD)(BYTE)(ch0) | ( (DWORD)(BYTE)(ch1) << 8 ) |    \
        !           219:                 ( (DWORD)(BYTE)(ch2) << 16 ) | ( (DWORD)(BYTE)(ch3) << 24 ) )
        !           220: 
        !           221: /* MMIO prototypes */
        !           222: FOURCC mmioStringToFOURCC(LPSTR sz, WORD wFlags);
        !           223: LPMMIOPROC mmioInstallIOProc(FOURCC fccIOProc, LPMMIOPROC pIOProc,
        !           224:         DWORD dwFlags);
        !           225: HMMIO mmioOpen(LPSTR szFileName, LPMMIOINFO lpmmioinfo,
        !           226:         DWORD dwOpenFlags);
        !           227: WORD mmioClose(HMMIO hmmio, WORD wFlags);
        !           228: LONG mmioRead(HMMIO hmmio, LPSTR pch, LONG cch);
        !           229: LONG mmioWrite(HMMIO hmmio, LPSTR pch, LONG cch);
        !           230: LONG mmioSeek(HMMIO hmmio, LONG lOffset, int iOrigin);
        !           231: WORD mmioGetInfo(HMMIO hmmio, LPMMIOINFO lpmmioinfo, WORD wFlags);
        !           232: WORD mmioSetInfo(HMMIO hmmio, LPMMIOINFO lpmmioinfo, WORD wFlags);
        !           233: WORD mmioSetBuffer(HMMIO hmmio, LPSTR pchBuffer, LONG cchBuffer,
        !           234:         WORD wFlags);
        !           235: WORD mmioFlush(HMMIO hmmio, WORD wFlags);
        !           236: WORD mmioAdvance(HMMIO hmmio, LPMMIOINFO lpmmioinfo, WORD wFlags);
        !           237: LONG mmioSendMessage(HANDLE hmmio, WORD wMsg,
        !           238:         LONG lParam1, LONG lParam2);
        !           239: 
        !           240: /* RIFF I/O prototypes */
        !           241: WORD mmioDescend(HANDLE hmmio, LPMMCKINFO lpck,
        !           242:         LPMMCKINFO lpckParent, WORD wFlags);
        !           243: WORD mmioAscend(HANDLE hmmio, LPMMCKINFO lpck, WORD wFlags);
        !           244: WORD mmioCreateChunk(HANDLE hmmio, LPMMCKINFO lpck, WORD wFlags);
        !           245: 
        !           246: /***************************************************************************
        !           247: 
        !           248:     WAVE file specific defines
        !           249: 
        !           250: ***************************************************************************/
        !           251: 
        !           252: #define ckidWAVE mmioFOURCC('W','A','V','E') // RIFF WAVE file id
        !           253: 
        !           254: //
        !           255: // basic wave format for sampled audio
        !           256: //
        !           257: 
        !           258: typedef struct _WAVEFORMAT {
        !           259:     USHORT FormatTag;        // format type (WAVE_FORMAT_PCM)
        !           260:     USHORT Channels;         // number of channels
        !           261:     ULONG SamplesPerSec;     // sample rate
        !           262:     ULONG AvgBytesPerSec;    // for buffer estimation
        !           263:     USHORT BlockAlign;       // block size of data
        !           264: } WAVEFORMAT, *PWAVEFORMAT;
        !           265: 
        !           266: //
        !           267: // wave format for PCM sampled audio
        !           268: //
        !           269: 
        !           270: typedef struct _PCMWAVEFORMAT {
        !           271:     USHORT FormatTag;        // format type (WAVE_FORMAT_PCM)
        !           272:     USHORT Channels;         // number of channels
        !           273:     ULONG SamplesPerSec;     // sample rate
        !           274:     ULONG AvgBytesPerSec;    // for buffer estimation
        !           275:     USHORT BlockAlign;       // block size of data
        !           276:     USHORT BitsPerSample;    // bits per sample
        !           277: } PCMWAVEFORMAT, *PPCMWAVEFORMAT;
        !           278: 
        !           279: #define WAVE_FORMAT_PCM 1
        !           280: 
        !           281: /****************************************************************************
        !           282: 
        !           283:     String resource number bases
        !           284: 
        !           285: ****************************************************************************/
        !           286: 
        !           287: #define MAXERRORLENGTH         128    // maximum error text length (including
        !           288:                                      // terminating null)
        !           289: // error string resources
        !           290: #define MMSYSERR_BASE          0
        !           291: #define WAVERR_BASE            32
        !           292: #define MIDIERR_BASE           64
        !           293: #define TIMERR_BASE            128
        !           294: #define JOYERR_BASE            160
        !           295: #define MCIERR_BASE            256
        !           296: 
        !           297: #define MCI_STRING_OFFSET      512    // general mci string resources
        !           298: #define MCI_VD_OFFSET          544    // videodisc command string resources
        !           299: #define MCI_CD_OFFSET          576    // redbook audio command string resources
        !           300: #define MCI_WAVE_OFFSET        608    // wave audio command string resources
        !           301: 
        !           302: // THIS NUMBER IS HARDCODED WHERE THE MCI_SEQ_<x>'s ARE #define'd
        !           303: // You must change those definitions if you change this number
        !           304: #define MCI_SEQ_OFFSET        640    // sequencer command string resources
        !           305: 
        !           306: // THIS NUMBER IS HARDCODED WHERE THE MCI_FORMAT_<x>'s ARE #define'd
        !           307: // You must change those definitions if you change this number
        !           308: #define MCI_FORMATS_OFFSET     672    // MCI Time Formats
        !           309: 
        !           310: /****************************************************************************
        !           311: 
        !           312:                MCI
        !           313: 
        !           314: ****************************************************************************/
        !           315: 
        !           316: 
        !           317: //
        !           318: //  MCI error return values
        !           319: //
        !           320: 
        !           321: 
        !           322: #define MCIERR_INVALID_DEVICE_ID        (MCIERR_BASE + 1)
        !           323: #define MCIERR_UNRECOGNIZED_KEYWORD     (MCIERR_BASE + 3)
        !           324: #define MCIERR_UNRECOGNIZED_COMMAND     (MCIERR_BASE + 5)
        !           325: #define MCIERR_HARDWARE                 (MCIERR_BASE + 6)
        !           326: #define MCIERR_INVALID_DEVICE_NAME      (MCIERR_BASE + 7)
        !           327: #define MCIERR_OUT_OF_MEMORY            (MCIERR_BASE + 8)
        !           328: #define MCIERR_DEVICE_OPEN              (MCIERR_BASE + 9)
        !           329: #define MCIERR_CANNOT_LOAD_DRIVER       (MCIERR_BASE + 10)
        !           330: #define MCIERR_MISSING_COMMAND_STRING   (MCIERR_BASE + 11)
        !           331: #define MCIERR_PARAM_OVERFLOW           (MCIERR_BASE + 12)
        !           332: #define MCIERR_MISSING_STRING_ARGUMENT  (MCIERR_BASE + 13)
        !           333: #define MCIERR_BAD_INTEGER              (MCIERR_BASE + 14)
        !           334: #define MCIERR_PARSER_INTERNAL          (MCIERR_BASE + 15)
        !           335: #define MCIERR_DRIVER_INTERNAL          (MCIERR_BASE + 16)
        !           336: #define MCIERR_MISSING_PARAMETER        (MCIERR_BASE + 17)
        !           337: #define MCIERR_UNSUPPORTED_FUNCTION     (MCIERR_BASE + 18)
        !           338: #define MCIERR_FILE_NOT_FOUND           (MCIERR_BASE + 19)
        !           339: #define MCIERR_DEVICE_NOT_READY         (MCIERR_BASE + 20)
        !           340: #define MCIERR_INTERNAL                 (MCIERR_BASE + 21)
        !           341: #define MCIERR_DRIVER                   (MCIERR_BASE + 22)
        !           342: #define MCIERR_CANNOT_USE_ALL           (MCIERR_BASE + 23)
        !           343: #define MCIERR_MULTIPLE                 (MCIERR_BASE + 24)
        !           344: #define MCIERR_EXTENSION_NOT_FOUND      (MCIERR_BASE + 25)
        !           345: #define MCIERR_OUTOFRANGE              (MCIERR_BASE + 26)
        !           346: #define MCIERR_FLAGS_NOT_COMPATIBLE     (MCIERR_BASE + 28)
        !           347: #define MCIERR_FILE_NOT_SAVED           (MCIERR_BASE + 30)
        !           348: #define MCIERR_DEVICE_TYPE_REQUIRED     (MCIERR_BASE + 31)
        !           349: #define MCIERR_DEVICE_LOCKED            (MCIERR_BASE + 32)
        !           350: #define MCIERR_DUPLICATE_ALIAS          (MCIERR_BASE + 33)
        !           351: #define MCIERR_BAD_CONSTANT             (MCIERR_BASE + 34)
        !           352: #define MCIERR_MUST_USE_SHAREABLE       (MCIERR_BASE + 35)
        !           353: #define MCIERR_MISSING_DEVICE_NAME      (MCIERR_BASE + 36)
        !           354: #define MCIERR_BAD_TIME_FORMAT          (MCIERR_BASE + 37)
        !           355: #define MCIERR_NO_CLOSING_QUOTE         (MCIERR_BASE + 38)
        !           356: #define MCIERR_DUPLICATE_FLAGS          (MCIERR_BASE + 39)
        !           357: #define        MCIERR_INVALID_FILE             (MCIERR_BASE + 40)
        !           358: #define MCIERR_NULL_PARAMETER_BLOCK     (MCIERR_BASE + 41)
        !           359: #define        MCIERR_UNNAMED_RESOURCE         (MCIERR_BASE + 42)
        !           360: #define MCIERR_NEW_REQUIRES_ALIAS       (MCIERR_BASE + 43)
        !           361: #define MCIERR_NOTIFY_ON_AUTO_OPEN      (MCIERR_BASE + 44)
        !           362: #define MCIERR_NO_ELEMENT_ALLOWED       (MCIERR_BASE + 45)
        !           363: 
        !           364: #define MCIERR_WAVE_OUTPUTSINUSE        (MCIERR_BASE + 64)
        !           365: #define MCIERR_WAVE_SETOUTPUTINUSE      (MCIERR_BASE + 65)
        !           366: #define MCIERR_WAVE_INPUTSINUSE         (MCIERR_BASE + 66)
        !           367: #define MCIERR_WAVE_SETINPUTINUSE       (MCIERR_BASE + 67)
        !           368: #define MCIERR_WAVE_OUTPUTUNSPECIFIED   (MCIERR_BASE + 68)
        !           369: #define MCIERR_WAVE_INPUTUNSPECIFIED    (MCIERR_BASE + 69)
        !           370: #define MCIERR_WAVE_OUTPUTSUNSUITABLE   (MCIERR_BASE + 70)
        !           371: #define MCIERR_WAVE_SETOUTPUTUNSUITABLE (MCIERR_BASE + 71)
        !           372: #define MCIERR_WAVE_INPUTSUNSUITABLE    (MCIERR_BASE + 72)
        !           373: #define MCIERR_WAVE_SETINPUTUNSUITABLE  (MCIERR_BASE + 73)
        !           374: 
        !           375: 
        !           376: #define MCIERR_SEQ_DIV_INCOMPATIBLE    (MCIERR_BASE + 80)
        !           377: #define MCIERR_SEQ_PORT_INUSE          (MCIERR_BASE + 81)
        !           378: #define MCIERR_SEQ_PORT_NONEXISTENT    (MCIERR_BASE + 82)
        !           379: #define MCIERR_SEQ_PORT_MAPNODEVICE    (MCIERR_BASE + 83)
        !           380: #define MCIERR_SEQ_PORT_MISCERROR      (MCIERR_BASE + 84)
        !           381: #define MCIERR_SEQ_TIMER               (MCIERR_BASE + 85)
        !           382: #define MCIERR_SEQ_PORTUNSPECIFIED      (MCIERR_BASE + 86)
        !           383: 
        !           384: #define MCIERR_NO_WINDOW                (MCIERR_BASE + 90)
        !           385: #define MCIERR_CREATEWINDOW             (MCIERR_BASE + 91)
        !           386: #define MCIERR_FILE_READ                (MCIERR_BASE + 92) 
        !           387: #define MCIERR_FILE_WRITE               (MCIERR_BASE + 93)
        !           388: 
        !           389: // All custom device driver errors must be greater than this value
        !           390: #define MCIERR_CUSTOM_DRIVER_BASE       (MCIERR_BASE + 256)
        !           391: 
        !           392: /****************************************************************************
        !           393: 
        !           394:     MCI command message identifiers
        !           395: 
        !           396: *****************************************************************************/
        !           397: // Message numbers are hard coded because the resource compiler
        !           398: // will otherwise fail on the RCDATA command table in mmsystem.rc
        !           399: 
        !           400: // They must be in the range between MCI_FIRST and MCI_LAST
        !           401: 
        !           402: #define MCI_FIRST                       0x0800
        !           403: // Messages 0x801 and 0x802 are reserved
        !           404: #define MCI_OPEN                        0x0803
        !           405: #define MCI_CLOSE                       0x0804
        !           406: #define MCI_ESCAPE                      0x0805
        !           407: #define MCI_PLAY                        0x0806
        !           408: #define MCI_SEEK                        0x0807
        !           409: #define MCI_STOP                        0x0808
        !           410: #define MCI_PAUSE                       0x0809
        !           411: #define MCI_INFO                        0x080A
        !           412: #define MCI_GETDEVCAPS                  0x080B
        !           413: #define MCI_SPIN                        0x080C
        !           414: #define MCI_SET                         0x080D
        !           415: #define MCI_STEP                        0x080E
        !           416: #define MCI_RECORD                      0x080F
        !           417: #define MCI_SYSINFO                     0x0810
        !           418: #define MCI_BREAK                       0x0811
        !           419: #define MCI_SOUND                       0x0812
        !           420: #define MCI_SAVE                        0x0813
        !           421: #define MCI_STATUS                      0x0814
        !           422: 
        !           423: #define MCI_CUE                         0x0830
        !           424: 
        !           425: #define MCI_REALIZE                     0x0840
        !           426: #define MCI_WINDOW                      0x0841
        !           427: #define MCI_PUT                         0x0842
        !           428: #define MCI_WHERE                       0x0843
        !           429: #define MCI_FREEZE                      0x0844
        !           430: #define MCI_UNFREEZE                    0x0845
        !           431: 
        !           432: #define MCI_LOAD                        0x0850
        !           433: #define MCI_CUT                         0x0851
        !           434: #define MCI_COPY                        0x0852
        !           435: #define MCI_PASTE                       0x0853
        !           436: #define MCI_UPDATE                      0x0854
        !           437: #define MCI_RESUME                      0x0855
        !           438: #define MCI_DELETE                      0x0856
        !           439: 
        !           440: #define MCI_LAST                        0x0FFF
        !           441: 
        !           442: // the next 0x400 message ID's are reserved for custom drivers
        !           443: #define MCI_USER_MESSAGES               (0x400 + MCI_FIRST)
        !           444: 
        !           445: /****************************************************************************
        !           446: 
        !           447:     Structures for the lpdwParams (dwParam2) of mciSendCommand for those
        !           448:     command messages that may be parsed in string form.
        !           449: 
        !           450: *****************************************************************************/
        !           451: 
        !           452: // string resource ID's for the MCI core
        !           453: 
        !           454: #define MCI_FALSE                       (MCI_STRING_OFFSET + 0)
        !           455: #define MCI_TRUE                        (MCI_STRING_OFFSET + 1)
        !           456: #define MCI_NONE                        (MCI_STRING_OFFSET + 2)
        !           457: 
        !           458: #define MCI_ALL_DEVICE_ID               0xFFFF
        !           459: 
        !           460: #define MCI_DEVTYPE_VCR                 (MCI_STRING_OFFSET + 3)
        !           461: #define MCI_DEVTYPE_VIDEODISC           (MCI_STRING_OFFSET + 4)
        !           462: #define MCI_DEVTYPE_OVERLAY             (MCI_STRING_OFFSET + 5)
        !           463: #define MCI_DEVTYPE_CD_AUDIO            (MCI_STRING_OFFSET + 6)
        !           464: #define MCI_DEVTYPE_DAT                 (MCI_STRING_OFFSET + 7)
        !           465: #define MCI_DEVTYPE_SCANNER             (MCI_STRING_OFFSET + 8)
        !           466: #define MCI_DEVTYPE_ANIMATION           (MCI_STRING_OFFSET + 9)
        !           467: #define MCI_DEVTYPE_DIGITAL_VIDEO       (MCI_STRING_OFFSET + 10)
        !           468: #define MCI_DEVTYPE_OTHER               (MCI_STRING_OFFSET + 11)
        !           469: #define MCI_DEVTYPE_WAVEFORM_AUDIO      (MCI_STRING_OFFSET + 12)
        !           470: #define MCI_DEVTYPE_SEQUENCER           (MCI_STRING_OFFSET + 13)
        !           471: 
        !           472: #define MCI_DEVTYPE_FIRST               MCI_DEVTYPE_VCR
        !           473: #define MCI_DEVTYPE_LAST                MCI_DEVTYPE_SEQUENCER
        !           474: #define MCI_DEVTYPE_FIRST_USER          0x1000
        !           475: 
        !           476: #define MCI_MODE_NOT_READY              (MCI_STRING_OFFSET + 20)
        !           477: #define MCI_MODE_STOP                   (MCI_STRING_OFFSET + 21)
        !           478: #define MCI_MODE_PLAY                   (MCI_STRING_OFFSET + 22)
        !           479: #define MCI_MODE_RECORD                 (MCI_STRING_OFFSET + 23)
        !           480: #define MCI_MODE_SEEK                   (MCI_STRING_OFFSET + 24)
        !           481: #define MCI_MODE_PAUSE                  (MCI_STRING_OFFSET + 25)
        !           482: #define MCI_MODE_OPEN                   (MCI_STRING_OFFSET + 26)
        !           483: 
        !           484: // These are not based on MCI_FORMATS_OFFSET because of resource
        !           485: // compiler limitations
        !           486: #define MCI_FORMAT_MILLISECONDS         672
        !           487: #define MCI_FORMAT_HMS                  673
        !           488: #define MCI_FORMAT_MSF                  674
        !           489: #define MCI_FORMAT_FRAMES               675
        !           490: #define MCI_FORMAT_SMPTE_24            676
        !           491: #define MCI_FORMAT_SMPTE_25            677
        !           492: #define MCI_FORMAT_SMPTE_30            678
        !           493: #define MCI_FORMAT_SMPTE_30DROP                679
        !           494: #define MCI_FORMAT_BYTES                680
        !           495: #define MCI_FORMAT_SAMPLES              681
        !           496: #define MCI_FORMAT_TMSF                 682
        !           497: 
        !           498: #define MCI_MSF_MINUTE(msf)             ((BYTE)(msf))
        !           499: #define MCI_MSF_SECOND(msf)             ((BYTE)(((WORD)(msf)) >> 8))
        !           500: #define MCI_MSF_FRAME(msf)              ((BYTE)((msf)>>16))
        !           501: 
        !           502: #define MCI_MAKE_MSF(m, s, f)           ((DWORD)(((BYTE)(m) | \
        !           503:                                                   ((WORD)(s)<<8)) | \
        !           504:                                                  (((DWORD)(BYTE)(f))<<16)))
        !           505:                                         
        !           506: #define MCI_TMSF_TRACK(tmsf)            ((BYTE)(tmsf))
        !           507: #define MCI_TMSF_MINUTE(tmsf)           ((BYTE)(((WORD)(tmsf)) >> 8))
        !           508: #define MCI_TMSF_SECOND(tmsf)           ((BYTE)((tmsf)>>16))
        !           509: #define MCI_TMSF_FRAME(tmsf)            ((BYTE)((tmsf)>>24))
        !           510: 
        !           511: #define MCI_MAKE_TMSF(t, m, s, f)       ((DWORD)(((BYTE)(t) | \
        !           512:                                                   ((WORD)(m)<<8)) | \
        !           513:                                                  (((DWORD) \
        !           514:                                                    (BYTE)(s) | \
        !           515:                                                    ((WORD)(f)<<8)) \
        !           516:                                                    <<16)))
        !           517: 
        !           518: #define MCI_HMS_HOUR(hms)               ((BYTE)(hms))
        !           519: #define MCI_HMS_MINUTE(hms)             ((BYTE)(((WORD)(hms)) >> 8))
        !           520: #define MCI_HMS_SECOND(hms)             ((BYTE)((hms)>>16))
        !           521: 
        !           522: #define MCI_MAKE_HMS(h, m, s)           ((DWORD)(((BYTE)(h) | \
        !           523:                                                   ((WORD)(m)<<8)) | \
        !           524:                                                  (((DWORD)(BYTE)(s))<<16)))
        !           525:                                         
        !           526: 
        !           527: // Flags for mciDriverNotify
        !           528: 
        !           529: #define MCI_NOTIFY_SUCCESSFUL           0x0001
        !           530: #define MCI_NOTIFY_SUPERSEDED           0x0002
        !           531: #define MCI_NOTIFY_ABORTED              0x0004
        !           532: #define MCI_NOTIFY_FAILURE              0x0008
        !           533: 
        !           534: // NOTE: All flags must have an "L" suffix in order to be parsed as
        !           535: // DWORDs by the resource compiler
        !           536: 
        !           537: #define MCI_NOTIFY                      0x00000001L
        !           538: #define MCI_WAIT                        0x00000002L
        !           539: #define MCI_FROM                        0x00000004L
        !           540: #define MCI_TO                          0x00000008L
        !           541: #define MCI_TRACK                       0x00000010L
        !           542: 
        !           543: #define MCI_OPEN_SHAREABLE              0x00000100L
        !           544: #define MCI_OPEN_ELEMENT                0x00000200L
        !           545: #define MCI_OPEN_ALIAS                  0x00000400L
        !           546: #define MCI_OPEN_ELEMENT_ID             0x00000800L
        !           547: #define MCI_OPEN_TYPE_ID                0x00001000L
        !           548: #define MCI_OPEN_TYPE                   0x00002000L
        !           549: 
        !           550: #define MCI_SEEK_TO_START               0x00000100L
        !           551: #define MCI_SEEK_TO_END                 0x00000200L
        !           552: 
        !           553: #define MCI_STATUS_ITEM                 0x00000100L
        !           554: #define MCI_STATUS_START                0x00000200L
        !           555: 
        !           556: #define MCI_STATUS_LENGTH               0x00000001L
        !           557: #define MCI_STATUS_POSITION             0x00000002L
        !           558: #define MCI_STATUS_NUMBER_OF_TRACKS     0x00000003L
        !           559: #define MCI_STATUS_MODE                 0x00000004L
        !           560: #define MCI_STATUS_MEDIA_PRESENT        0x00000005L
        !           561: #define MCI_STATUS_TIME_FORMAT          0x00000006L
        !           562: #define MCI_STATUS_READY                0x00000007L
        !           563: #define MCI_STATUS_CURRENT_TRACK        0x00000008L
        !           564: 
        !           565: #define MCI_INFO_PRODUCT                0x00000100L
        !           566: #define MCI_INFO_FILE                   0x00000200L
        !           567: 
        !           568: #define MCI_GETDEVCAPS_ITEM             0x00000100L
        !           569: 
        !           570: #define MCI_GETDEVCAPS_CAN_RECORD       0x00000001L
        !           571: #define MCI_GETDEVCAPS_HAS_AUDIO        0x00000002L
        !           572: #define MCI_GETDEVCAPS_HAS_VIDEO        0x00000003L
        !           573: #define MCI_GETDEVCAPS_DEVICE_TYPE      0x00000004L
        !           574: #define MCI_GETDEVCAPS_USES_FILES       0x00000005L
        !           575: #define MCI_GETDEVCAPS_COMPOUND_DEVICE  0x00000006L
        !           576: #define MCI_GETDEVCAPS_CAN_EJECT        0x00000007L
        !           577: #define MCI_GETDEVCAPS_CAN_PLAY         0x00000008L
        !           578: #define MCI_GETDEVCAPS_CAN_SAVE         0x00000009L
        !           579: 
        !           580: #define MCI_SYSINFO_QUANTITY            0x00000100L
        !           581: #define MCI_SYSINFO_OPEN                0x00000200L
        !           582: #define MCI_SYSINFO_NAME                0x00000400L
        !           583: #define MCI_SYSINFO_INSTALLNAME         0x00000800L
        !           584: 
        !           585: #define MCI_SET_DOOR_OPEN               0x00000100L
        !           586: #define MCI_SET_DOOR_CLOSED             0x00000200L
        !           587: #define MCI_SET_TIME_FORMAT             0x00000400L
        !           588: #define MCI_SET_AUDIO                   0x00000800L
        !           589: #define MCI_SET_VIDEO                   0x00001000L
        !           590: #define MCI_SET_ON                      0x00002000L
        !           591: #define MCI_SET_OFF                     0x00004000L
        !           592: 
        !           593: #define MCI_SET_AUDIO_ALL               0x00004001L
        !           594: #define MCI_SET_AUDIO_LEFT              0x00004002L
        !           595: #define MCI_SET_AUDIO_RIGHT             0x00004003L
        !           596: 
        !           597: #define MCI_BREAK_KEY                   0x00000100L
        !           598: #define MCI_BREAK_HWND                  0x00000200L
        !           599: #define MCI_BREAK_OFF                   0x00000400L
        !           600: 
        !           601: #define MCI_RECORD_INSERT               0x00000100L
        !           602: #define MCI_RECORD_OVERWRITE            0x00000200L
        !           603: 
        !           604: #define MCI_SOUND_NAME                  0x00000100L
        !           605: 
        !           606: #define MCI_SAVE_FILE                   0x00000100L  
        !           607: 
        !           608: #define MCI_LOAD_FILE                   0x00000100L  
        !           609: 
        !           610: typedef struct {
        !           611:     DWORD   dwCallback;
        !           612: } MCI_GENERIC_PARMS;
        !           613: typedef MCI_GENERIC_PARMS FAR *LPMCI_GENERIC_PARMS;
        !           614: 
        !           615: typedef struct {
        !           616:     DWORD   dwCallback;
        !           617:     WORD    wDeviceID;       
        !           618:     WORD    wReserved0;
        !           619:     LPSTR   lpstrDeviceType; 
        !           620:     LPSTR   lpstrElementName;
        !           621:     LPSTR   lpstrAlias;      
        !           622: } MCI_OPEN_PARMS;
        !           623: typedef MCI_OPEN_PARMS FAR *LPMCI_OPEN_PARMS;
        !           624: 
        !           625: typedef struct {
        !           626:     DWORD   dwCallback;
        !           627:     DWORD   dwFrom;         
        !           628:     DWORD   dwTo;           
        !           629: } MCI_PLAY_PARMS;
        !           630: typedef MCI_PLAY_PARMS FAR *LPMCI_PLAY_PARMS;
        !           631: 
        !           632: typedef struct {
        !           633:     DWORD   dwCallback;
        !           634:     DWORD   dwTo;           
        !           635: } MCI_SEEK_PARMS;
        !           636: typedef MCI_SEEK_PARMS FAR *LPMCI_SEEK_PARMS;
        !           637: 
        !           638: typedef struct {
        !           639:     DWORD   dwCallback;
        !           640:     DWORD   dwReturn;
        !           641:     DWORD   dwItem;
        !           642:     DWORD   dwTrack;
        !           643: } MCI_STATUS_PARMS;
        !           644: typedef MCI_STATUS_PARMS FAR * LPMCI_STATUS_PARMS;
        !           645: 
        !           646: typedef struct {
        !           647:     DWORD   dwCallback;
        !           648:     LPSTR   lpstrReturn;
        !           649:     DWORD   dwRetSize;
        !           650: } MCI_INFO_PARMS;
        !           651: typedef MCI_INFO_PARMS FAR * LPMCI_INFO_PARMS;
        !           652: 
        !           653: typedef struct {
        !           654:     DWORD   dwCallback;
        !           655:     DWORD   dwReturn;
        !           656:     DWORD   dwItem;
        !           657: } MCI_GETDEVCAPS_PARMS;
        !           658: typedef MCI_GETDEVCAPS_PARMS FAR * LPMCI_GETDEVCAPS_PARMS;
        !           659: 
        !           660: typedef struct {
        !           661:     DWORD   dwCallback;    
        !           662:     LPSTR   lpstrReturn;
        !           663:     DWORD   dwRetSize;
        !           664:     DWORD   dwNumber;
        !           665:     WORD    wDeviceType;        
        !           666:     WORD    wReserved0;
        !           667: } MCI_SYSINFO_PARMS;
        !           668: typedef MCI_SYSINFO_PARMS FAR * LPMCI_SYSINFO_PARMS;
        !           669: 
        !           670: typedef struct {
        !           671:     DWORD   dwCallback;
        !           672:     DWORD   dwTimeFormat;
        !           673:     DWORD   dwAudio;
        !           674: } MCI_SET_PARMS;
        !           675: typedef MCI_SET_PARMS FAR *LPMCI_SET_PARMS;
        !           676: 
        !           677: typedef struct {
        !           678:     DWORD   dwCallback;     
        !           679:     int     nVirtKey;
        !           680:     WORD    wReserved0;
        !           681:     HWND    hwndBreak;
        !           682:     WORD    wReserved1;
        !           683: } MCI_BREAK_PARMS;
        !           684: typedef MCI_BREAK_PARMS FAR * LPMCI_BREAK_PARMS;
        !           685: 
        !           686: typedef struct {
        !           687:     DWORD   dwCallback;
        !           688:     LPSTR   lpstrSoundName;
        !           689: } MCI_SOUND_PARMS;
        !           690: typedef MCI_SOUND_PARMS FAR * LPMCI_SOUND_PARMS;
        !           691:     
        !           692: typedef struct {
        !           693:     DWORD   dwCallback;
        !           694:     LPSTR   lpfilename;
        !           695: } MCI_SAVE_PARMS;
        !           696: typedef MCI_SAVE_PARMS FAR * LPMCI_SAVE_PARMS;
        !           697: 
        !           698: typedef struct {
        !           699:     DWORD   dwCallback;
        !           700:     LPSTR   lpfilename;
        !           701: } MCI_LOAD_PARMS;
        !           702: typedef MCI_LOAD_PARMS FAR * LPMCI_LOAD_PARMS;
        !           703: 
        !           704: typedef struct {
        !           705:     DWORD   dwCallback;
        !           706:     DWORD   dwFrom;         
        !           707:     DWORD   dwTo;           
        !           708: } MCI_RECORD_PARMS;
        !           709: typedef MCI_RECORD_PARMS FAR *LPMCI_RECORD_PARMS;
        !           710: 
        !           711: /*****************************************************************************
        !           712: 
        !           713:     Standard command parameters for videodisc drivers
        !           714: 
        !           715: *****************************************************************************/
        !           716: 
        !           717: // string resource ID's for videodisc players 
        !           718: // return ID's for videodisc status command
        !           719: 
        !           720: #define MCI_VD_MODE_PARK                (MCI_VD_OFFSET + 3)
        !           721: 
        !           722: // return ID's for videodisc MCI_GETDEVCAPS command
        !           723: 
        !           724: #define MCI_VD_MEDIA_CLV                (MCI_VD_OFFSET + 10)
        !           725: #define MCI_VD_MEDIA_CAV                (MCI_VD_OFFSET + 11)
        !           726: #define MCI_VD_MEDIA_OTHER              (MCI_VD_OFFSET + 12)
        !           727: #define        MCI_VD_FORMAT_TRACK_S           (MCI_VD_OFFSET + 13)
        !           728: 
        !           729: #define MCI_VD_FORMAT_TRACK             0x4001
        !           730: 
        !           731: #define MCI_VD_PLAY_REVERSE             0x00010000L  
        !           732: #define MCI_VD_PLAY_FAST                0x00020000L  
        !           733: #define MCI_VD_PLAY_SPEED               0x00040000L  
        !           734: #define MCI_VD_PLAY_SCAN                0x00080000L  
        !           735: #define MCI_VD_PLAY_SLOW                0x00100000L  
        !           736: 
        !           737: #define MCI_VD_SEEK_REVERSE             0x00010000L
        !           738: 
        !           739: #define MCI_VD_STATUS_SPEED             0x00004002L
        !           740: #define MCI_VD_STATUS_FORWARD           0x00004003L
        !           741: #define MCI_VD_STATUS_MEDIA_TYPE        0x00004004L
        !           742: #define MCI_VD_STATUS_SIDE              0x00004005L
        !           743: #define MCI_VD_STATUS_DISC_SIZE         0x00004006L
        !           744: 
        !           745: #define MCI_VD_GETDEVCAPS_CLV           0x00010000L
        !           746: #define MCI_VD_GETDEVCAPS_CAV           0x00020000L
        !           747: 
        !           748: #define MCI_VD_SPIN_UP                  0x00010000L
        !           749: #define MCI_VD_SPIN_DOWN                0x00020000L
        !           750: 
        !           751: #define MCI_VD_GETDEVCAPS_CAN_REVERSE   0x00004002L
        !           752: #define MCI_VD_GETDEVCAPS_FAST_RATE     0x00004003L
        !           753: #define MCI_VD_GETDEVCAPS_SLOW_RATE     0x00004004L
        !           754: #define MCI_VD_GETDEVCAPS_NORMAL_RATE   0x00004005L
        !           755: 
        !           756: #define MCI_VD_STEP_FRAMES              0x00010000L
        !           757: #define MCI_VD_STEP_REVERSE             0x00020000L
        !           758: 
        !           759: #define MCI_VD_ESCAPE_STRING            0x00000100L
        !           760: 
        !           761: typedef struct {
        !           762:     DWORD   dwCallback;
        !           763:     DWORD   dwFrom;         
        !           764:     DWORD   dwTo;           
        !           765:     DWORD   dwSpeed;         
        !           766:     } MCI_VD_PLAY_PARMS;
        !           767: typedef MCI_VD_PLAY_PARMS FAR *LPMCI_VD_PLAY_PARMS;
        !           768: 
        !           769: typedef struct {
        !           770:     DWORD   dwCallback;
        !           771:     DWORD   dwFrames;
        !           772: } MCI_VD_STEP_PARMS;
        !           773: typedef MCI_VD_STEP_PARMS FAR *LPMCI_VD_STEP_PARMS;
        !           774: 
        !           775: typedef struct {
        !           776:     DWORD   dwCallback;
        !           777:     LPSTR   lpstrCommand;           
        !           778: } MCI_VD_ESCAPE_PARMS;
        !           779: typedef MCI_VD_ESCAPE_PARMS FAR *LPMCI_VD_ESCAPE_PARMS;
        !           780: 
        !           781: /*****************************************************************************
        !           782:   
        !           783:     Standard command parameters for waveform audio drivers
        !           784:   
        !           785: *****************************************************************************/
        !           786: 
        !           787: #define        MCI_WAVE_PCM                    (MCI_WAVE_OFFSET+0)
        !           788: #define        MCI_WAVE_MAPPER                 (MCI_WAVE_OFFSET+1)
        !           789: 
        !           790: #define MCI_WAVE_OPEN_BUFFER            0x00010000L
        !           791: 
        !           792: #define MCI_WAVE_SET_FORMATTAG          0x00010000L
        !           793: #define MCI_WAVE_SET_CHANNELS           0x00020000L
        !           794: #define MCI_WAVE_SET_SAMPLESPERSEC      0x00040000L
        !           795: #define MCI_WAVE_SET_AVGBYTESPERSEC     0x00080000L
        !           796: #define MCI_WAVE_SET_BLOCKALIGN         0x00100000L
        !           797: #define MCI_WAVE_SET_BITSPERSAMPLE      0x00200000L
        !           798: 
        !           799: #define MCI_WAVE_STATUS_FORMATTAG       0x00004001L
        !           800: #define MCI_WAVE_STATUS_CHANNELS        0x00004002L
        !           801: #define MCI_WAVE_STATUS_SAMPLESPERSEC   0x00004003L
        !           802: #define MCI_WAVE_STATUS_AVGBYTESPERSEC  0x00004004L
        !           803: #define MCI_WAVE_STATUS_BLOCKALIGN      0x00004005L
        !           804: #define MCI_WAVE_STATUS_BITSPERSAMPLE   0x00004006L
        !           805: #define MCI_WAVE_STATUS_LEVEL           0x00004007L
        !           806: 
        !           807: #define MCI_WAVE_INPUT                  0x00400000L
        !           808: #define MCI_WAVE_OUTPUT                 0x00800000L
        !           809: 
        !           810: 
        !           811: #define MCI_WAVE_SET_ANYINPUT           0x04000000L
        !           812: #define MCI_WAVE_SET_ANYOUTPUT          0x08000000L
        !           813: 
        !           814: #define MCI_WAVE_GETDEVCAPS_INPUTS      0x00004001L
        !           815: #define MCI_WAVE_GETDEVCAPS_OUTPUTS     0x00004002L
        !           816: 
        !           817: typedef struct {
        !           818:     DWORD   dwCallback;
        !           819:     WORD    wDeviceID;       
        !           820:     WORD    wReserved0;
        !           821:     LPSTR   lpstrDeviceType; 
        !           822:     LPSTR   lpstrElementName;
        !           823:     LPSTR   lpstrAlias;      
        !           824:     DWORD   dwBufferSeconds;
        !           825: } MCI_WAVE_OPEN_PARMS;
        !           826: typedef MCI_WAVE_OPEN_PARMS FAR *LPMCI_WAVE_OPEN_PARMS;
        !           827: 
        !           828: typedef struct {
        !           829:     DWORD   dwCallback;
        !           830:     DWORD   dwFrom;         
        !           831:     DWORD   dwTo;           
        !           832: } MCI_WAVE_CUT_PARMS;
        !           833: typedef MCI_WAVE_CUT_PARMS FAR *LPMCI_WAVE_CUT_PARMS;
        !           834: 
        !           835: 
        !           836: typedef struct {
        !           837:     DWORD   dwCallback;
        !           838:     DWORD   dwTimeFormat;
        !           839:     DWORD   dwAudio;
        !           840:     WORD    wInput;
        !           841:     WORD    wReserved0;
        !           842:     WORD    wOutput;
        !           843:     WORD    wReserved1;
        !           844:     WORD    wFormatTag;       
        !           845:     WORD    wReserved2;
        !           846:     WORD    nChannels;       
        !           847:     WORD    wReserved3;
        !           848:     DWORD   nSamplesPerSec;   
        !           849:     DWORD   nAvgBytesPerSec;  
        !           850:     WORD    nBlockAlign;      
        !           851:     WORD    wReserved4;
        !           852:     WORD    wBitsPerSample;   
        !           853:     WORD    wReserved5;
        !           854: } MCI_WAVE_SET_PARMS;
        !           855: typedef MCI_WAVE_SET_PARMS FAR * LPMCI_WAVE_SET_PARMS;
        !           856: 
        !           857: /*****************************************************************************
        !           858: 
        !           859:    Standard command parameters for CD audio drivers
        !           860: 
        !           861: *****************************************************************************/
        !           862: 
        !           863: // None
        !           864: 
        !           865: /*****************************************************************************
        !           866: 
        !           867:     Standard command parameters for Sequencer drivers
        !           868: 
        !           869: *****************************************************************************/
        !           870: 
        !           871: // string resource ID's for sequencers
        !           872: // return ids for status division type
        !           873: 
        !           874: #define     MCI_SEQ_DIV_PPQN           (0 + MCI_SEQ_OFFSET)
        !           875: #define     MCI_SEQ_DIV_SMPTE_24        (1 + MCI_SEQ_OFFSET)
        !           876: #define     MCI_SEQ_DIV_SMPTE_25        (2 + MCI_SEQ_OFFSET)
        !           877: #define     MCI_SEQ_DIV_SMPTE_30DROP    (3 + MCI_SEQ_OFFSET)
        !           878: #define     MCI_SEQ_DIV_SMPTE_30        (4 + MCI_SEQ_OFFSET)
        !           879: #define     MCI_SEQ_MAPPER_S            (5 + MCI_SEQ_OFFSET)
        !           880: #define     MCI_SEQ_FILE_S              (6 + MCI_SEQ_OFFSET)
        !           881: #define     MCI_SEQ_MIDI_S              (7 + MCI_SEQ_OFFSET)
        !           882: #define     MCI_SEQ_SMPTE_S             (8 + MCI_SEQ_OFFSET)
        !           883: #define     MCI_SEQ_FORMAT_SONGPTR_S    (9 + MCI_SEQ_OFFSET)
        !           884: 
        !           885: #define     MCI_SEQ_FORMAT_SONGPTR      0x4002
        !           886: #define     MCI_SEQ_FILE               0x4003      
        !           887: #define     MCI_SEQ_MIDI                0x4004
        !           888: #define     MCI_SEQ_SMPTE              0x4005    
        !           889: 
        !           890: #define     MCI_SEQ_NONE               65533
        !           891: #define     MCI_SEQ_MAPPER             65535
        !           892: 
        !           893: #define MCI_SEQ_STATUS_TEMPO           0x00004002L
        !           894: #define MCI_SEQ_STATUS_PORT            0x00004003L
        !           895: #define MCI_SEQ_STATUS_SLAVE           0x00004007L
        !           896: #define MCI_SEQ_STATUS_MASTER          0x00004008L
        !           897: #define MCI_SEQ_STATUS_OFFSET          0x00004009L
        !           898: #define MCI_SEQ_STATUS_DIVTYPE         0x0000400AL
        !           899: 
        !           900: #define MCI_SEQ_SET_TEMPO              0x00010000L
        !           901: #define MCI_SEQ_SET_PORT               0x00020000L
        !           902: #define MCI_SEQ_SET_SLAVE              0x00040000L
        !           903: #define MCI_SEQ_SET_MASTER             0x00080000L
        !           904: #define MCI_SEQ_SET_OFFSET             0x01000000L
        !           905: 
        !           906: typedef struct {
        !           907:     DWORD   dwCallback;
        !           908:     DWORD   dwTimeFormat;
        !           909:     DWORD   dwAudio;
        !           910:     DWORD   dwTempo;
        !           911:     DWORD   dwPort;
        !           912:     DWORD   dwSlave;
        !           913:     DWORD   dwMaster;
        !           914:     DWORD   dwOffset;
        !           915: } MCI_SEQ_SET_PARMS;
        !           916: typedef MCI_SEQ_SET_PARMS FAR * LPMCI_SEQ_SET_PARMS;
        !           917: 
        !           918: /*****************************************************************************
        !           919: 
        !           920:     Standard command parameters for animation
        !           921: 
        !           922: *****************************************************************************/
        !           923: 
        !           924: 
        !           925: #define MCI_ANIM_OPEN_WS                0x00010000L  // MCI_OPEN 
        !           926: #define MCI_ANIM_OPEN_PARENT            0x00020000L  
        !           927: #define MCI_ANIM_OPEN_NOSTATIC          0x00040000L  
        !           928: 
        !           929: #define MCI_ANIM_PLAY_SPEED             0x00010000L  // MCI_PLAY 
        !           930: #define MCI_ANIM_PLAY_REVERSE           0x00020000L  
        !           931: #define MCI_ANIM_PLAY_FAST              0x00040000L  
        !           932: #define MCI_ANIM_PLAY_SLOW              0x00080000L  
        !           933: #define MCI_ANIM_PLAY_SCAN              0x00100000L  
        !           934: 
        !           935: #define MCI_ANIM_STEP_REVERSE           0x00010000L  // MCI_STEP
        !           936: #define MCI_ANIM_STEP_FRAMES            0x00020000L
        !           937: 
        !           938: #define MCI_ANIM_STATUS_SPEED           0x00004001L  // MCI_STATUS 
        !           939: #define MCI_ANIM_STATUS_FORWARD         0x00004002L
        !           940: #define MCI_ANIM_STATUS_HWND            0x00004003L
        !           941: #define MCI_ANIM_STATUS_HPAL            0x00004004L
        !           942: 
        !           943: #define MCI_ANIM_INFO_TEXT              0x00010000L  // MCI_INFO
        !           944: 
        !           945: #define MCI_ANIM_GETDEVCAPS_CAN_REVERSE 0x00004001L  // MCI_GETDEVCAPS
        !           946: #define MCI_ANIM_GETDEVCAPS_FAST_RATE   0x00004002L
        !           947: #define MCI_ANIM_GETDEVCAPS_SLOW_RATE   0x00004003L
        !           948: #define MCI_ANIM_GETDEVCAPS_NORMAL_RATE 0x00004004L
        !           949: #define MCI_ANIM_GETDEVCAPS_PALETTES    0x00004006L
        !           950: #define MCI_ANIM_GETDEVCAPS_CAN_STRETCH 0x00004007L
        !           951: #define MCI_ANIM_GETDEVCAPS_MAX_WINDOWS 0x00004008L
        !           952: 
        !           953: #define MCI_ANIM_REALIZE_NORM           0x00010000L  // MCI_REALIZE
        !           954: #define MCI_ANIM_REALIZE_BKGD           0x00020000L
        !           955: 
        !           956: #define MCI_ANIM_WINDOW_HWND            0x00010000L  // MCI_WINDOW
        !           957: #define MCI_ANIM_WINDOW_DEFAULT         0x00020000L
        !           958: #define MCI_ANIM_WINDOW_STATE           0x00040000L
        !           959: #define MCI_ANIM_WINDOW_TEXT            0x00080000L
        !           960: 
        !           961: #define MCI_ANIM_RECT                   0x00010000L  // MCI_SOURCE,MCI_DESTINATION, MCI_UPDATE
        !           962: 
        !           963: #define MCI_ANIM_PUT_SOURCE             0x00020000L  // MCI_PUT
        !           964: #define MCI_ANIM_PUT_DESTINATION        0x00040000L 
        !           965: 
        !           966: #define MCI_ANIM_WHERE_SOURCE           0x00020000L  // MCI_WHERE
        !           967: #define MCI_ANIM_WHERE_DESTINATION      0x00040000L 
        !           968: 
        !           969: #define MCI_ANIM_UPDATE_HDC             0x00020000L  // MCI_UPDATE
        !           970: 
        !           971: typedef struct {
        !           972:     DWORD   dwCallback;
        !           973:     WORD    wDeviceID;       
        !           974:     WORD    wReserved0;
        !           975:     LPSTR   lpstrDeviceType; 
        !           976:     LPSTR   lpstrElementName;
        !           977:     LPSTR   lpstrAlias;      
        !           978:     DWORD   dwStyle;
        !           979:     WORD    hWndParent;          
        !           980:     WORD    wReserved1;
        !           981: } MCI_ANIM_OPEN_PARMS;
        !           982: typedef MCI_ANIM_OPEN_PARMS FAR *LPMCI_ANIM_OPEN_PARMS;
        !           983: 
        !           984: typedef struct {
        !           985:     DWORD   dwCallback;
        !           986:     DWORD   dwFrom;         
        !           987:     DWORD   dwTo;           
        !           988:     DWORD   dwSpeed;          
        !           989: } MCI_ANIM_PLAY_PARMS;
        !           990: typedef MCI_ANIM_PLAY_PARMS FAR *LPMCI_ANIM_PLAY_PARMS;
        !           991: 
        !           992: typedef struct {
        !           993:     DWORD   dwCallback;
        !           994:     DWORD   dwFrames;
        !           995: } MCI_ANIM_STEP_PARMS;
        !           996: typedef MCI_ANIM_STEP_PARMS FAR *LPMCI_ANIM_STEP_PARMS;
        !           997: 
        !           998: typedef struct {
        !           999:     DWORD   dwCallback;
        !          1000:     DWORD   dwTimeFormat;
        !          1001:     DWORD   dwAudio;
        !          1002: } MCI_ANIM_SET_PARMS;
        !          1003: typedef MCI_ANIM_SET_PARMS FAR * LPMCI_ANIM_SET_PARMS;
        !          1004: 
        !          1005: typedef struct {
        !          1006:     DWORD   dwCallback;
        !          1007:     WORD    hWnd;          
        !          1008:     WORD    wReserved1;
        !          1009:     WORD    nCmdShow;          
        !          1010:     WORD    wReserved2;
        !          1011:     LPSTR   lpstrText;
        !          1012: } MCI_ANIM_WINDOW_PARMS;
        !          1013: typedef MCI_ANIM_WINDOW_PARMS FAR * LPMCI_ANIM_WINDOW_PARMS;
        !          1014: 
        !          1015: typedef struct {
        !          1016:     DWORD   dwCallback;
        !          1017:     RECT    rc;
        !          1018: } MCI_ANIM_RECT_PARMS;
        !          1019: typedef MCI_ANIM_RECT_PARMS FAR * LPMCI_ANIM_RECT_PARMS;
        !          1020: 
        !          1021: typedef struct {
        !          1022:     DWORD   dwCallback;
        !          1023:     RECT    rc;
        !          1024:     HDC     hDC;
        !          1025: } MCI_ANIM_UPDATE_PARMS;
        !          1026: typedef MCI_ANIM_UPDATE_PARMS FAR * LPMCI_ANIM_UPDATE_PARMS;
        !          1027: 
        !          1028: 
        !          1029: /*****************************************************************************
        !          1030: 
        !          1031:     Standard command parameters for overlay
        !          1032: 
        !          1033: *****************************************************************************/
        !          1034: 
        !          1035: 
        !          1036: #define MCI_OVLY_OPEN_WS                0x00010000L  // MCI_OPEN 
        !          1037: #define MCI_OVLY_OPEN_PARENT            0x00020000L  
        !          1038: 
        !          1039: #define MCI_OVLY_STATUS_HWND            0x00004001L
        !          1040: 
        !          1041: #define MCI_OVLY_INFO_TEXT              0x00010000L  // MCI_INFO
        !          1042: 
        !          1043: #define MCI_OVLY_GETDEVCAPS_CAN_STRETCH 0x00004001L
        !          1044: #define MCI_OVLY_GETDEVCAPS_CAN_FREEZE  0x00004002L
        !          1045: #define MCI_OVLY_GETDEVCAPS_MAX_WINDOWS 0x00004003L
        !          1046: 
        !          1047: #define MCI_OVLY_WINDOW_HWND            0x00010000L  // MCI_WINDOW
        !          1048: #define MCI_OVLY_WINDOW_DEFAULT         0x00020000L
        !          1049: #define MCI_OVLY_WINDOW_STATE           0x00040000L
        !          1050: #define MCI_OVLY_WINDOW_TEXT            0x00080000L
        !          1051: 
        !          1052: #define MCI_OVLY_RECT                   0x00010000L  // MCI_WHERE, MCI_UPDATE, MCI_FREEZE, MCI_UNFREEZE
        !          1053: 
        !          1054: #define MCI_OVLY_PUT_SOURCE             0x00020000L  // MCI_PUT
        !          1055: #define MCI_OVLY_PUT_DESTINATION        0x00040000L 
        !          1056: #define MCI_OVLY_PUT_FRAME              0x00080000L 
        !          1057: 
        !          1058: #define MCI_OVLY_WHERE_SOURCE           0x00020000L  // MCI_WHERE
        !          1059: #define MCI_OVLY_WHERE_DESTINATION      0x00040000L 
        !          1060: #define MCI_OVLY_WHERE_FRAME            0x00080000L 
        !          1061: 
        !          1062: #define MCI_OVLY_UPDATE_HDC             0x00020000L  // MCI_UPDATE
        !          1063: 
        !          1064: typedef struct {
        !          1065:     DWORD   dwCallback;
        !          1066:     WORD    wDeviceID;       
        !          1067:     WORD    wReserved0;
        !          1068:     LPSTR   lpstrDeviceType; 
        !          1069:     LPSTR   lpstrElementName;
        !          1070:     LPSTR   lpstrAlias;      
        !          1071:     DWORD   dwStyle;
        !          1072:     WORD    hWndParent;          
        !          1073:     WORD    wReserved1;
        !          1074:  } MCI_OVLY_OPEN_PARMS;
        !          1075: typedef MCI_OVLY_OPEN_PARMS FAR *LPMCI_OVLY_OPEN_PARMS;
        !          1076: 
        !          1077: typedef struct {
        !          1078:     DWORD   dwCallback;
        !          1079:     WORD    hWnd;          
        !          1080:     WORD    wReserved1;
        !          1081:     WORD    nCmdShow;          
        !          1082:     WORD    wReserved2;
        !          1083:     LPSTR   lpstrText;
        !          1084: } MCI_OVLY_WINDOW_PARMS;
        !          1085: typedef MCI_OVLY_WINDOW_PARMS FAR * LPMCI_OVLY_WINDOW_PARMS;
        !          1086: 
        !          1087: typedef struct {
        !          1088:     DWORD   dwCallback;
        !          1089:     RECT    rc;
        !          1090: } MCI_OVLY_RECT_PARMS;
        !          1091: typedef MCI_OVLY_RECT_PARMS FAR * LPMCI_OVLY_RECT_PARMS;
        !          1092: 
        !          1093: typedef struct {
        !          1094:     DWORD   dwCallback;
        !          1095:     RECT    rc;
        !          1096:     HDC     hDC;
        !          1097: } MCI_OVLY_UPDATE_PARMS;
        !          1098: typedef MCI_OVLY_UPDATE_PARMS FAR * LPMCI_OVLY_UPDATE_PARMS;
        !          1099: 
        !          1100:  
        !          1101: /*****************************************************************************
        !          1102: 
        !          1103:     MCI support functions
        !          1104: 
        !          1105: *****************************************************************************/
        !          1106: 
        !          1107: 
        !          1108: extern DWORD mciSendCommand (WORD wDeviceID, WORD wMessage,
        !          1109:                                        DWORD dwParam1, DWORD dwParam2);
        !          1110: 
        !          1111: extern DWORD mciSendString (LPSTR lpstrCommand,
        !          1112:                                   LPSTR lpstrReturnString,
        !          1113:                                   WORD wReturnLength,
        !          1114:                                   HANDLE hCallback);
        !          1115: 
        !          1116: extern WORD mciGetDeviceID (LPSTR lpstrName);
        !          1117: 
        !          1118: extern WORD mciGetDeviceIDFromElementID (DWORD dwElementID,
        !          1119:                                          LPSTR lpstrType);
        !          1120: 
        !          1121: extern WORD mciGetErrorString (DWORD wError, 
        !          1122:                                LPSTR lpstrBuffer,
        !          1123:                                WORD wLength);
        !          1124: 
        !          1125: extern BOOL mciExecute (LPSTR lpstrCommand);
        !          1126: 
        !          1127: 
        !          1128: 
        !          1129: #endif // _WINMM_

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.