AuroraRuntime/Source/Process/AuProcessSectionFileMapView.NT.hpp

48 lines
1.2 KiB
C++

/***
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<IProcessSectionView> pSharedSectionHint {};
AuUInt uOffset {};
AuUInt uLength {};
private:
HANDLE hFileSection {};
AuUInt uAddress_ {};
AuAUInt32 uInUse_ {};
AuMutex mutex_;
bool bIsDead_ {};
};
}