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
BOOLEAN TopDown
);
-VOID
-NTAPI
-MmMapMemoryArea(PVOID BaseAddress,
- SIZE_T Length,
- ULONG Consumer,
- ULONG Protection);
-
VOID
NTAPI
MiRosCheckMemoryAreas(
NTAPI
MmShowOutOfSpaceMessagePagingFile(VOID);
+NTSTATUS
+NTAPI
+MiReadPageFile(
+ _In_ PFN_NUMBER Page,
+ _In_ ULONG PageFileIndex,
+ _In_ ULONG_PTR PageFileOffset);
+
/* process.c ****************************************************************/
NTSTATUS
VOID
NTAPI
-MiInitializeSpecialPool();
+MiInitializeSpecialPool(VOID);
BOOLEAN
NTAPI
MmIsSpecialPoolAddress(
IN PVOID P);
+BOOLEAN
+NTAPI
+MmIsSpecialPoolAddressFree(
+ IN PVOID P);
+
PVOID
NTAPI
MmAllocateSpecialPool(
MmDeleteVirtualMapping(
struct _EPROCESS *Process,
PVOID Address,
- BOOLEAN FreePage,
BOOLEAN* WasDirty,
PPFN_NUMBER Page
);
POOL_TYPE PoolType,
ULONG Tag);
+VOID
+NTAPI
+ExReturnPoolQuota(
+ IN PVOID P);
+
/* mmsup.c *****************************************************************/