iowin32.c

Go to the documentation of this file.

#include "iowin32.h"


BOOL IoGenericIsValid(LPVOID handle){
 return handle!=NULL;
}

BOOL IoWin32IsValid(LPVOID handle){
 return ((HANDLE)handle!=INVALID_HANDLE_VALUE);
}

DWORD IoWin32ReadFile(LPVOID handle, LPVOID ptr, DWORD sz){
 DWORD ret;
 ReadFile((HANDLE)handle,ptr,sz,&ret,NULL);
 return ret;
}

DWORD IoWin32WriteFile(LPVOID handle, LPVOID ptr, DWORD sz){
 DWORD ret;
 WriteFile((HANDLE)handle,ptr,sz,&ret,NULL);
 return ret;
}

LONG IoWin32SeekFile(LPVOID handle, LONG pos, int seek){
 return SetFilePointer((HANDLE)handle,pos,NULL,seek);
}

LPVOID IoWin32OpenFile(LPCTSTR filename, int read){
 if(read==FILE_READ){
  return CreateFileA(filename,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,0,NULL);
 } else if(read==FILE_WRITE){
  return CreateFileA(filename,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL);
 } else if(read==FILE_APPEND){
  LPVOID h=CreateFileA(filename,GENERIC_WRITE,0,NULL,OPEN_ALWAYS,0,NULL);
  if((HANDLE)h==INVALID_HANDLE_VALUE)return h;
  SetFilePointer((HANDLE)h,0,NULL,FILE_END);
  return h;
 } else if(read==FILE_READWRITE){
  return CreateFileA(filename,GENERIC_WRITE|GENERIC_READ,0,NULL,OPEN_EXISTING,0,NULL);
 }
 return INVALID_HANDLE_VALUE;
}

BOOL IoWin32CloseFile(LPVOID handle){
 return CloseHandle((HANDLE)handle);
}

BOOL IoWin32FlushFile(LPVOID handle){
 return FlushFileBuffers((HANDLE)handle);
}

DWORD IoWin32GetSize(LPVOID handle){
 if(IoWin32IsValid(handle)){
  return GetFileSize((HANDLE)handle,NULL);
 }
 return 0;
}

/*



LONGLONG IoWin32SeekFile64(LPVOID handle, LONGLONG pos, int seek){
 LONG low = (DWORD)(pos & 0xffffffffL);
 LONG high = (DWORD)((pos >> 32) & 0xffffffffL);
 low=SetFilePointer((HANDLE)handle,low,&high,seek);
 if(low==0xFFFFFFFF && GetLastError()!=0){
  return 0;
 }
 return (LONGLONG)((ULONGLONG)high<<32)|low;
}

ULONGLONG IoWin32GetSize64(LPVOID handle){
 DWORD high;
 DWORD low=GetFileSize((HANDLE)handle,&high);
 if(low==0xFFFFFFFF && GetLastError()!=0){
  return 0;
 }
 return ((ULONGLONG)high<<32)|low;
}

*/

IOSTRUCT Win32Io={
 IoWin32IsValid,
 IoWin32OpenFile,
 IoWin32CloseFile,
 IoWin32ReadFile,
 IoWin32WriteFile,
 IoWin32SeekFile,
 IoWin32GetSize,
 IoWin32FlushFile
};

IOSTRUCT *GetNativeIo(void){
 return &Win32Io;
}

Generated on Thu Mar 27 01:46:53 2008 for Item Arrays by  doxygen 1.4.6-NO