/*** Copyright (C) 2022 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: AuProcessSectionFileMapView.NT.hpp Date: 2022-08-09 Author: Reece ***/ #pragma once namespace Aurora::Process { struct ProcessSectionView; struct ProcessSectionFileMapView : IProcessSectionMapView { virtual ~ProcessSectionFileMapView(); ProcessSectionFileMapView(AuUInt uAddress, HANDLE hFileSection); void Unmap() override; bool Flush(AuUInt uOffset, AuUInt uLength) override; AuUInt GetBaseAddress() override; AuUInt GetAddress(AuUInt uOffset) override; AuUInt8 *GetBasePointer() override; AuUInt8 *GetPointer(AuUInt uOffset) override; Memory::MemoryViewWrite ToWriteView() override; Memory::MemoryViewRead ToReadView() override; bool LockSwap() override; bool UnlockSwap() override; ProcessSectionView *pProcessGlobalHint {}; AuSPtr pSharedSectionHint {}; AuUInt uOffset {}; AuUInt uLength {}; private: HANDLE hFileSection {}; AuUInt uAddress_ {}; AuAUInt32 uInUse_ {}; AuMutex mutex_; bool bIsDead_ {}; }; }