/*** Copyright (C) 2022 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: IProcessSectionView.hpp Date: 2022-08-09 Author: Reece ***/ #pragma once namespace Aurora::Process { struct IProcessSectionMapView; struct IProcessSectionView { virtual AuSPtr Allocate(AuUInt uLength) = 0; virtual AuSPtr AllocateEx(AuUInt uLength, AuUInt uOffset) = 0; virtual AuSPtr AllocateEx2(AuUInt uLength, AuUInt uOffset, PageTable permissions) = 0; virtual AuSPtr MapFileByPath(const AuString &str, AuUInt64 uOffset, AuUInt uLength, Aurora::IO::FS::EFileOpenMode mode, Aurora::IO::FS::EFileAdvisoryLockLevel processLockLevel) = 0; virtual AuSPtr MapFileByPathEx(AuUInt uViewOffset, const AuString &str, AuUInt64 uOffset, AuUInt uLength, Aurora::IO::FS::EFileOpenMode mode, Aurora::IO::FS::EFileAdvisoryLockLevel processLockLevel) = 0; virtual AuSPtr MapFileByObject(const AuSPtr &pStream, AuUInt64 uOffset, AuUInt uLength, Aurora::IO::FS::EFileOpenMode mode, Aurora::IO::FS::EFileAdvisoryLockLevel processLockLevel) = 0; virtual AuSPtr MapFileByObjectEx(AuUInt uViewOffset, const AuSPtr &pStream, AuUInt64 uOffset, AuUInt uLength, Aurora::IO::FS::EFileOpenMode mode, Aurora::IO::FS::EFileAdvisoryLockLevel processLockLevel) = 0; virtual AuSPtr MapIPCMemory(const AuString &handleString, AuUInt64 uOffset, AuUInt uLength, Aurora::IO::FS::EFileOpenMode mode) = 0; virtual AuSPtr MapIPCMemoryEx(AuUInt uViewOffset, const AuString &handleString, AuUInt64 uOffset, AuUInt uLength, Aurora::IO::FS::EFileOpenMode mode) = 0; virtual AuList> GetAllocations() = 0; }; AUKN_SYM AuSPtr GetGlobalProcessSpace(); AUKN_SYM AuSPtr ReserveAddressSpace(AuUInt uLength); }