PAGE_EXECUTE_READ | \
PAGE_EXECUTE_READWRITE | \
PAGE_EXECUTE_WRITECOPY | \
- PAGE_NOACCESS)
+ PAGE_NOACCESS | \
+ PAGE_NOCACHE)
#define PAGE_IS_READABLE \
(PAGE_READONLY | \
};
} ROS_SECTION_OBJECT, *PROS_SECTION_OBJECT;
+#define MA_GetStartingAddress(_MemoryArea) ((_MemoryArea)->VadNode.StartingVpn << PAGE_SHIFT)
+#define MA_GetEndingAddress(_MemoryArea) (((_MemoryArea)->VadNode.EndingVpn + 1) << PAGE_SHIFT)
+
typedef struct _MEMORY_AREA
{
- PVOID StartingAddress;
- PVOID EndingAddress;
- struct _MEMORY_AREA *Parent;
- struct _MEMORY_AREA *LeftChild;
- struct _MEMORY_AREA *RightChild;
+ MMVAD VadNode;
+
ULONG Type;
ULONG Protect;
ULONG Flags;
SIZE_T Length,
ULONG Protection,
PMEMORY_AREA *Result,
- BOOLEAN FixedAddress,
ULONG AllocationFlags,
ULONG AllocationGranularity
);
PVOID Address
);
-// fixme: unused?
-ULONG_PTR
-NTAPI
-MmFindGapAtAddress_(
- PMMSUPPORT AddressSpace,
- PVOID Address
-);
-
NTSTATUS
NTAPI
MmFreeMemoryArea(
PVOID FreePageContext
);
-NTSTATUS
+VOID
NTAPI
-MmFreeMemoryAreaByPtr(
- PMMSUPPORT AddressSpace,
- PVOID BaseAddress,
- PMM_FREE_PAGE_FUNC FreePage,
- PVOID FreePageContext
-);
+MiRosCleanupMemoryArea(
+ PEPROCESS Process,
+ PMMVAD Vad);
PMEMORY_AREA
NTAPI
POOL_TYPE PoolType,
ULONG Tag);
+VOID
+NTAPI
+ExReturnPoolQuota(
+ IN PVOID P);
+
/* mmsup.c *****************************************************************/