You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
2.0 KiB
93 lines
2.0 KiB
/*++
|
|
|
|
Copyright (c) 1999-2001 Microsoft Corporation
|
|
|
|
Abstract:
|
|
|
|
Manages a set of regions indexed by virtual addresses
|
|
and backed by mapped memory.
|
|
|
|
Author:
|
|
|
|
Matthew D Hendel (math) 16-Sept-1999
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#ifndef __MMAP_HPP__
|
|
#define __MMAP_HPP__
|
|
|
|
#define HR_REGION_CONFLICT HRESULT_FROM_NT(STATUS_CONFLICTING_ADDRESSES)
|
|
|
|
typedef struct _MEMORY_MAP_ENTRY
|
|
{
|
|
ULONG64 BaseOfRegion;
|
|
ULONG SizeOfRegion;
|
|
PVOID Region;
|
|
PVOID UserData;
|
|
BOOL AllowOverlap;
|
|
struct _MEMORY_MAP_ENTRY * Next;
|
|
} MEMORY_MAP_ENTRY, * PMEMORY_MAP_ENTRY;
|
|
|
|
class MappedMemoryMap
|
|
{
|
|
public:
|
|
MappedMemoryMap(void);
|
|
~MappedMemoryMap(void);
|
|
|
|
HRESULT AddRegion(
|
|
ULONG64 BaseOfRegion,
|
|
ULONG SizeOfRegion,
|
|
PVOID Buffer,
|
|
PVOID UserData,
|
|
BOOL AllowOverlap
|
|
);
|
|
|
|
BOOL ReadMemory(
|
|
ULONG64 BaseOfRange,
|
|
OUT PVOID Buffer,
|
|
ULONG SizeOfRange,
|
|
PULONG BytesRead
|
|
);
|
|
|
|
BOOL CheckMap(
|
|
IN PVOID Map
|
|
);
|
|
|
|
BOOL GetRegionInfo(
|
|
IN ULONG64 Addr,
|
|
OUT ULONG64* BaseOfRegion, OPTIONAL
|
|
OUT ULONG* SizeOfRegion, OPTIONAL
|
|
OUT PVOID* Buffer, OPTIONAL
|
|
OUT PVOID* UserData OPTIONAL
|
|
);
|
|
|
|
BOOL GetNextRegion(
|
|
IN ULONG64 Addr,
|
|
OUT PULONG64 Next
|
|
);
|
|
|
|
BOOL RemoveRegion(
|
|
IN ULONG64 BaseOfRegion,
|
|
IN ULONG SizeOfRegion
|
|
);
|
|
|
|
BOOL GetRegionByUserData(
|
|
IN PVOID UserData,
|
|
OUT PULONG64 Base,
|
|
OUT PULONG Size
|
|
);
|
|
|
|
private:
|
|
PMEMORY_MAP_ENTRY AddMapEntry(ULONG64 BaseOfRegion, ULONG SizeOfRegion,
|
|
PVOID Buffer, PVOID UserData,
|
|
BOOL AllowOverlap);
|
|
PMEMORY_MAP_ENTRY FindPreceedingRegion(ULONG64 Addr);
|
|
PMEMORY_MAP_ENTRY FindContainingRegion(ULONG64 Addr);
|
|
|
|
PMEMORY_MAP_ENTRY m_List;
|
|
ULONG m_RegionCount;
|
|
};
|
|
|
|
#endif // #ifndef __MMAP_HPP__
|