MemoryMappedFileStreamWindows.h MemoryMappedFileStream.cpp //CopyrightEpicGames,Inc.AllRightsReserved. #pragmaonce //*INDENT-OFF* #ifdefTRIO_WINDOWS_FILE_MAPPING_AVAILABLE #include"trio/streams/MemoryMappedFileStream.h" #include"trio/streams/StreamStatus.h" #include"trio/types/Aliases.h" #include"trio/utils/NativeString.h" #include"trio/utils/PlatformWindows.h" #include<pma/TypeDefs.h> #include<cstddef> #include<cstdint> namespacetrio{ classMemoryMappedFileStreamWindows:publicMemoryMappedFileStream{ public: MemoryMappedFileStreamWindows(constchar*path_,AccessModeaccessMode_,MemoryResource*memRes_); ~MemoryMappedFileStreamWindows(); MemoryMappedFileStreamWindows(constMemoryMappedFileStreamWindows&)=delete; MemoryMappedFileStreamWindows&operator=(constMemoryMappedFileStreamWindows&)=delete; MemoryMappedFileStreamWindows(MemoryMappedFileStreamWindows&&)=delete; MemoryMappedFileStreamWindows&operator=(MemoryMappedFileStreamWindows&&)=delete; voidopen()override; voidclose()override; std::uint64_ttell()override; voidseek(std::uint64_tposition)override; std::uint64_tsize()override; std::size_tread(char*destination,std::size_tsize)override; std::size_tread(Writable*destination,std::size_tsize)override; std::size_twrite(constchar*source,std::size_tsize)override; std::size_twrite(Readable*source,std::size_tsize)override; voidflush()override; voidresize(std::uint64_tsize)override; MemoryResource*getMemoryResource(); private: voidopenFile(); voidcloseFile(); voidmapFile(std::uint64_toffset,std::uint64_tsize); voidunmapFile(); voidresizeFile(std::uint64_tsize); private: StreamStatusstatus; NativeStringfilePath; AccessModefileAccessMode; MemoryResource*memRes; HANDLEfile; HANDLEmapping; LPVOIDdata; std::uint64_tposition; std::uint64_tfileSize; std::uint64_tviewOffset; std::size_tviewSize; booldelayedMapping; booldirty; }; }//namespacetrio #endif//TRIO_WINDOWS_FILE_MAPPING_AVAILABLE //*INDENT-ON*