www.pudn.com > LSJ_MIDIPLYR.rar > SMF.H


/***************************************************************************** 
* 
*  THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF 
*  ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED 
*  TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR 
*  A PARTICULAR PURPOSE. 
* 
*  Copyright (C) 1993 - 1997 Microsoft Corporation. All Rights Reserved. 
* 
****************************************************************************** 
* 
* SMF.H 
* 
* Public include file for Standard MIDI File access routines. 
* 
*****************************************************************************/ 
 
#ifndef _SMF_ 
#define _SMF_ 
 
#include "global.h"  
 
typedef DWORD SMFRESULT; 
typedef DWORD TICKS; 
typedef TICKS FAR *PTICKS; 
typedef BYTE HUGE *HPBYTE; 
 
#define MAX_TICKS           ((TICKS)0xFFFFFFFFL) 
 
#define SMF_SUCCESS         (0L) 
#define SMF_INVALID_FILE    (1L) 
#define SMF_NO_MEMORY       (2L) 
#define SMF_OPEN_FAILED     (3L) 
#define SMF_INVALID_TRACK   (4L) 
#define SMF_META_PENDING    (5L) 
#define SMF_ALREADY_OPEN    (6L) 
#define SMF_END_OF_TRACK    (7L) 
#define SMF_NO_META         (8L) 
#define SMF_INVALID_PARM    (9L) 
#define SMF_INVALID_BUFFER  (10L) 
#define SMF_END_OF_FILE     (11L) 
#define SMF_REACHED_TKMAX   (12L) 
 
DECLARE_HANDLE(HSMF); 
 
typedef struct tag_smfopenstruct 
{ 
    LPSTR               pstrName; 
    DWORD               dwTimeDivision; 
    HSMF                hSmf; 
}   SMFOPENFILESTRUCT, 
    FAR *PSMFOPENFILESTRUCT; 
 
extern SMFRESULT FNLOCAL smfOpenFile( 
    PSMFOPENFILESTRUCT  psofs); 
 
extern SMFRESULT FNLOCAL smfCloseFile( 
    HSMF                hsmf); 
 
typedef struct tag_smffileinfo 
{ 
    DWORD               dwTracks; 
    DWORD               dwFormat; 
    DWORD               dwTimeDivision; 
    TICKS               tkLength; 
}   SMFFILEINFO, 
    FAR *PSMFFILEINFO; 
 
extern SMFRESULT FNLOCAL smfGetFileInfo( 
    HSMF                hsmf, 
    PSMFFILEINFO        psfi); 
 
extern DWORD FNLOCAL smfTicksToMillisecs( 
    HSMF                hsmf, 
    TICKS               tkOffset); 
 
extern DWORD FNLOCAL smfMillisecsToTicks( 
    HSMF                hsmf, 
    DWORD               msOffset); 
 
extern SMFRESULT FNLOCAL smfReadEvents( 
    HSMF                hsmf, 
    LPMIDIHDR           lpmh, 
    TICKS               tkMax); 
 
extern SMFRESULT FNLOCAL smfSeek( 
    HSMF                hsmf, 
    TICKS               tkPosition, 
    LPMIDIHDR           lpmh); 
 
extern DWORD FNLOCAL smfGetStateMaxSize( 
    void); 
 
/* Buffer described by LPMIDIHDR is in polymsg format, except that it 
** can contain meta-events (which will be ignored during playback by 
** the current system). This means we can use the pack functions, etc. 
*/ 
#define PMSG_META       ((BYTE)0xC0) 
 
#endif