diff options
Diffstat (limited to 'xbmc/platform/win32/filesystem/Win32File.h')
-rw-r--r-- | xbmc/platform/win32/filesystem/Win32File.h | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/xbmc/platform/win32/filesystem/Win32File.h b/xbmc/platform/win32/filesystem/Win32File.h new file mode 100644 index 0000000000..ddac963275 --- /dev/null +++ b/xbmc/platform/win32/filesystem/Win32File.h @@ -0,0 +1,65 @@ +#pragma once +/* +* Copyright (C) 2014 Team XBMC +* http://kodi.tv +* +* This Program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2, or (at your option) +* any later version. +* +* This Program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with XBMC; see the file COPYING. If not, see +* <http://www.gnu.org/licenses/>. +* +*/ + +#include "filesystem/IFile.h" +#include <string> + +typedef void* HANDLE; // forward declaration + +namespace XFILE +{ + class CWin32File : public IFile + { + public: + CWin32File(); + virtual ~CWin32File(); + + virtual bool Open(const CURL& url); + virtual bool OpenForWrite(const CURL& url, bool bOverWrite = false); + virtual void Close(); + + virtual ssize_t Read(void* lpBuf, size_t uiBufSize); + virtual ssize_t Write(const void* lpBuf, size_t uiBufSize); + virtual int64_t Seek(int64_t iFilePosition, int iWhence = SEEK_SET); + virtual int Truncate(int64_t toSize); + virtual int64_t GetPosition(); + virtual int64_t GetLength(); + virtual void Flush(); + + virtual bool Delete(const CURL& url); + virtual bool Rename(const CURL& urlCurrentName, const CURL& urlNewName); + virtual bool SetHidden(const CURL& url, bool hidden); + virtual bool Exists(const CURL& url); + virtual int Stat(const CURL& url, struct __stat64* statData); + virtual int Stat(struct __stat64* statData); + + protected: + explicit CWin32File(bool asSmbFile); + HANDLE m_hFile; + int64_t m_filePos; + bool m_allowWrite; + // file path and name in win32 long form "\\?\D:\path\to\file.ext" + std::wstring m_filepathnameW; + const bool m_smbFile; // true for SMB file, false for local file + unsigned long m_lastSMBFileErr; // used for SMB file operations + }; + +} |