#ifndef __IOEX_H__
#define __IOEX_H__
#include "user.h"
DWORD XRead(LPVOID file, IOSTRUCT *ios, DWORD offset, LPVOID b, DWORD sz);
DWORD XWrite(LPVOID file, IOSTRUCT *ios, DWORD offset, LPVOID b, DWORD sz);
DWORD ReadEndian(
LPVOID file,
IOSTRUCT *ios,
DWORD offset,
DWORD sz,
BOOL big,
BOOL xread,
DWORD *psz
);
DWORD WriteEndian(
LPVOID file,
IOSTRUCT *ios,
DWORD offset,
DWORD x,
DWORD sz,
BOOL big,
BOOL xwrite
);
LONG ReadEndianSigned(
LPVOID file,
IOSTRUCT *ios,
DWORD offset,
DWORD sz,
BOOL big,
BOOL xread,
DWORD *psz
);
#define ReadLE(file,ios,sz) ReadEndian(file,ios,0,sz,FALSE,FALSE,NULL)
#define ReadBE(file,ios,sz) ReadEndian(file,ios,0,sz,TRUE,FALSE,NULL)
#define ReadLESigned(file,ios,sz) ReadEndianSigned(file,ios,0,sz,FALSE,FALSE,NULL)
#define ReadBESigned(file,ios,sz) ReadEndianSigned(file,ios,0,sz,TRUE,FALSE,NULL)
#define WriteLE(file,ios,x,sz) WriteEndian(file,ios,0,x,sz,FALSE,FALSE)
#define WriteBE(file,ios,x,sz) WriteEndian(file,ios,0,x,sz,TRUE,FALSE)
#define WriteLESigned(file,ios,x,sz) WriteEndian(file,ios,0,(DWORD)((LONG)(x)),sz,FALSE,FALSE)
#define WriteBESigned(file,ios,x,sz) WriteEndian(file,ios,0,(DWORD)((LONG)(x)),sz,TRUE,FALSE)
#define XReadLE(file,ios,offset,sz) ReadEndian(file,ios,offset,sz,FALSE,TRUE,NULL)
#define XReadBE(file,ios,offset,sz) ReadEndian(file,ios,offset,sz,TRUE,TRUE,NULL)
#define XReadLESigned(file,ios,offset,sz) ReadEndianSigned(file,ios,offset,sz,FALSE,TRUE,NULL)
#define XReadBESigned(file,ios,offset,sz) ReadEndianSigned(file,ios,offset,sz,TRUE,TRUE,NULL)
#define XWriteLE(file,ios,offset,x,sz) WriteEndian(file,ios,offset,x,sz,FALSE,TRUE)
#define XWriteBE(file,ios,offset,x,sz) WriteEndian(file,ios,offset,x,sz,TRUE,TRUE)
#define XWriteLESigned(file,ios,offset,x,sz) WriteEndian(file,ios,offset,(DWORD)((LONG)(x)),sz,FALSE,TRUE)
#define XWriteBESigned(file,ios,offset,x,sz) WriteEndian(file,ios,offset,(DWORD)((LONG)(x)),sz,TRUE,TRUE)
#endif