/*** Copyright (C) 2022 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: AuProcessSectionViewReserved.NT.hpp Date: 2022-09-30 Author: Reece ***/ #pragma once #include "AuProcessSectionAllocations.hpp" namespace Aurora::Process { struct ProcessSectionViewReserved : IProcessSectionView, ProcessSectionAllocations, AuEnableSharedFromThis { char *pBaseAddress {}; bool Init(AuUInt uLength); bool AllocateAddress(AuUInt uOffset, AuUInt uLength, AuUInt &uAddressOut); bool ReleaseAndCoaleceAddress(AuUInt uOffset, AuUInt uLength); AuUInt GetStart() override; AuUInt GetEnd() override; AuSPtr Allocate(AuUInt uLength) override; AuSPtr MapFileByPath(const AuString &str, AuUInt64 uOffset, AuUInt uLength, AuFS::EFileOpenMode mode, AuFS::EFileAdvisoryLockLevel sectionLock) override; AuSPtr MapFileByObject(const AuSPtr &pIOHandle, AuUInt64 uOffset, AuUInt uLength, Aurora::IO::FS::EFileOpenMode mode, AuFS::EFileAdvisoryLockLevel processLockLevel) override; AuSPtr MapIPCMemory(const AuString &handle, AuUInt64 uOffset, AuUInt uLength, AuFS::EFileOpenMode mode) override; AuSPtr AllocateEx(AuUInt uLength, AuUInt uOffset) override; AuSPtr AllocateEx2(AuUInt uLength, AuUInt uOffset, PageTable permissions) override; AuSPtr MapFileByPathEx(AuUInt viewOffset, const AuString &str, AuUInt64 uOffset, AuUInt uLength, Aurora::IO::FS::EFileOpenMode mode, Aurora::IO::FS::EFileAdvisoryLockLevel processLockLevel) override; AuSPtr MapFileByObjectEx(AuUInt viewOffset, const AuSPtr &pIOHandle, AuUInt64 uOffset, AuUInt uLength, Aurora::IO::FS::EFileOpenMode mode, Aurora::IO::FS::EFileAdvisoryLockLevel processLockLevel) override; AuSPtr MapIPCMemoryEx(AuUInt viewOffset, const AuString &handle, AuUInt64 uOffset, AuUInt uLength, Aurora::IO::FS::EFileOpenMode mode) override; AuList> GetAllocations() override; }; void LoadProcessSectionViewSymbol(); }