57 lines
1.2 KiB
C++
57 lines
1.2 KiB
C++
#include "WinFileStream.h"
|
|
|
|
namespace LifeCore
|
|
{
|
|
WinFileStream::WinFileStream(const String& path)
|
|
:hFile(0)
|
|
{
|
|
hFile = CreateFileA(path.c_str(), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
|
}
|
|
WinFileStream::~WinFileStream()
|
|
{
|
|
if(hFile)
|
|
{
|
|
CloseHandle(hFile);
|
|
}
|
|
}
|
|
void WinFileStream::Close()
|
|
{
|
|
CloseHandle(hFile);
|
|
hFile = NULL;
|
|
}
|
|
size_t WinFileStream::Read(void* pBuffer, size_t countBytes)
|
|
{
|
|
unsigned long countRead = 0;
|
|
ReadFile(hFile, pBuffer, countBytes, &countRead, NULL);
|
|
return (int)countRead;
|
|
}
|
|
size_t WinFileStream::Write(const void* pBuffer, size_t countBytes)
|
|
{
|
|
unsigned long countWrite = 0;
|
|
WriteFile(hFile, pBuffer, countBytes, &countWrite, NULL);
|
|
return (int)countWrite;
|
|
}
|
|
void WinFileStream::Seek(int position)
|
|
{
|
|
SetFilePointer(hFile, position, NULL, SEEK_SET);
|
|
}
|
|
size_t WinFileStream::Tell()
|
|
{
|
|
return SetFilePointer(hFile, 0, NULL, SEEK_CUR);
|
|
}
|
|
size_t WinFileStream::Length()
|
|
{
|
|
int pos = Tell();
|
|
int length = SetFilePointer(hFile, 0, NULL, SEEK_END);
|
|
SetFilePointer(hFile, pos, NULL, SEEK_SET);
|
|
return length;
|
|
}
|
|
bool WinFileStream::CanRead()
|
|
{
|
|
return true;
|
|
}
|
|
bool WinFileStream::CanWrite()
|
|
{
|
|
return true;
|
|
}
|
|
} |