DragonNest/Common/EtFileSystem/EtStdFileIO.cpp
Cussrro 47f7895977 Revert "修复编码问题"
This reverts commit 9e69c01767.
2024-12-21 10:04:04 +08:00

101 lines
1.7 KiB
C++

#include "stdafx.h"
#include "EtStdFileIO.h"
#ifdef _DEBUG
#define new new(_NORMAL_BLOCK,__FILE__,__LINE__)
#endif
//-------------------------------------------------------------------------
CEtStdFileIO::CEtStdFileIO()
{
m_hFile = NULL;
}
CEtStdFileIO::~CEtStdFileIO()
{
Close();
}
bool
CEtStdFileIO::Open(const TCHAR* szFileName, AccessType nAccessMode)
{
Close();
switch( nAccessMode )
{
case ET_READ:
{
m_hFile = CreateFile(szFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,NULL );
}
break;
case ET_WRITE:
{
m_hFile = CreateFile(szFileName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,NULL );
}
break;
case ET_ALL:
{
m_hFile = CreateFile(szFileName, GENERIC_READ|GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,NULL );
}
break;
}
if ( m_hFile == INVALID_HANDLE_VALUE )
{
return false;
}
return true;
}
bool
CEtStdFileIO::Close()
{
if ( CloseHandle(m_hFile) == TRUE )
return true;
return false;
}
int
CEtStdFileIO::Read(void* pBuffer, int nLen)
{
DWORD nReadSize = 0;
ReadFile(m_hFile, pBuffer, nLen, &nReadSize, NULL );
return nReadSize;
}
int
CEtStdFileIO::Write(const void* pBuffer, int nLen )
{
DWORD nWriteSize = 0;
WriteFile(m_hFile, pBuffer, nLen, &nWriteSize, 0);
return nWriteSize;
}
int
CEtStdFileIO::Seek(int nOffset, SeekType nPosition)
{
LARGE_INTEGER li;
li.QuadPart = nOffset;
li.LowPart = SetFilePointer(m_hFile, li.LowPart, &li.HighPart, nPosition);
if (li.LowPart == INVALID_SET_FILE_POINTER && GetLastError() != NO_ERROR)
{
li.QuadPart = -1;
}
return (int)li.QuadPart;
}
int
CEtStdFileIO::Tell()
{
return Seek(0, ET_SEEK_CURRENT);
}