#ifndef _SIADOKANDRIVE_H #define _SIADOKANDRIVE_H #ifdef _WIN32 #define WIN32_NO_STATUS // Import or export functions and/or classes #ifdef SIADRIVE_DOKAN_EXPORT_SYMBOLS #define SIADRIVE_DOKAN_EXPORTABLE __declspec(dllexport) #else #define SIADRIVE_DOKAN_EXPORTABLE __declspec(dllimport) #endif //SIADRIVE_DOKAN_EXPORT_SYMBOLS #else #define SIADRIVE_DOKAN_EXPORTABLE #endif #include #include #include #include NS_BEGIN(Sia) NS_BEGIN(Api) NS_BEGIN(Dokan) class SIADRIVE_DOKAN_EXPORTABLE SiaDokanDriveException : std::exception { public: SiaDokanDriveException(char* message) : std::exception(message) { } }; class SIADRIVE_DOKAN_EXPORTABLE CSiaDokanDrive { public: // throws SiaDokenDriveException CSiaDokanDrive(CSiaApi& siaApi, CSiaDriveConfig* siaDriveConfig); public: ~CSiaDokanDrive(); private: CSiaApi& _siaApi; CSiaDriveConfig* _siaDriveConfig; std::mutex _startStopMutex; public: void ClearCache(); UploadFileListPtr GetUploadFileList() const; bool IsMounted() const; void Mount(const wchar_t& driveLetter, const SString& cacheLocation, const std::uint64_t& maxCacheSizeBytes); void Unmount(const bool& clearCache = false); }; NS_END(3) #endif //_SIADOKANDRIVE_H