#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; } }