WAVEIO.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 1992 - 1998 Microsoft Corporation. All Rights Reserved.
//
//--------------------------------------------------------------------------;
//
// waveio.h
//
// Description:
// Contains structure definitions and prototypes for the functions in
// waveio.c. Also contains Win16/Win32 portability definitions.
//
//
//==========================================================================;

#ifndef _INC_WAVEIO
#define _INC_WAVEIO // #defined if file has been included

#ifndef RC_INVOKED
#pragma pack(1) // assume byte packing throughout
#endif

#ifndef EXTERN_C
#ifdef __cplusplus
#define EXTERN_C extern "C"
#else
#define EXTERN_C extern
#endif
#endif

#ifdef __cplusplus
extern "C" // assume C declarations for C++
{
#endif

#ifdef WIN32
//
// for compiling Unicode
//
#ifndef SIZEOF
#ifdef UNICODE
#define SIZEOF(x) (sizeof(x)/sizeof(WCHAR))
#else
#define SIZEOF(x) sizeof(x)
#endif
#endif
#else
//
// stuff for Unicode in Win 32--make it a noop in Win 16
//
#ifndef TEXT
#define TEXT(a) a
#endif

#ifndef SIZEOF
#define SIZEOF(x) sizeof(x)
#endif

#ifndef _TCHAR_DEFINED
#define _TCHAR_DEFINED
typedef char TCHAR, *PTCHAR;
typedef unsigned char TBYTE, *PTUCHAR;

typedef PSTR PTSTR, PTCH;
typedef LPSTR LPTSTR, LPTCH;
typedef LPCSTR LPCTSTR;
#endif
#endif


//
//
//
//
//
#ifdef WIN32
#define WIOAPI _stdcall
#else
#ifdef _WINDLL
#define WIOAPI FAR PASCAL _loadds
#else
#define WIOAPI FAR PASCAL
#endif
#endif


//
//
//
typedef UINT WIOERR;


//
//
//
//
typedef struct tWAVEIOCB
{
DWORD dwFlags;
HMMIO hmmio;

DWORD dwDataOffset;
DWORD dwDataBytes;
DWORD dwDataSamples;

LPWAVEFORMATEX pwfx;

#if 0
HWAVEOUT hwo;
DWORD dwBytesLeft;
DWORD dwBytesPerBuffer;

DISP FAR * pDisp;
INFOCHUNK FAR * pInfo;
#endif

} WAVEIOCB, *PWAVEIOCB, FAR *LPWAVEIOCB;



//
// error returns from waveio functions
//
#define WIOERR_BASE (0)
#define WIOERR_NOERROR (0)
#define WIOERR_ERROR (WIOERR_BASE+1)
#define WIOERR_BADHANDLE (WIOERR_BASE+2)
#define WIOERR_BADFLAGS (WIOERR_BASE+3)
#define WIOERR_BADPARAM (WIOERR_BASE+4)
#define WIOERR_BADSIZE (WIOERR_BASE+5)
#define WIOERR_FILEERROR (WIOERR_BASE+6)
#define WIOERR_NOMEM (WIOERR_BASE+7)
#define WIOERR_BADFILE (WIOERR_BASE+8)
#define WIOERR_NODEVICE (WIOERR_BASE+9)
#define WIOERR_BADFORMAT (WIOERR_BASE+10)
#define WIOERR_ALLOCATED (WIOERR_BASE+11)
#define WIOERR_NOTSUPPORTED (WIOERR_BASE+12)



//
// function prototypes and flag definitions
//
WIOERR WIOAPI wioFileClose
(
LPWAVEIOCB pwio,
DWORD fdwClose
);

WIOERR WIOAPI wioFileOpen
(
LPWAVEIOCB pwio,
LPCTSTR pszFilePath,
DWORD fdwOpen
);


//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
//
//
//
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;

#ifndef RC_INVOKED
#pragma pack() // revert to default packing
#endif

#ifdef __cplusplus
} // end of extern "C" {
#endif

#endif // _INC_WAVEIO