home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / cset21v6.zip / MMPM2TK / TK / H / MMIOOS2.H < prev    next >
C/C++ Source or Header  |  1993-04-23  |  41KB  |  969 lines

  1.  
  2. /***************************************************************************\
  3. *
  4. * Module Name: MMIOOS2.H
  5. *
  6. * OS/2 2.0 Multimedia Extensions Input/Output Manager Definitions file
  7. *  NOTE:  All structures are UNPACKED!!
  8. *
  9. * Copyright (c) International Business Machines Corporation 1990,1991,1992
  10. *                         All Rights Reserved
  11. *
  12. *
  13. \****************************************************************************/
  14.  
  15.  
  16. #ifndef _MMIO_H_
  17. #define _MMIO_H_
  18.  
  19. #pragma pack(4)
  20.  
  21. /*
  22.  * MMIO symbols.
  23.  */
  24.  
  25. #ifndef _OS2MEDEF_H
  26. typedef ULONG  HMMIO;
  27. #endif
  28.  
  29. typedef HMMIO  HMMCF;
  30. typedef ULONG  FOURCC;
  31. typedef FOURCC *PFOURCC;
  32.  
  33. /*
  34.  * MS compat defines.
  35.  */
  36.  
  37. #define HPSTR PSZ
  38.  
  39. /*
  40.  * Define MMIO public data structures.
  41.  */
  42.  
  43. typedef struct _MMCKINFO {    /* mmckinfo                             */
  44.    FOURCC   ckid;             /* Chunk id (FOURCC)                    */
  45.    ULONG    ckSize;           /* Chunk Size (bytes)                   */
  46.    FOURCC   fccType;          /* FourCC Type (if ckid RIFF or LIST)   */
  47.    ULONG    ulDataOffset;     /* File Offset of data portion of chunk */
  48.    ULONG    ulFlags;          /* MMIO_DIRTY (if new chunk)            */
  49.    } MMCKINFO;
  50.  
  51. typedef MMCKINFO FAR *PMMCKINFO;
  52. #define PMMCKINFO  PMMCKINFO     /* MS compat define */
  53.  
  54. typedef LONG (APIENTRY MMIOPROC)                    /*  Format must       */
  55.                                 ( PVOID pmmioinfo,  /*  appear this       */
  56.                                   USHORT usMsg,     /*  way for h2inc     */
  57.                                   LONG lParam1,     /*  to work properly. */
  58.                                   LONG lParam2 );
  59.  
  60. typedef MMIOPROC FAR *PMMIOPROC;
  61. typedef MMIOPROC FAR **PPMMIOPROC;
  62. #define PMMIOPROC  PMMIOPROC     /* MS compat define */
  63.  
  64. typedef struct _MMIOINFO {       /* mmioinfo                    */
  65.    ULONG       ulFlags;          /* Open flags                  */
  66.    FOURCC      fccIOProc;        /* FOURCC of the IOProc to use */
  67.    PMMIOPROC   pIOProc;          /* Function Pointer to IOProc to use */
  68.    ULONG       ulErrorRet;       /* Extended Error return code  */
  69.    LONG        cchBuffer;        /* I/O buff size (if used), Fsize if MEM */
  70.    PCHAR       pchBuffer;        /* Start of I/O buff           */
  71.    PCHAR       pchNext;          /* Next char to read or write in buff */
  72.    PCHAR       pchEndRead;       /* Last char in buff can be read + 1  */
  73.    PCHAR       pchEndWrite;      /* Last char in buff can be written + 1 */
  74.    LONG        lBufOffset;       /* Offset in buff to pchNext */
  75.    LONG        lDiskOffset;      /* Disk offset in file       */
  76.    ULONG       aulInfo[4];       /* IOProc specific fields    */
  77.    LONG        lLogicalFilePos;  /* Actual file position, buffered or not */
  78.    ULONG       ulTranslate;      /* Translation field         */
  79.    FOURCC      fccChildIOProc;   /* FOURCC of Child IOProc    */
  80.    PVOID       pExtraInfoStruct; /* Pointer to a structure of related data */
  81.    HMMIO       hmmio;            /* Handle to media element   */
  82.    } MMIOINFO;
  83.  
  84. typedef MMIOINFO FAR *PMMIOINFO;
  85. #define PMMIOINFO  PMMIOINFO     /* MS compat define */
  86.  
  87. typedef struct _MMCFINFO {       /* mmcfinfo                  */
  88.    ULONG    ulHeaderSize;        /* CTOC header size          */
  89.    ULONG    ulEntriesTotal;      /* Num of CTOC table entries */
  90.    ULONG    ulEntriesDeleted;    /* Num of CTOC table entries deleted */
  91.    ULONG    ulEntriesUnused;     /* Num of unused CTOC entries */
  92.    ULONG    ulBytesTotal;        /* Combined byte size of all CGRP elements */
  93.    ULONG    ulBytesDeleted;      /* Byte size of all deleted CGRP elements */
  94.    ULONG    ulHeaderFlags;       /* Info about entire compound file (CF)  */
  95.    USHORT   usEntrySize;         /* Size of each CTOC table entry */
  96.    USHORT   usNameSize;          /* Size of name field in entry, default 13 */
  97.    USHORT   usExHdrFields;       /* Num CTOC header extra fields */
  98.    USHORT   usExEntFields;       /* Num CTOC entry extra fields  */
  99.    } MMCFINFO;
  100.  
  101. /*
  102.  * Note:  The are variable length ULONG arrays that may be present
  103.  *        at the end of the MMCFINFO structure.
  104.  */
  105.  
  106. /*   ULONG    (*aulExHdrFldUsage)[];  * Array of header extra usage fields */
  107. /*   ULONG    (*aulExtEntFldUsage)[]; * Array of entry extra usage fields  */
  108. /*   ULONG    (*aulExHdrField)[];     * Array of header extra fields       */
  109.  
  110. typedef MMCFINFO FAR *PMMCFINFO;
  111. #define PMMCFINFO  PMMCFINFO     /* MS compat define */
  112.  
  113. typedef struct _MMCTOCENTRY {    /* mmctocentry                   */
  114.    ULONG    ulOffset;            /* Offset of element within CGRP */
  115.    ULONG    ulSize;              /* Size of element               */
  116.    ULONG    ulMedType;           /* Fourcc of element             */
  117.    ULONG    ulMedUsage;          /* Possible sub type             */
  118.    ULONG    ulCompressTech;      /* Compression technique used    */
  119.    ULONG    ulUncompressBytes;   /* Actual size of uncompressed element */
  120.    } MMCTOCENTRY;
  121.  
  122. /*
  123.  * Note:  A variable length name field and possibly a ULONG array may
  124.  *        be present at the end of the MMCTOCENTRY structure.
  125.  */
  126.  
  127. /*   ULONG    (*aulExEntField)[];  * Array of entry extra fields */
  128. /*   PSZ      pszElementName[];    * Name of element, variable length */
  129.  
  130. typedef MMCTOCENTRY FAR *PMMCTOCENTRY;
  131. #define PMMCTOCENTRY  PMMCTOCENTRY /* MS compat define */
  132.  
  133. /*
  134.  * Conversion Flags/Data Structures:
  135.  */
  136.  
  137. #define MMIO_MEDIATYPE_IMAGE        0x00000001L  /* Image media */
  138. #define MMIO_MEDIATYPE_AUDIO        0x00000002L  /* Audio media */
  139. #define MMIO_MEDIATYPE_MIDI         0x00000004L  /* MIDI media  */
  140. #define MMIO_MEDIATYPE_COMPOUND     0x00000008L  /* Cmpd media  */
  141. #define MMIO_MEDIATYPE_OTHER        0x00000010L  /* Other media */
  142. #define MMIO_MEDIATYPE_UNKNOWN      0x00000020L  /* Unknown media */
  143. #define MMIO_MEDIATYPE_DIGITALVIDEO 0x00000040L  /* Digital Video */
  144. #define MMIO_MEDIATYPE_ANIMATION    0x00000080L  /* Future: Not Supported */
  145. #define MMIO_MEDIATYPE_MOVIE        0x00000100L  /* Movie File */
  146.  
  147. #define MMIO_CANREADTRANSLATED              0x00000001L /*IOProc Cpbilty Flgs*/
  148. #define MMIO_CANWRITETRANSLATED             0x00000002L /* "       "       " */
  149. #define MMIO_CANREADWRITETRANSLATED         0x00000004L /* "       "       " */
  150. #define MMIO_CANREADUNTRANSLATED            0x00000008L /* "       "       " */
  151. #define MMIO_CANWRITEUNTRANSLATED           0x00000010L /* "       "       " */
  152. #define MMIO_CANREADWRITEUNTRANSLATED       0x00000020L /* "       "       " */
  153. #define MMIO_CANSEEKTRANSLATED              0x00000040L /* "       "       " */
  154. #define MMIO_CANSEEKUNTRANSLATED            0x00000080L /* "       "       " */
  155. #define MMIO_CANINSERTUNTRANSLATED          0x00000100L /* "       "       " */
  156. #define MMIO_CANSAVEUNTRANSLATED            0x00000200L /* "       "       " */
  157. #define MMIO_CANINSERTTRANSLATED            0x00000400L /* "       "       " */
  158. #define MMIO_CANSAVETRANSLATED              0x00000800L /* "       "       " */
  159. #define MMIO_CANMULTITRACKREADTRANSLATED    0x00001000L /* "       "       " */
  160. #define MMIO_CANMULTITRACKREADUNTRANSLATED  0x00002000L /* "       "       " */
  161. #define MMIO_CANMULTITRACKWRITETRANSLATED   0x00004000L /* "       "       " */
  162. #define MMIO_CANMULTITRACKWRITEUNTRANSLATED 0x00008000L /* "       "       " */
  163. #define MMIO_CANTRACKSEEKTRANSLATED         0x00010000L /* "       "       " */
  164. #define MMIO_CANTRACKSEEKUNTRANSLATED       0x00020000L /* "       "       " */
  165. #define MMIO_CANTRACKREADTRANSLATED         0x00040000L /* "       "       " */
  166. #define MMIO_CANTRACKREADUNTRANSLATED       0x00080000L /* "       "       " */
  167. #define MMIO_CANTRACKWRITETRANSLATED        0x00100000L /* "       "       " */
  168. #define MMIO_CANTRACKWRITEUNTRANSLATED      0x00200000L /* "       "       " */
  169.  
  170. #define MMIO_IOPROC_STORAGESYSTEM     0x00000001L  /* IOProc Types */
  171. #define MMIO_IOPROC_FILEFORMAT        0x00000002L
  172. #define MMIO_IOPROC_DATAFORMAT        0x00000004L
  173.  
  174. typedef struct _MMFORMATINFO {         /* mmformatinfo             */
  175.    ULONG    ulStructLen;               /* Length of this structure */
  176.    FOURCC   fccIOProc;                 /* IOProc identifier        */
  177.    ULONG    ulIOProcType;              /* Type of IOProc           */
  178.    ULONG    ulMediaType;               /* Media Type               */
  179.    ULONG    ulFlags;                   /* IOProc capability flags  */
  180.    CHAR     szDefaultFormatExt[sizeof(FOURCC)  + 1];
  181.                                        /* Default extension 4 + null */
  182.    ULONG    ulCodePage;                /* Code Page                  */
  183.    ULONG    ulLanguage;                /* Language                   */
  184.    LONG     lNameLength;               /* length of identifier string */
  185.    } MMFORMATINFO;
  186.  
  187. typedef MMFORMATINFO *PMMFORMATINFO;
  188.  
  189. #define MMIO_IMAGE_UNKNOWN          0x00000000L  /* Unknown image content */
  190. #define MMIO_IMAGE_DRAWING          0x00000001L  /* Simple drawing        */
  191. #define MMIO_IMAGE_GRAPH            0x00000002L  /* Graphs & Cartoons     */
  192. #define MMIO_IMAGE_PHOTO            0x00000004L  /* Varying Color & Shades */
  193.  
  194. #ifdef INCL_GPI
  195. #ifdef INCL_GPIBITMAPS
  196.  
  197. #define MAX_PALETTE  256
  198.  
  199. typedef struct _XDIBHDR_PREFIX {             /* XDIB Header Prefix */
  200.    ULONG ulMemSize;                          /* Length of bitmap   */
  201.    ULONG ulPelFormat;
  202.    USHORT usTransType;
  203.    ULONG ulTransVal;
  204.    } XDIBHDR_PREFIX;
  205.  
  206. typedef struct _MMXDIBHEADER {               /* XDIB Header */
  207.    XDIBHDR_PREFIX    XDIBHeaderPrefix;
  208.    BITMAPINFOHEADER2 BMPInfoHeader2;
  209.    } MMXDIBHEADER;
  210.  
  211. typedef MMXDIBHEADER *PMMXDIBHEADER;
  212.  
  213. typedef struct _MMIMAGEHEADER {              /* mmimageheader   */
  214.    ULONG             ulHeaderLength;         /* Length in Bytes */
  215.    ULONG             ulContentType;          /* Image content   */
  216.    ULONG             ulMediaType;            /* Media Type      */
  217.    MMXDIBHEADER      mmXDIBHeader;           /* OS/2 2.0 PM compat header */
  218.    RGB2              bmiColors[MAX_PALETTE]; /* PM compatible palette */
  219.    } MMIMAGEHEADER;
  220.  
  221. typedef MMIMAGEHEADER *PMMIMAGEHEADER;
  222.  
  223. #endif
  224. #endif
  225.  
  226. #define MMIO_AUDIO_UNKNOWN          0x00000000L  /* Unknown image content  */
  227. #define MMIO_AUDIO_VOICE            0x00000001L  /* Limited Range          */
  228. #define MMIO_AUDIO_MUSIC            0x00000002L  /* FM Radio or equivalent */
  229. #define MMIO_AUDIO_HIFI             0x00000004L  /* High quality recording */
  230.  
  231. typedef struct _WAVE_HEADER {                /* waveheader          */
  232.    USHORT          usFormatTag;              /* Type of wave format */
  233.    USHORT          usChannels;               /* Number of channels  */
  234.    ULONG           ulSamplesPerSec;          /* Sampling rate       */
  235.    ULONG           ulAvgBytesPerSec;         /* Avg bytes per sec   */
  236.    USHORT          usBlockAlign;             /* Block Alignment in bytes */
  237.    USHORT          usBitsPerSample;          /* Bits per sample     */
  238.    } WAVE_HEADER;
  239.  
  240. typedef struct _XWAV_HEADERINFO {            /* xwaveheader info        */
  241.    ULONG           ulAudioLengthInMS;        /* Audio data in millisecs */
  242.    ULONG           ulAudioLengthInBytes;     /* Audio data in bytes     */
  243.    ULONG           ulReserved;               /* reserved                */
  244.    } XWAV_HEADERINFO;
  245.  
  246. typedef struct _MMXWAV_HEADER {              /* mmxwaveheader            */
  247.    WAVE_HEADER     WAVEHeader;               /* Per RIFF WAVE Definition */
  248.    XWAV_HEADERINFO XWAVHeaderInfo;           /* Extended wave definition */
  249.    } MMXWAV_HEADER;
  250.  
  251. typedef struct _MMAUDIOHEADER {              /* mmaudioheader   */
  252.    ULONG           ulHeaderLength;           /* Length in Bytes */
  253.    ULONG           ulContentType;            /* Image content   */
  254.    ULONG           ulMediaType;              /* Media Type      */
  255.    MMXWAV_HEADER   mmXWAVHeader;             /* header          */
  256.    } MMAUDIOHEADER;
  257.  
  258. typedef MMAUDIOHEADER *PMMAUDIOHEADER;
  259.  
  260. #define MMIO_MIDI_UNKNOWN          0x00000000L  /* Unknown midi content   */
  261. #define MMIO_MIDI_VOICE            0x00000001L  /* Limited Range          */
  262. #define MMIO_MIDI_MUSIC            0x00000002L  /* FM Radio or equivalent */
  263. #define MMIO_MIDI_HIFI             0x00000004L  /* High quality recording */
  264.  
  265. /*
  266.  * MMPMMMIO.INI file structure and definitions.
  267.  */
  268.  
  269. #define DLLNAME_SIZE     CCHMAXPATH
  270. #define PROCNAME_SIZE    32
  271. #define MAX_EXTENSION_NAME  4
  272.  
  273. typedef struct _MMINIFILEINFO {               /* mminifileinfo          */
  274.    FOURCC      fccIOProc;                     /* IOProc identifier      */
  275.    CHAR        szDLLName[DLLNAME_SIZE];       /* DLL name string        */
  276.    CHAR        szProcName[PROCNAME_SIZE];     /* Procedure name string  */
  277.    ULONG       ulFlags;                       /* Flags for Preload      */
  278.    ULONG       ulExtendLen;                   /* Length of ext fields   */
  279.    ULONG       ulMediaType;                   /* Media type             */
  280.    ULONG       ulIOProcType;                  /* Type of IOProc         */
  281.    CHAR        szDefExt[sizeof(MAX_EXTENSION_NAME)];
  282.                                               /* Default file extension */
  283.    } MMINIFILEINFO;
  284.  
  285. typedef MMINIFILEINFO *PMMINIFILEINFO;
  286.  
  287. /*
  288.  * CODEC Structures and type definitions for Rel. 1.1
  289.  */
  290.  
  291.  
  292. #define CODEC_INFO_SIZE     8
  293. #define CODEC_HW_NAME_SIZE 32
  294.  
  295. #ifdef INCL_MMIO_CODEC
  296.  
  297. typedef MMIOPROC FAR *PCODECPROC;
  298.  
  299. typedef struct _CODECINIFILEINFO {           /* codecinifileinfo            */
  300.    ULONG       ulStructLen;                  /* length of this structure    */
  301.    FOURCC      fcc;                          /* File Format ID              */
  302.    CHAR        szDLLName[DLLNAME_SIZE];      /* DLL name string             */
  303.    CHAR        szProcName[PROCNAME_SIZE];    /* Procedure name string       */
  304.    ULONG       ulCompressType;               /* Compression Type            */
  305.    ULONG       ulCompressSubType;            /* Compression SubType         */
  306.    ULONG       ulMediaType;                  /* Media type                  */
  307.    ULONG       ulCapsFlags;                  /* capabilities flags          */
  308.    ULONG       ulFlags;                      /* flags                       */
  309.    CHAR        szHWID[CODEC_HW_NAME_SIZE];   /* specific information        */
  310.    ULONG       ulMaxSrcBufLen;               /* max source buffer length    */
  311.    ULONG       ulSyncMethod;                 /* Synchronization method      */
  312.    ULONG       ulReserved1;                  /* Reserved1                   */
  313.    ULONG       ulXalignment;                 /* x alignment - video only    */
  314.    ULONG       ulYalignment;                 /* y alignment - video only    */
  315.    ULONG       ulSpecInfo[CODEC_INFO_SIZE];  /* specific information        */
  316.    } CODECINIFILEINFO;
  317.  
  318. typedef CODECINIFILEINFO *PCODECINIFILEINFO;
  319.  
  320. /*
  321.  * CODECINIFILEINFO synchronization method (ulSyncMethod) values.
  322.  */
  323.  
  324. #define CODEC_SYNC_METHOD_NO_DROP_FRAMES                  0
  325. #define CODEC_SYNC_METHOD_DROP_FRAMES_IMMEDIATELY         1
  326. #define CODEC_SYNC_METHOD_DROP_FRAMES_PRECEDING_KEY       2
  327.  
  328. /*
  329.  * CODECINIFILEINFO capabilities (ulCapsFlags) values.
  330.  */
  331.  
  332. #define CODEC_COMPRESS            0x00000001
  333. #define CODEC_DECOMPRESS          0x00000002
  334. #define CODEC_WINDOW_CLIPPING     0x00000004
  335. #define CODEC_PALETTE_TRANS       0x00000008
  336. #define CODEC_SELFHEAL            0x00000010
  337. #define CODEC_SCALE_PEL_DOUBLE    0x00000020
  338. #define CODEC_SCALE_PEL_HALVED    0x00000040
  339. #define CODEC_SCALE_CONTINUOUS    0x00000080
  340. #define CODEC_MULAPERTURE         0x00000100
  341. #define CODEC_4_BIT_COLOR         0x00000200
  342. #define CODEC_8_BIT_COLOR         0x00000400
  343. #define CODEC_16_BIT_COLOR        0x00000800
  344. #define CODEC_24_BIT_COLOR        0x00001000
  345. #define CODEC_HARDWARE            0x00002000
  346. #define CODEC_SYMMETRIC           0x00004000
  347. #define CODEC_ASYMMETRIC          0x00008000
  348. #define CODEC_DIRECT_DISPLAY      0x00010000
  349. #define CODEC_DEFAULT             0x00020000
  350. #define CODEC_ORIGIN_LOWERLEFT    0x00040000
  351. #define CODEC_ORIGIN_UPPERLEFT    0x00080000
  352. #define CODEC_SET_QUALITY         0x00100000  /* quality level is settable */
  353. #define CODEC_DATA_CONSTRAINT     0x00200000  /* data constraint supported */
  354.  
  355.  
  356.  
  357.  
  358. /*
  359.  * CODECINIFILEINFO Flag Values (ulFlags) values.
  360.  */
  361.  
  362.  
  363. /* Bit definitions for mmioSet() */
  364. #define         MMIO_SET_EXTENDEDINFO                   0X0001
  365. #define         MMIO_QUERY_EXTENDEDINFO_BASE            0x0002
  366. #define         MMIO_QUERY_EXTENDEDINFO_ALL             0x0004
  367.  
  368.  
  369. /* CODECASSOC structure */
  370. typedef  struct _CODECASSOC{             /* codec information */
  371.    PVOID  pCodecOpen;                    /* codec specific open header */
  372.    PCODECINIFILEINFO pCODECIniFileInfo;  /* codecinifileinfo           */
  373.    } CODECASSOC;
  374.  
  375. /* PCODECASSOC definition */
  376. typedef CODECASSOC      *PCODECASSOC;
  377.  
  378.  
  379. /* MMEXTENDINFO structure */
  380. typedef  struct _MMEXTENDINFO{            /* extended file information */
  381.    ULONG        ulStructLen;              /* length of this structure  */
  382.    ULONG        ulBufSize;                /* total buffer size */
  383.    ULONG        ulFlags;                  /* flags */
  384.    ULONG        ulTrackID;                /* track ID */
  385.    ULONG        ulNumCODECs;              /* number of codec entries */
  386.    PCODECASSOC  pCODECAssoc;              /* pointer to codec info array */
  387.    } MMEXTENDINFO;
  388.  
  389. /* PMMEXTENDINFO definition */
  390. typedef MMEXTENDINFO    *PMMEXTENDINFO;
  391.  
  392. /*
  393.  * MMEXTENDINFO operation (ulFlags) values.
  394.  */
  395. #define MMIO_TRACK                0x00000001
  396. #define MMIO_NORMAL_READ          0x00000002
  397. #define MMIO_SCAN_READ            0x00000004
  398. #define MMIO_REVERSE_READ         0x00000008
  399. #define MMIO_CODEC_ASSOC          0x00000100
  400.  
  401. #define MMIO_RESETTRACKS          -1       /*  Turns off the active track number. */
  402.  
  403. #define CODEC_START              0x0EC0
  404. #define CODEC_END                0x0EFF
  405.  
  406. #define MMIOM_CODEC_CLOSE             CODEC_START + 1
  407. #define MMIOM_CODEC_OPEN              CODEC_START + 2
  408. #define MMIOM_CODEC_QUERYNAME         CODEC_START + 3
  409. #define MMIOM_CODEC_QUERYNAMELENGTH   CODEC_START + 4
  410. #define MMIOM_CODEC_COMPRESS          CODEC_START + 5
  411. #define MMIOM_CODEC_DECOMPRESS        CODEC_START + 6
  412.  
  413.  
  414. #endif
  415. /* End CODEC include */
  416.  
  417. /*
  418.  * Flags:
  419.  */
  420.  
  421. #define MMIO_CREATE     0x00000001L       /* Open */
  422. #define MMIO_CTOCFIRST  0x00000002L       /* Open */
  423. #define MMIO_READ       0x00000004L       /* Open */
  424. #define MMIO_WRITE      0x00000008L       /* Open */
  425. #define MMIO_READWRITE  0x00000010L       /* Open */
  426. #define MMIO_COMPAT     0x00000020L       /* Open */
  427. #define MMIO_EXCLUSIVE  0x00000040L       /* Open */
  428. #define MMIO_DENYWRITE  0x00000080L       /* Open */
  429. #define MMIO_DENYREAD   0x00000100L       /* Open */
  430. #define MMIO_DENYNONE   0x00000200L       /* Open */
  431. #define MMIO_ALLOCBUF   0x00000400L       /* Open */
  432. #define MMIO_DELETE     0x00000800L       /* Open */
  433.  
  434. #define MMIO_USE_TEMP   0x00001000L       /* Open/Close/Save */
  435.  
  436. #define MMIO_INSERTON   0x00000001L       /* Insert */
  437. #define MMIO_INSERTOFF  0x00000002L       /* Insert */
  438.  
  439. #define MMIO_RWMODE     0x00001000L       /* Open */
  440. #define MMIO_SHAREMODE  0x00002000L       /* Open */
  441.  
  442. #define MMIO_DIRTY      0x00004000L       /* Write */
  443.  
  444. #define MMIO_VERTBAR     0x00008000L       /* Open */
  445. #define MMIO_BUFSHARED   0x00010000L       /* Open */
  446. #define MMIO_APPEND      0x00020000L       /* Open */
  447. #define MMIO_NOIDENTIFY  0x00040000L       /* Open */
  448.  
  449.  
  450. #define MMIO_FINDFIRST   0x00000001L       /* CF Find Entry */
  451. #define MMIO_FINDNEXT    0x00000002L       /* CF Find Entry */
  452. #define MMIO_FINDUNUSED  0x00000004L       /* CF Find Entry */
  453. #define MMIO_FINDDELETED 0x00000008L       /* CF Find Entry */
  454.  
  455. #define MMIO_CHANGEDELETED 0x0001         /* CF Change Entry */
  456.  
  457. #define MMIO_CF_FQNAME     0x0001         /* CF Compact      */
  458.  
  459. #define MMIO_FHOPEN      0x0001           /* Close */
  460.  
  461. #define MMIO_EMPTYBUF    0x0001           /* Flush */
  462.  
  463. #define MMIO_CREATERIFF  0x0001           /* CreateChunk */
  464. #define MMIO_CREATELIST  0x0002           /* CreateChunk */
  465. #define MMIO_FINDCHUNK   0x0004           /* Descend     */
  466. #define MMIO_FINDRIFF    0x0008           /* Descend     */
  467. #define MMIO_FINDLIST    0x0010           /* Descend     */
  468.  
  469. #define CTOC_HF_SEQUENTIAL 0x00000001L    /* CTOC ulHeaderFlags */
  470. #define CTOC_HF_MEDSUBTYPE 0x00000002L    /* CTOC ulHeaderFlags */
  471.  
  472. #define CTOC_EFU_UNUSED          0x00000000L /* CTOC extra usage code */
  473. #define CTOC_EFU_LASTMODTIME     0x00000001L /* CTOC extra usage code */
  474. #define CTOC_EFU_CODEPAGE        0x00000002L /* CTOC extra usage code */
  475. #define CTOC_EFU_LANGUAGE        0x00000003L /* CTOC extra usage code */
  476. #define CTOC_EFU_COMPRESSPARAM0  0x00000005L /* CTOC extra usage code */
  477. #define CTOC_EFU_COMPRESSPARAM1  0x00000006L /* CTOC extra usage code */
  478. #define CTOC_EFU_COMPRESSPARAM2  0x00000007L /* CTOC extra usage code */
  479. #define CTOC_EFU_COMPRESSPARAM3  0x00000008L /* CTOC extra usage code */
  480. #define CTOC_EFU_COMPRESSPARAM4  0x00000009L /* CTOC extra usage code */
  481. #define CTOC_EFU_COMPRESSPARAM5  0x0000000AL /* CTOC extra usage code */
  482. #define CTOC_EFU_COMPRESSPARAM6  0x0000000BL /* CTOC extra usage code */
  483. #define CTOC_EFU_COMPRESSPARAM7  0x0000000CL /* CTOC extra usage code */
  484. #define CTOC_EFU_COMPRESSPARAM8  0x0000000DL /* CTOC extra usage code */
  485. #define CTOC_EFU_COMPRESSPARAM9  0x0000000EL /* CTOC extra usage code */
  486. #define CTOC_CHARSET_STANDARD    0x00000000L /* CTOC charset value    */
  487.  
  488. #define MMIO_INSTALLPROC         0x00000001L /* Install IO Proc */
  489. #define MMIO_REMOVEPROC          0x00000002L /* Install IO Proc */
  490. #define MMIO_FINDPROC            0x00000004L /* Install IO Proc */
  491.  
  492. #define MMIO_MATCHFIRST          0x00000010L /* Ini File Handler */
  493. #define MMIO_MATCHNEXT           0x00000020L /* Ini File Handler */
  494. #define MMIO_MATCHFOURCC         0x00000040L /* Ini File Handler */
  495. #define MMIO_MATCHDLL            0x00000080L /* Ini File Handler */
  496. #define MMIO_MATCHPROCEDURENAME  0x00000100L /* Ini File Handler */
  497. #define MMIO_FULLPATH            0x00000200L /* Ini File Handler */
  498. #define MMIO_NOVERIFY            0x00000400L /* Ini File Handler */
  499. #define MMIO_MATCHCOMPRESSTYPE   0x00000800L /* Ini File Handler */
  500. #define MMIO_EXTENDED_STRUCT     0x00001000L /* Ini File ulFlags */
  501. #define MMIO_MATCHCOMPRESSSUBTYPE 0x00002000L /* Ini File Handler */
  502. #define MMIO_MATCHHWID           0x00004000L /* Ini File Handler */
  503. #define MMIO_MATCHCAPSFLAGS      0x00008000L /* Ini File Handler */
  504. #define MMIO_SKIPMATCH           0x00010000L /* Ini/Load Handler */
  505.  
  506. #define MMIO_TOUPPER             0x0001      /* StringToFourcc */
  507.  
  508. #define MMIO_CF_ENTRY_EXISTS     0x00000001L /* Add CGRP element */
  509.  
  510. #define MMIO_FORCE_IDENTIFY_SS   0x00000001L /* Identify */
  511. #define MMIO_FORCE_IDENTIFY_FF   0x00000002L /* Identify */
  512.  
  513. #define MMIO_NOTRANSLATE         0x00000000L /* Translation */
  514. #define MMIO_TRANSLATEDATA       0x00000001L /* Translation */
  515. #define MMIO_TRANSLATEHEADER     0x00000002L /* Translation */
  516. #define MMIO_DECOMPRESS          0x00000004L /* CODEC Decompress */
  517.  
  518. #define MMIO_DEFAULTBUFFER  8192    /* two pages under OS/2 2.0 */
  519.  
  520. #define MMIO_SEEK_IFRAME         0x00010000L  /* Seek to nearest previous IFRAME */
  521.  
  522.  
  523.  
  524. /*
  525.  * Messages :
  526.  */
  527.  
  528. #define MMIOM_START              0x0E00
  529. #define MMIOM_END                0x0EFF
  530.  
  531. #define MMIOM_GETCF              MMIOM_START + 1
  532. #define MMIOM_GETCFENTRY         MMIOM_START + 2
  533.  
  534. #define MMIOM_CLOSE              MMIOM_START + 3
  535. #define MMIOM_OPEN               MMIOM_START + 4
  536. #define MMIOM_READ               MMIOM_START + 5
  537. #define MMIOM_SEEK               MMIOM_START + 6
  538. #define MMIOM_WRITE              MMIOM_START + 7
  539.  
  540. #define MMIOM_IDENTIFYFILE       MMIOM_START + 8
  541. #define MMIOM_GETHEADER          MMIOM_START + 9
  542. #define MMIOM_SETHEADER          MMIOM_START + 10
  543. #define MMIOM_QUERYHEADERLENGTH  MMIOM_START + 11
  544. #define MMIOM_GETFORMATNAME      MMIOM_START + 12
  545. #define MMIOM_GETFORMATINFO      MMIOM_START + 13
  546. #define MMIOM_SEEKBYTIME         MMIOM_START + 14
  547. #define MMIOM_TEMPCHANGE         MMIOM_START + 15
  548. #define MMIOM_BEGININSERT        MMIOM_START + 16
  549. #define MMIOM_ENDINSERT          MMIOM_START + 17
  550. #define MMIOM_SAVE               MMIOM_START + 18
  551. #define MMIOM_SET                MMIOM_START + 19
  552. #define MMIOM_COMPRESS           MMIOM_START + 20
  553. #define MMIOM_DECOMPRESS         MMIOM_START + 21
  554. #define MMIOM_MULTITRACKREAD     MMIOM_START + 22
  555. #define MMIOM_MULTITRACKWRITE    MMIOM_START + 23
  556. #define MMIOM_DELETE             MMIOM_START + 24
  557. #define MMIOM_BEGINGROUP         MMIOM_START + 25
  558. #define MMIOM_ENDGROUP           MMIOM_START + 26
  559. #define MMIOM_UNDO               MMIOM_START + 27
  560. #define MMIOM_REDO               MMIOM_START + 28
  561. #define MMIOM_BEGINSTREAM        MMIOM_START + 29
  562. #define MMIOM_ENDSTREAM          MMIOM_START + 30
  563.  
  564. #define MMIOM_USER                0x0F00
  565. #define MMIOM_USER_END            0x0FFF
  566.  
  567. /*
  568.  * Include error codes for MMIO only.
  569.  */
  570.  
  571. #ifndef _MEERROR_H_
  572. #define INCL_MMIO_ERRORS
  573. #include <meerror.h>
  574. #endif
  575.  
  576. #define MMIO_SUCCESS                    0L
  577. #define MMIO_WARNING                    2L
  578. #define MMIO_ERROR                     -1L
  579. #define MMIOERR_UNSUPPORTED_MESSAGE    -2L
  580.  
  581. #define MMIO_CF_SUCCESS                 0L
  582. #define MMIO_CF_FAILURE                 1L
  583.  
  584. #define mmioFOURCC( ch0, ch1, ch2, ch3 )                         \
  585.                   ( (ULONG)(BYTE)(ch0) | ( (ULONG)(BYTE)(ch1) << 8 ) |    \
  586.                   ( (ULONG)(BYTE)(ch2) << 16 ) | ( (ULONG)(BYTE)(ch3) << 24 ) )
  587.  
  588. #define FOURCC_RIFF   mmioFOURCC( 'R', 'I', 'F', 'F' )
  589. #define FOURCC_LIST   mmioFOURCC( 'L', 'I', 'S', 'T' )
  590. #define FOURCC_MEM    mmioFOURCC( 'M', 'E', 'M', ' ' )
  591. #define FOURCC_DOS    mmioFOURCC( 'D', 'O', 'S', ' ' )
  592. #define FOURCC_BND    mmioFOURCC( 'B', 'N', 'D', ' ' )
  593. #define FOURCC_FREE   mmioFOURCC( 'F', 'R', 'E', 'E' )
  594. #define FOURCC_DEL    mmioFOURCC( 'D', 'E', 'L', ' ' )
  595. #define FOURCC_CTOC   mmioFOURCC( 'C', 'T', 'O', 'C' )
  596. #define FOURCC_CGRP   mmioFOURCC( 'C', 'G', 'R', 'P' )
  597. #define FOURCC_CF     mmioFOURCC( 'C', 'F', ' ', ' ' )
  598.  
  599. #define MMIO_NLS_CHARSET_INFO    8000   /* RCDATA Name ID for NLS          */
  600. #define MMIO_IOPROC_NAME_TABLE   8500   /* RCDATA Name ID for string table */
  601. #define MMIO_CODEC_NAME_TABLE    9000   /* RCDATA Name ID for Codec  table */
  602.  
  603. /*
  604.  * Numeric equivalents of fourcc's.  These are needed for the resource
  605.  * compiler.
  606.  */
  607.  
  608. #define HEX_FOURCC_DOS 0x20534f44L
  609. #define HEX_FOURCC_MEM 0x204d454dL
  610. #define HEX_FOURCC_BND 0x20444e42L
  611. #define HEX_FOURCC_CF  0x20204643L
  612.  
  613. /*
  614.  * Country codes (CC), languages (LC), and dialects (DC).
  615.  */
  616.  
  617. #define MMIO_DEFAULT_CODE_PAGE            437
  618.  
  619. #define MMIO_CC_NONE                      000
  620. #define MMIO_CC_USA                       001
  621. #define MMIO_CC_CANADA                    002
  622. #define MMIO_CC_LATIN_AMERICA             003
  623. #define MMIO_CC_GREECE                    030
  624. #define MMIO_CC_NETHERLANDS               031
  625. #define MMIO_CC_BELGIUM                   032
  626. #define MMIO_CC_FRANCE                    033
  627. #define MMIO_CC_SPAIN                     034
  628. #define MMIO_CC_ITALY                     039
  629. #define MMIO_CC_SWITZERLAND               041
  630. #define MMIO_CC_AUSTRIA                   043
  631. #define MMIO_CC_UNITED_KINGDOM            044
  632. #define MMIO_CC_DENMARK                   045
  633. #define MMIO_CC_SWEDEN                    046
  634. #define MMIO_CC_NORWAY                    047
  635. #define MMIO_CC_WEST_GERMANY              049
  636. #define MMIO_CC_MEXICO                    052
  637. #define MMIO_CC_BRAZIL                    055
  638. #define MMIO_CC_AUSTRALIA                 061
  639. #define MMIO_CC_NEW_ZEALAND               064
  640. #define MMIO_CC_JAPAN                     081
  641. #define MMIO_CC_KOREA                     082
  642. #define MMIO_CC_CHINA                     086
  643. #define MMIO_CC_TAIWAN                    088
  644. #define MMIO_CC_TURKEY                    090
  645. #define MMIO_CC_PORTUGAL                  351
  646. #define MMIO_CC_LUXEMBOURG                352
  647. #define MMIO_CC_ICELAND                   354
  648. #define MMIO_CC_FINLAND                   358
  649.  
  650. #define MMIO_LC_NONE                        0
  651. #define MMIO_DC_NONE                        0
  652. #define MMIO_LC_ARABIC                      1
  653. #define MMIO_DC_ARABIC                      1
  654. #define MMIO_LC_BULGARIAN                   2
  655. #define MMIO_DC_BULGARIAN                   1
  656. #define MMIO_LC_CATALAN                     3
  657. #define MMIO_DC_CATALAN                     1
  658. #define MMIO_LC_TRADITIONAL_CHINESE         4
  659. #define MMIO_DC_TRADITIONAL_CHINESE         1
  660. #define MMIO_LC_SIMPLE_CHINESE              4
  661. #define MMIO_DC_SIMPLE_CHINESE              2
  662. #define MMIO_LC_CZECH                       5
  663. #define MMIO_DC_CZECH                       1
  664. #define MMIO_LC_DANISH                      6
  665. #define MMIO_DC_DANISH                      1
  666. #define MMIO_LC_GERMAN                      7
  667. #define MMIO_DC_GERMAN                      1
  668. #define MMIO_LC_SWISS_GERMAN                7
  669. #define MMIO_DC_SWISS_GERMAN                2
  670. #define MMIO_LC_GREEK                       8
  671. #define MMIO_DC_GREEK                       1
  672. #define MMIO_LC_US_ENGLISH                  9
  673. #define MMIO_DC_US_ENGLISH                  1
  674. #define MMIO_LC_UK_ENGLISH                  9
  675. #define MMIO_DC_UK_ENGLISH                  2
  676. #define MMIO_LC_SPANISH                    10
  677. #define MMIO_DC_SPANISH                     1
  678. #define MMIO_LC_SPANISH_MEXICAN            10
  679. #define MMIO_DC_SPANISH_MEXICAN             2
  680. #define MMIO_LC_FINNISH                    11
  681. #define MMIO_DC_FINNISH                     1
  682. #define MMIO_LC_FRENCH                     12
  683. #define MMIO_DC_FRENCH                      1
  684. #define MMIO_LC_BELGIAN_FRENCH             12
  685. #define MMIO_DC_BELGIAN_FRENCH              2
  686. #define MMIO_LC_CANADIAN_FRENCH            12
  687. #define MMIO_DC_CANADIAN_FRENCH             3
  688. #define MMIO_LC_SWISS_FRENCH               12
  689. #define MMIO_DC_SWISS_FRENCH                4
  690. #define MMIO_LC_HEBREW                     13
  691. #define MMIO_DC_HEBREW                      1
  692. #define MMIO_LC_HUNGARIAN                  14
  693. #define MMIO_DC_HUNGARIAN                   1
  694. #define MMIO_LC_ICELANDIC                  15
  695. #define MMIO_DC_ICELANDIC                   1
  696. #define MMIO_LC_ITALIAN                    16
  697. #define MMIO_DC_ITALIAN                     1
  698. #define MMIO_LC_SWISS_ITALIAN              16
  699. #define MMIO_DC_SWISS_ITALIAN               2
  700. #define MMIO_LC_JAPANESE                   17
  701. #define MMIO_DC_JAPANESE                    1
  702. #define MMIO_LC_KOREAN                     18
  703. #define MMIO_DC_KOREAN                      1
  704. #define MMIO_LC_DUTCH                      19
  705. #define MMIO_DC_DUTCH                       1
  706. #define MMIO_LC_BELGIAN_DUTCH              19
  707. #define MMIO_DC_BELGIAN_DUTCH               2
  708. #define MMIO_LC_NORWEGIAN_BOKMAL           20
  709. #define MMIO_DC_NORWEGIAN_BOKMAL            1
  710. #define MMIO_LC_NORWEGIAN_NYNORSK          20
  711. #define MMIO_DC_NORWEGIAN_NYNORSK           2
  712. #define MMIO_LC_POLISH                     21
  713. #define MMIO_DC_POLISH                      1
  714. #define MMIO_LC_BRAZILIAN_PORTUGUESE       22
  715. #define MMIO_DC_BRAZILIAN_PORTUGUESE        1
  716. #define MMIO_LC_PORTUGUESE                 22
  717. #define MMIO_DC_PORTUGUESE                  2
  718. #define MMIO_LC_RHAETO_ROMANIC             23
  719. #define MMIO_DC_RHAETO_ROMANIC              1
  720. #define MMIO_LC_ROMANIAN                   24
  721. #define MMIO_DC_ROMANIAN                    1
  722. #define MMIO_LC_RUSSIAN                    25
  723. #define MMIO_DC_RUSSIAN                     1
  724. #define MMIO_LC_SERBO_CROATIAN_LATIN       26
  725. #define MMIO_DC_SERBO_CROATIAN_LATIN        1
  726. #define MMIO_LC_SERBO_CROATIAN_CYRILLIC    26
  727. #define MMIO_DC_SERBO_CROATIAN_CYRILLIC     2
  728. #define MMIO_LC_SLOVAK                     27
  729. #define MMIO_DC_SLOVAK                      1
  730. #define MMIO_LC_ALBANIAN                   28
  731. #define MMIO_DC_ALBANIAN                    1
  732. #define MMIO_LC_SWEDISH                    29
  733. #define MMIO_DC_SWEDISH                     1
  734. #define MMIO_LC_THAI                       30
  735. #define MMIO_DC_THAI                        1
  736. #define MMIO_LC_TURKISH                    31
  737. #define MMIO_DC_TURKISH                     1
  738. #define MMIO_LC_URDU                       32
  739. #define MMIO_DC_URDU                        1
  740. #define MMIO_LC_BAHASA                     33
  741. #define MMIO_DC_BAHASA                      1
  742.  
  743. /*
  744.  * Base function prototypes:
  745.  */
  746.  
  747. USHORT APIENTRY mmioAdvance( HMMIO hmmio,
  748.                            PMMIOINFO pmmioinfo,
  749.                            USHORT usFlags );
  750.  
  751. USHORT APIENTRY mmioAscend( HMMIO hmmio,
  752.                           PMMCKINFO pckinfo,
  753.                           USHORT usFlags );
  754.  
  755. USHORT APIENTRY mmioClose( HMMIO hmmio,
  756.                          USHORT usFlags );
  757.  
  758. USHORT APIENTRY mmioCreateChunk( HMMIO hmmio,
  759.                                PMMCKINFO pckinfo,
  760.                                USHORT usFlags );
  761.  
  762. USHORT APIENTRY mmioDescend( HMMIO hmmio,
  763.                            PMMCKINFO pckinfo,
  764.                            PMMCKINFO pckinfoParent,
  765.                            USHORT usFlags );
  766.  
  767. USHORT APIENTRY mmioFlush( HMMIO hmmio,
  768.                          USHORT usFlags );
  769.  
  770. USHORT APIENTRY mmioGetInfo( HMMIO hmmio,
  771.                            PMMIOINFO pmmioinfo,
  772.                            USHORT usFlags );
  773.  
  774. ULONG APIENTRY mmioGetLastError( HMMIO hmmio );
  775.  
  776. PMMIOPROC APIENTRY mmioInstallIOProc( FOURCC fccIOProc,
  777.                                       PMMIOPROC pIOProc,
  778.                                       ULONG ulFlags );
  779.  
  780. LONG APIENTRY mmioIOProc( PMMIOINFO pmmioinfo,
  781.                           USHORT usMsg,
  782.                           LONG lParam1,
  783.                           LONG lParam2 );
  784.  
  785. HMMIO APIENTRY mmioOpen( PSZ pszFileName,
  786.                          PMMIOINFO pmmioinfo,
  787.                          ULONG ulOpenFlags );
  788.  
  789. LONG APIENTRY mmioRead( HMMIO hmmio,
  790.                         PCHAR pchBuffer,
  791.                         LONG cBytes );
  792.  
  793. LONG APIENTRY mmioSeek( HMMIO hmmio,
  794.                         LONG lOffset,
  795.                         LONG lOrigin );
  796.  
  797. LONG APIENTRY mmioSendMessage( HMMIO hmmio,
  798.                                USHORT usMsg,
  799.                                LONG lParam1,
  800.                                LONG lParam2 );
  801.  
  802. USHORT APIENTRY mmioSetBuffer( HMMIO hmmio,
  803.                              PCHAR pchBuffer,
  804.                              LONG cBytes,
  805.                              USHORT usFlags );
  806.  
  807. USHORT APIENTRY mmioSetInfo( HMMIO hmmio,
  808.                            PMMIOINFO pmmioinfo,
  809.                            USHORT usFlags );
  810.  
  811. FOURCC APIENTRY mmioStringToFOURCC( PSZ pszString,
  812.                                     USHORT usFlags );
  813.  
  814. LONG APIENTRY mmioWrite( HMMIO hmmio,
  815.                          PCHAR pchBuffer,
  816.                          LONG cBytes );
  817.  
  818. /*
  819.  * Compound File function prototypes:
  820.  */
  821.  
  822. HMMCF APIENTRY mmioCFOpen( PSZ pszFileName,
  823.                            PMMCFINFO pmmcfinfo,
  824.                            PMMIOINFO pmmioinfo,
  825.                            ULONG ulFlags );
  826.  
  827. ULONG APIENTRY mmioCFClose( HMMCF hmmcf,
  828.                             ULONG ulFlags );
  829.  
  830. ULONG APIENTRY mmioCFGetInfo( HMMCF hmmcf,
  831.                               PMMCFINFO pmmcfinfo,
  832.                               ULONG cBytes );
  833.  
  834. ULONG APIENTRY mmioCFSetInfo( HMMCF hmmcf,
  835.                               PMMCFINFO pmmcfinfo,
  836.                               ULONG cBytes );
  837.  
  838. ULONG APIENTRY mmioCFFindEntry( HMMCF hmmcf,
  839.                                 PMMCTOCENTRY pmmctocentry,
  840.                                 ULONG ulFlags );
  841.  
  842. ULONG APIENTRY mmioCFAddEntry( HMMCF hmmcf,
  843.                                PMMCTOCENTRY pmmctocentry,
  844.                                ULONG ulFlags );
  845.  
  846. ULONG APIENTRY mmioCFChangeEntry( HMMCF hmmcf,
  847.                                   PMMCTOCENTRY pmmctocentry,
  848.                                   ULONG ulFlags );
  849.  
  850. ULONG APIENTRY mmioCFDeleteEntry( HMMCF hmmcf,
  851.                                   PMMCTOCENTRY pmmctocentry,
  852.                                   ULONG ulFlags );
  853.  
  854. ULONG APIENTRY mmioCFAddElement( HMMCF hmmcf,
  855.                                  PSZ pszElementName,
  856.                                  FOURCC fccType,
  857.                                  PCHAR pchBuffer,
  858.                                  LONG cchBytes,
  859.                                  ULONG ulFlags );
  860.  
  861. ULONG APIENTRY mmioCFCopy( HMMCF hmmcfSource,
  862.                            PSZ pszDestFileName,
  863.                            ULONG ulFlags );
  864.  
  865. /*
  866.  * Conversion Utility function prototypes:
  867.  */
  868.  
  869. ULONG APIENTRY mmioQueryFormatCount( PMMFORMATINFO pmmformatinfo,
  870.                                      PLONG plNumFormats,
  871.                                      ULONG ulReserved,
  872.                                      ULONG ulFlags );
  873.  
  874. ULONG APIENTRY mmioGetFormats( PMMFORMATINFO pmmformatinfo,
  875.                                LONG lNumFormats,
  876.                                PVOID pFormatInfoList,
  877.                                PLONG plFormatsRead,
  878.                                ULONG ulReserved,
  879.                                ULONG ulFlags );
  880.  
  881. ULONG APIENTRY mmioGetFormatName( PMMFORMATINFO pmmformatinfo,
  882.                                   PSZ pszFormatName,
  883.                                   PLONG plBytesRead,
  884.                                   ULONG ulReserved,
  885.                                   ULONG ulFlags );
  886.  
  887. ULONG APIENTRY mmioIdentifyFile( PSZ pszFileName,
  888.                                  PMMIOINFO pmmioinfo,
  889.                                  PMMFORMATINFO pmmformatinfo,
  890.                                  PFOURCC pfccStorageSystem,
  891.                                  ULONG ulReserved,
  892.                                  ULONG ulFlags );
  893.  
  894. ULONG APIENTRY mmioQueryHeaderLength( HMMIO hmmio,
  895.                                       PLONG plHeaderLength,
  896.                                       ULONG ulReserved,
  897.                                       ULONG ulFlags );
  898.  
  899. ULONG APIENTRY mmioGetHeader( HMMIO hmmio,
  900.                               PVOID pHeader,
  901.                               LONG lHeaderLength,
  902.                               PLONG plBytesRead,
  903.                               ULONG ulReserved,
  904.                               ULONG ulFlags );
  905.  
  906. ULONG APIENTRY mmioSetHeader( HMMIO hmmio,
  907.                               PVOID pHeader,
  908.                               LONG lHeaderLength,
  909.                               PLONG plBytesWritten,
  910.                               ULONG ulReserved,
  911.                               ULONG ulFlags );
  912.  
  913. ULONG APIENTRY mmioIniFileHandler( PMMINIFILEINFO pmminifileinfo,
  914.                                    ULONG ulFlags );
  915.  
  916. ULONG APIENTRY mmioIdentifyStorageSystem( PSZ pszFileName,
  917.                                           PMMIOINFO pmmioinfo,
  918.                                           PFOURCC pfccStorageSystem );
  919.  
  920. ULONG APIENTRY mmioDetermineSSIOProc( PSZ pszFileName,
  921.                                       PMMIOINFO pmmioinfo,
  922.                                       PFOURCC pfccStorageSystem,
  923.                                       PSZ pszParsedRemainder );
  924.  
  925. ULONG APIENTRY mmioQueryIOProcModuleHandle( PMMIOPROC pIOProc,
  926.                                             PHMODULE phmodIOProc );
  927.  
  928. ULONG APIENTRY mmioCFCompact( PSZ pszFileName, ULONG ulFlags );
  929.  
  930.  
  931. /*
  932.  * MMPMMMIO.INI file migration utility
  933.  */
  934.  
  935. ULONG APIENTRY mmioMigrateIniFile( ULONG ulFlags );
  936.  
  937. /*
  938.  * MMIO CODEC APIs
  939.  */
  940.  
  941. #ifdef INCL_MMIO_CODEC
  942.  
  943. ULONG APIENTRY mmioIniFileCODEC( PCODECINIFILEINFO pCODECIniFileInfo,
  944.                                  ULONG ulFlags );
  945. ULONG APIENTRY mmioSet(HMMIO hmmio,
  946.                        PMMEXTENDINFO pUserExtendmminfo,
  947.                        ULONG ulFlags);
  948.  
  949. ULONG APIENTRY mmioQueryCODECName( PCODECINIFILEINFO pCODECIniFileinfo,
  950.                                   PSZ pszCODECName,
  951.                                   PULONG pulBytesRead );
  952.  
  953. ULONG APIENTRY mmioQueryCODECNameLength( PCODECINIFILEINFO pCODECIniFileinfo,
  954.                                          PULONG pulNameLength );
  955.  
  956. PCODECPROC  APIENTRY mmioLoadCODECProc( PCODECINIFILEINFO pCODECIniFileInfo,
  957.                                       PHMODULE phMod, ULONG ulFlags );
  958.  
  959. USHORT APIENTRY mmioGetData( HMMIO hmmio,
  960.                            PMMIOINFO pmmioinfo,
  961.                            USHORT usFlags );
  962.  
  963. #endif
  964.  
  965. #pragma pack()
  966.  
  967. #endif /* _MMIO_H_ */
  968.  
  969.