15 #define MI_LOWEST_VAD_ADDRESS (PVOID)MM_LOWEST_USER_ADDRESS 19 #define _1MB (1024 * _1KB) 20 #define _1GB (1024 * _1MB) 23 #define _64K (64 * _1KB) 26 #define PT_SIZE (PTE_PER_PAGE * sizeof(MMPTE)) 29 #define PD_SIZE (PDE_PER_PAGE * sizeof(MMPDE)) 32 #define SYSTEM_PD_SIZE (PPE_PER_PAGE * PD_SIZE) 43 #define MM_ZERO_ACCESS 0 46 #define MM_EXECUTE_READ 3 47 #define MM_READWRITE 4 48 #define MM_WRITECOPY 5 49 #define MM_EXECUTE_READWRITE 6 50 #define MM_EXECUTE_WRITECOPY 7 51 #define MM_PROTECT_ACCESS 7 56 #define MM_NOCACHE 0x08 57 #define MM_GUARDPAGE 0x10 58 #define MM_WRITECOMBINE 0x18 59 #define MM_PROTECT_SPECIAL 0x18 64 #define MM_DECOMMIT (MM_ZERO_ACCESS | MM_GUARDPAGE) 65 #define MM_NOACCESS (MM_ZERO_ACCESS | MM_WRITECOMBINE) 66 #define MM_OUTSWAPPED_KSTACK (MM_EXECUTE_WRITECOPY | MM_WRITECOMBINE) 67 #define MM_INVALID_PROTECTION 0xFFFFFFFF 86 #define PTE_READONLY 0 // Doesn't exist on x86 87 #define PTE_EXECUTE 0 // Not worrying about NX yet 88 #define PTE_EXECUTE_READ 0 // Not worrying about NX yet 89 #define PTE_READWRITE 0x2 90 #define PTE_WRITECOPY 0x200 91 #define PTE_EXECUTE_READWRITE 0x2 // Not worrying about NX yet 92 #define PTE_EXECUTE_WRITECOPY 0x200 93 #define PTE_PROTOTYPE 0x400 99 #define PTE_ACCESSED 0x20 100 #define PTE_DIRTY 0x40 105 #define PTE_ENABLE_CACHE 0 106 #define PTE_DISABLE_CACHE 0x10 107 #define PTE_WRITECOMBINED_CACHE 0x10 108 #define PTE_PROTECT_MASK 0x612 109 #elif defined(_M_AMD64) 113 #define PTE_READONLY 0x8000000000000000ULL 114 #define PTE_EXECUTE 0x0000000000000000ULL 115 #define PTE_EXECUTE_READ PTE_EXECUTE 116 #define PTE_READWRITE 0x8000000000000002ULL 117 #define PTE_WRITECOPY 0x8000000000000200ULL 118 #define PTE_EXECUTE_READWRITE 0x0000000000000002ULL 119 #define PTE_EXECUTE_WRITECOPY 0x0000000000000200ULL 120 #define PTE_PROTOTYPE 0x0000000000000400ULL 125 #define PTE_VALID 0x0000000000000001ULL 126 #define PTE_ACCESSED 0x0000000000000020ULL 127 #define PTE_DIRTY 0x0000000000000040ULL 132 #define PTE_ENABLE_CACHE 0x0000000000000000ULL 133 #define PTE_DISABLE_CACHE 0x0000000000000010ULL 134 #define PTE_WRITECOMBINED_CACHE 0x0000000000000010ULL 135 #define PTE_PROTECT_MASK 0x8000000000000612ULL 136 #elif defined(_M_ARM) 137 #define PTE_READONLY 0x200 138 #define PTE_EXECUTE 0 // Not worrying about NX yet 139 #define PTE_EXECUTE_READ 0 // Not worrying about NX yet 140 #define PTE_READWRITE 0 // Doesn't exist on ARM 141 #define PTE_WRITECOPY 0 // Doesn't exist on ARM 142 #define PTE_EXECUTE_READWRITE 0 // Not worrying about NX yet 143 #define PTE_EXECUTE_WRITECOPY 0 // Not worrying about NX yet 144 #define PTE_PROTOTYPE 0x400 // Using the Shared bit 149 #define PTE_ENABLE_CACHE 0 150 #define PTE_DISABLE_CACHE 0x10 151 #define PTE_WRITECOMBINED_CACHE 0x10 152 #define PTE_PROTECT_MASK 0x610 154 #error Define these please! 160 #define IMAGE_SCN_PROTECTION_MASK (IMAGE_SCN_MEM_WRITE | IMAGE_SCN_MEM_READ | IMAGE_SCN_MEM_EXECUTE) 168 #define MI_IS_SESSION_IMAGE_ADDRESS(Address) \ 169 (((Address) >= MiSessionImageStart) && ((Address) < MiSessionImageEnd)) 171 #define MI_IS_SESSION_ADDRESS(Address) \ 172 (((Address) >= MmSessionBase) && ((Address) < MiSessionSpaceEnd)) 174 #define MI_IS_SESSION_PTE(Pte) \ 175 ((((PMMPTE)Pte) >= MiSessionBasePte) && (((PMMPTE)Pte) < MiSessionLastPte)) 177 #define MI_IS_PAGE_TABLE_ADDRESS(Address) \ 178 (((PVOID)(Address) >= (PVOID)PTE_BASE) && ((PVOID)(Address) <= (PVOID)PTE_TOP)) 180 #define MI_IS_SYSTEM_PAGE_TABLE_ADDRESS(Address) \ 181 (((Address) >= (PVOID)MiAddressToPte(MmSystemRangeStart)) && ((Address) <= (PVOID)PTE_TOP)) 183 #define MI_IS_PAGE_TABLE_OR_HYPER_ADDRESS(Address) \ 184 (((PVOID)(Address) >= (PVOID)PTE_BASE) && ((PVOID)(Address) <= (PVOID)MmHyperSpaceEnd)) 189 #define MI_MAKE_SOFTWARE_PTE(p, x) ((p)->u.Long = (x << MM_PTE_SOFTWARE_PROTECTION_BITS)) 194 #define MI_SET_PFN_DELETED(x) ((x)->PteAddress = (PMMPTE)((ULONG_PTR)(x)->PteAddress | 1)) 195 #define MI_IS_PFN_DELETED(x) ((ULONG_PTR)((x)->PteAddress) & 1) 201 #define MM_SYSLDR_NO_IMPORTS (PVOID)0xFFFFFFFFFFFFFFFEULL 202 #define MM_SYSLDR_BOOT_LOADED (PVOID)0xFFFFFFFFFFFFFFFFULL 204 #define MM_SYSLDR_NO_IMPORTS (PVOID)0xFFFFFFFE 205 #define MM_SYSLDR_BOOT_LOADED (PVOID)0xFFFFFFFF 207 #define MM_SYSLDR_SINGLE_ENTRY 0x1 212 #define MI_INITIAL_SESSION_IDS 64 214 #if defined(_M_IX86) || defined(_M_ARM) 218 #define LIST_HEAD 0xFFFFFFFF 225 #define COLORED_LIST_HEAD ((1 << 25) - 1) // 0x1FFFFFF 226 #elif defined(_M_AMD64) 227 #define LIST_HEAD 0xFFFFFFFFFFFFFFFFLL 228 #define COLORED_LIST_HEAD ((1ULL << 57) - 1) // 0x1FFFFFFFFFFFFFFLL 230 #error Define these please! 236 #define MI_GET_PAGE_COLOR(x) ((x) & MmSecondaryColorMask) 237 #define MI_GET_NEXT_COLOR() (MI_GET_PAGE_COLOR(++MmSystemPageColor)) 238 #define MI_GET_NEXT_PROCESS_COLOR(x) (MI_GET_PAGE_COLOR(++(x)->NextPageColor)) 244 #define MI_PTE_LOOKUP_NEEDED 0xffffffffULL 246 #define MI_PTE_LOOKUP_NEEDED 0xFFFFF 252 #define MI_SESSION_DATA_PAGES_MAXIMUM (MM_ALLOCATION_GRANULARITY / PAGE_SIZE) 253 #define MI_SESSION_TAG_PAGES_MAXIMUM (MM_ALLOCATION_GRANULARITY / PAGE_SIZE) 258 #define MM_READ_WRITE_ALLOWED 11 259 #define MM_READ_ONLY_ALLOWED 10 260 #define MM_NO_ACCESS_ALLOWED 01 261 #define MM_DELETE_CHECK 85 266 #define MI_SYSTEM_VIEW_BUCKET_SIZE _64K 272 #define POOL_BLOCK_SIZE 16 274 #define POOL_BLOCK_SIZE 8 276 #define POOL_LISTS_PER_PAGE (PAGE_SIZE / POOL_BLOCK_SIZE) 277 #define BASE_POOL_TYPE_MASK 1 278 #define POOL_MAX_ALLOC (PAGE_SIZE - (sizeof(POOL_HEADER) + POOL_BLOCK_SIZE)) 283 #define POOL_FLAG_CHECK_TIMERS 0x1 284 #define POOL_FLAG_CHECK_WORKERS 0x2 285 #define POOL_FLAG_CHECK_RESOURCES 0x4 286 #define POOL_FLAG_VERIFIER 0x8 287 #define POOL_FLAG_CHECK_DEADLOCK 0x10 288 #define POOL_FLAG_SPECIAL_POOL 0x20 289 #define POOL_FLAG_DBGPRINT_ON_FAILURE 0x40 290 #define POOL_FLAG_CRASH_ON_FAILURE 0x80 295 #define POOL_CORRUPTED_LIST 3 296 #define POOL_SIZE_OR_INDEX_MISMATCH 5 297 #define POOL_ENTRIES_NOT_ALIGNED_PREVIOUS 6 298 #define POOL_HEADER_NOT_ALIGNED 7 299 #define POOL_HEADER_IS_ZERO 8 300 #define POOL_ENTRIES_NOT_ALIGNED_NEXT 9 301 #define POOL_ENTRY_NOT_FOUND 10 306 #define POOL_ENTRY_CORRUPTED 1 307 #define POOL_ENTRY_ALREADY_FREE 6 308 #define POOL_ENTRY_NOT_ALLOCATED 7 309 #define POOL_ALLOC_IRQL_INVALID 8 310 #define POOL_FREE_IRQL_INVALID 9 311 #define POOL_BILLED_PROCESS_INVALID 13 312 #define POOL_HEADER_SIZE_INVALID 32 509 #if defined (_M_AMD64) 514 #if defined (_M_AMD64) 515 PMMPTE SpecialPoolFirstPte;
516 PMMPTE SpecialPoolLastPte;
517 PMMPTE NextPdeForSpecialPoolExpansion;
518 PMMPTE LastPdeForSpecialPoolExpansion;
755 MiIsUserPxe(PointerPte) ||
758 MiIsUserPpe(PointerPte) ||
796 NewPte->u.Hard.PageFrameNumber = PageFrameNumber;
800 #ifdef _GLOBAL_PAGES_ARE_AWESOME_ 802 NewPte->u.Hard.Global = 1;
804 NewPte->u.Hard.Valid = 1;
824 NewPte->u.Hard.PageFrameNumber = PageFrameNumber;
847 NewPte->u.Hard.Valid =
TRUE;
848 NewPte->u.Hard.Owner =
TRUE;
849 NewPte->u.Hard.PageFrameNumber = PageFrameNumber;
866 NewPte->u.Proto.Prototype = 1;
879 NewPte->u.Proto.ProtoAddressLow = (
Offset & 0x1FC) >> 2;
880 NewPte->u.Proto.ProtoAddressHigh = (
Offset & 0x3FFFFE00) >> 9;
895 NewPte->u.Subsect.Prototype = 1;
918 NewPte->u.Subsect.SubsectionAddressLow = (
Offset & 0x78) >> 3;
919 NewPte->u.Subsect.SubsectionAddressHigh = (
Offset & 0xFFFFF80) >> 7;
927 return ((PointerPte->
u.
Long & 0xFFFFFC01) != 0);
939 NewPte->u.Trans.Transition = 1;
940 NewPte->u.Trans.Protection = Protection;
941 NewPte->u.Trans.PageFrameNumber =
Page;
968 ASSERT(PointerPte->u.Hard.Valid == 0);
986 ASSERT(PointerPte->u.Hard.Valid == 1);
1001 ASSERT(InvalidPte.u.Hard.Valid == 0);
1002 ASSERT(InvalidPte.u.Long != 0);
1003 *PointerPte = InvalidPte;
1014 ASSERT(PointerPte->u.Long != 0);
1015 PointerPte->u.Long = 0;
1027 ASSERT(PointerPde->u.Hard.Valid == 0);
1029 ASSERT(PointerPde->u.Hard.NoExecute == 0);
1044 ASSERT(InvalidPde.u.Hard.Valid == 0);
1045 ASSERT(InvalidPde.u.Long != 0);
1049 *PointerPde = InvalidPde;
1105 return Section->u.Flags.filler;
1108 #define MI_IS_ROS_PFN(x) ((x)->u4.AweAllocation == TRUE) 1121 return (
Process->Vm.Flags.AcquiredUnsafe ==
TRUE);
1189 Process->Vm.Flags.AcquiredUnsafe = 1;
1254 Process->Vm.Flags.AcquiredUnsafe = 0;
1293 else if (WorkingSet->Flags.SessionSpace)
1335 else if (WorkingSet->Flags.SessionSpace)
1370 else if (WorkingSet->Flags.SessionSpace)
1409 else if (WorkingSet->Flags.SessionSpace)
1568 ProtoPte = Vad->FirstPrototypePte + (Vpn - Vad->StartingVpn);
1569 ASSERT(ProtoPte <= Vad->LastContiguousPte);
1593 ASSERT(Pfn1->u3.e2.ReferenceCount != 0);
1594 ASSERT(Pfn1->u2.ShareCount == 0);
1597 if (Pfn1->u3.e2.ReferenceCount == 1)
1603 if ((Pfn1->u3.e1.PrototypePte == 1) &&
1604 (Pfn1->OriginalPte.u.Soft.Prototype == 1))
1607 DPRINT1(
"Not returning commit for prototype PTE\n");
1622 USHORT RefCount, OldRefCount;
1629 OldRefCount = Pfn1->u3.e2.ReferenceCount;
1630 ASSERT(OldRefCount != 0);
1633 if (OldRefCount == 1)
1636 ASSERT(Pfn1->u3.e2.ReferenceCount == 1);
1638 ASSERT(Pfn1->u2.ShareCount == 0);
1641 if ((Pfn1->u3.e1.PrototypePte == 1) &&
1642 (Pfn1->OriginalPte.u.Soft.Prototype == 1))
1645 DPRINT1(
"Not returning commit for prototype PTE\n");
1660 }
while (OldRefCount != RefCount);
1667 if (Pfn1->u2.ShareCount >= 1)
1673 if ((Pfn1->u3.e1.PrototypePte == 1) &&
1674 (Pfn1->OriginalPte.u.Soft.Prototype == 1))
1694 USHORT RefCount, OldRefCount;
1697 ASSERT(Pfn1->u3.e2.ReferenceCount != 0);
1711 if ((Pfn1->u3.e1.PrototypePte == 1) &&
1712 (Pfn1->OriginalPte.u.Soft.Prototype == 1))
1715 DPRINT1(
"Not charging commit for prototype PTE\n");
1726 OldRefCount = Pfn1->u3.e2.ReferenceCount;
1727 ASSERT(OldRefCount != 0);
1728 ASSERT(OldRefCount < 2500);
1735 }
while (OldRefCount != RefCount);
1752 if ((Pfn1->u3.e1.PrototypePte == 1) &&
1753 (Pfn1->OriginalPte.u.Soft.Prototype == 1))
1756 DPRINT1(
"Not charging commit for prototype PTE\n");
1764 if (NewRefCount == 2)
1767 if (Pfn1->u2.ShareCount)
1781 ASSERT(NewRefCount < 2500);
1797 ASSERT(Pfn1->u2.ShareCount == 0);
1801 if ((Pfn1->u3.e1.PrototypePte == 1) &&
1802 (Pfn1->OriginalPte.u.Soft.Prototype == 1))
1805 DPRINT1(
"Not charging commit for prototype PTE\n");
1813 if (NewRefCount != 1)
1816 ASSERT(NewRefCount < 2500);
2351 IN PVOID PageTableVirtualAddress,
2426 #if (_MI_PAGING_LEVELS == 2) 2429 MiSynchronizeSystemPde(
PMMPDE PointerPde)
2439 *PointerPde = SystemPde;
2449 #if _MI_PAGING_LEVELS == 2 2547 #if _MI_PAGING_LEVELS >= 3 2552 #if _MI_PAGING_LEVELS == 4 PVOID MiSessionImageStart
#define KeGetCurrentIrql()
#define MI_IS_PAGE_TABLE_ADDRESS(Address)
PFN_NUMBER MmResidentAvailableAtInit
PFN_NUMBER MiNumberOfFreePages
struct _PHYSICAL_MEMORY_DESCRIPTOR * PPHYSICAL_MEMORY_DESCRIPTOR
FORCEINLINE VOID MI_ERASE_PTE(IN PMMPTE PointerPte)
ULONG_PTR MmSubsectionBase
IN CINT OUT PVOID IN ULONG OUT PULONG ReturnLength
FORCEINLINE VOID ExAcquirePushLockExclusive(PEX_PUSH_LOCK PushLock)
FORCEINLINE BOOLEAN MI_IS_PROCESS_WORKING_SET(PMMSUPPORT WorkingSet)
VOID NTAPI MiInitializePfn(IN PFN_NUMBER PageFrameIndex, IN PMMPTE PointerPte, IN BOOLEAN Modified)
#define _MI_PAGING_LEVELS
TABLE_SEARCH_RESULT NTAPI MiFindEmptyAddressRangeDownTree(IN SIZE_T Length, IN ULONG_PTR BoundaryAddress, IN ULONG_PTR Alignment, IN PMM_AVL_TABLE Table, OUT PULONG_PTR Base, OUT PMMADDRESS_NODE *Parent)
MMPFNLIST MmStandbyPageListByPriority[8]
MM_AVL_TABLE MmSectionBasedRoot
VOID NTAPI MiSessionRemoveProcess(VOID)
_In_ ULONG _In_ ULONG _In_ ULONG Length
PVOID MmNonPagedPoolStart
ULONG NTAPI MiMakeSystemAddressValidPfn(IN PVOID VirtualAddress, IN KIRQL OldIrql)
VOID NTAPI MiInsertPageInFreeList(IN PFN_NUMBER PageFrameIndex)
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _In_ _In_ _Strict_type_match_ POOL_TYPE _In_opt_ PWDF_OBJECT_ATTRIBUTES _In_opt_ ULONG _Out_ WDFLOOKASIDE * Lookaside
FORCEINLINE VOID MiUnlockProcessWorkingSetUnsafe(IN PEPROCESS Process, IN PETHREAD Thread)
#define MiAddressToPde(x)
BOOLEAN NTAPI KeAreAllApcsDisabled(VOID)
VOID NTAPI MiInitializePfnDatabase(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
FORCEINLINE KIRQL MiAcquireExpansionLock(VOID)
VOID NTAPI MiUnlinkPageFromList(IN PMMPFN Pfn)
PFN_NUMBER MmMinimumFreePages
PPHYSICAL_MEMORY_DESCRIPTOR NTAPI MmInitializeMemoryLimits(IN PLOADER_PARAMETER_BLOCK LoaderBlock, IN PBOOLEAN IncludeType)
FORCEINLINE VOID MiDereferencePfnAndDropLockCount(IN PMMPFN Pfn1)
#define PsGetCurrentThread()
SIZE_T MmMinimumNonPagedPoolSize
PKEVENT MiHighNonPagedPoolEvent
KGUARDED_MUTEX MmSectionBasedMutex
USHORT UsedPageTableEntries[768]
#define MI_MAKE_ACCESSED_PAGE(x)
ULONG OwnsSystemWorkingSetShared
PMMPTE MmSystemPtesEnd[MaximumPtePoolTypes]
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID _In_ ULONG_PTR _In_ SIZE_T _Inout_opt_ PLARGE_INTEGER _Inout_ PSIZE_T _In_ SECTION_INHERIT _In_ ULONG _In_ ULONG Protect
FORCEINLINE VOID MiUnlockProcessWorkingSetShared(IN PEPROCESS Process, IN PETHREAD Thread)
VOID NTAPI MiReleaseProcessReferenceToSessionDataPage(IN PMM_SESSION_SPACE SessionGlobal)
LONG ProcessReferenceToSession
#define MI_MAKE_OWNER_PAGE(x)
PMMPTE NTAPI MiReserveSystemPtes(IN ULONG NumberOfPtes, IN MMSYSTEM_PTE_POOL_TYPE SystemPtePoolType)
struct _MMCOLOR_TABLES MMCOLOR_TABLES
#define MI_IS_SESSION_ADDRESS(Address)
VOID NTAPI MiInitializeLargePageSupport(VOID)
VOID NTAPI MiWriteProtectSystemImage(_In_ PVOID ImageBase)
FORCEINLINE BOOLEAN MI_IS_MAPPED_PTE(PMMPTE PointerPte)
ULONG MmMaxAdditionNonPagedPoolPerMb
enum _TABLE_SEARCH_RESULT TABLE_SEARCH_RESULT
ULONG MmTotalFreeSystemPtes[MaximumPtePoolTypes]
NTSTATUS NTAPI MiInitializeAndChargePfn(OUT PPFN_NUMBER PageFrameIndex, IN PMMPDE PointerPde, IN PFN_NUMBER ContainingPageFrame, IN BOOLEAN SessionAllocation)
VOID NTAPI MiDeleteARM3Section(PVOID ObjectBody)
PFN_NUMBER MmHighMemoryThreshold
struct _MI_LARGE_PAGE_RANGES MI_LARGE_PAGE_RANGES
FORCEINLINE VOID MiReferenceUnusedPageAndBumpLockCount(IN PMMPFN Pfn1)
FORCEINLINE USHORT MiDecrementPageTableReferences(IN PVOID Address)
PLDR_DATA_TABLE_ENTRY NTAPI MiLookupDataTableEntry(IN PVOID Address)
VOID NTAPI KeAcquireSpinLock(PKSPIN_LOCK SpinLock, PKIRQL OldIrql)
SIZE_T MmSessionImageSize
HARDWARE_PDE_ARMV6 TempPde
PMM_SESSION_SPACE MmSessionSpace
#define SESSION_POOL_LOOKASIDES
KSPIN_LOCK MmExpansionLock
FORCEINLINE VOID MiLockProcessWorkingSet(IN PEPROCESS Process, IN PETHREAD Thread)
IN PVOID IN PVOID IN USHORT IN USHORT Size
PCHAR SystemSpaceViewStart
VOID NTAPI MiInitializePfnForOtherProcess(IN PFN_NUMBER PageFrameIndex, IN PVOID PteAddress, IN PFN_NUMBER PteFrame)
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn BOOLEAN Physical UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 ACPI_BUFFER *RetPathPtr ACPI_OBJECT_HANDLER void *Data ACPI_OBJECT_HANDLER void **Data ACPI_STRING ACPI_OBJECT_LIST ACPI_BUFFER *ReturnObjectBuffer ACPI_DEVICE_INFO **ReturnBuffer ACPI_HANDLE Parent
MEMORY_ALLOCATION_DESCRIPTOR MxOldFreeDescriptor
ULONG SystemSpaceHashEntries
PFN_COUNT MiExpansionPoolPagesInitialCharge
NTSTATUS NTAPI MiFindEmptyAddressRangeDownBasedTree(IN SIZE_T Length, IN ULONG_PTR BoundaryAddress, IN ULONG_PTR Alignment, IN PMM_AVL_TABLE Table, OUT PULONG_PTR Base)
ULONG MmLargePageDriverBufferLength
NTSTATUS FASTCALL MiCheckPdeForPagedPool(IN PVOID Address)
LARGE_INTEGER LastProcessSwappedOutTime
VOID NTAPI MiSyncCachedRanges(VOID)
SIZE_T MmMinimumStackCommitInBytes
LIST_ENTRY ListHeads[POOL_LISTS_PER_PAGE]
#define MiGetPdeOffset(x)
VOID NTAPI MiInsertBasedSection(IN PSECTION Section)
FORCEINLINE VOID MiReferenceUsedPageAndBumpLockCount(IN PMMPFN Pfn1)
BOOLEAN MmLargeSystemCache
SIZE_T MmAllocatedNonPagedPool
VOID NTAPI MiInitializeSessionSpaceLayout(VOID)
FORCEINLINE VOID MI_MAKE_SUBSECTION_PTE(IN PMMPTE NewPte, IN PVOID Segment)
PPOOL_TRACKER_TABLE PoolTrackTable
KGUARDED_MUTEX SystemSpaceViewLock
VOID NTAPI MiDeletePte(IN PMMPTE PointerPte, IN PVOID VirtualAddress, IN PEPROCESS CurrentProcess, IN PMMPTE PrototypePte)
struct _POOL_HEADER * PPOOL_HEADER
DRIVER_UNLOAD * PDRIVER_UNLOAD
MM_PAGED_POOL_INFO PagedPoolInfo
NTSTATUS NTAPI MiInitMachineDependent(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
enum _MI_PFN_CACHE_ATTRIBUTE MI_PFN_CACHE_ATTRIBUTE
PFN_NUMBER NTAPI MiRemoveZeroPage(IN ULONG Color)
SIZE_T MmSizeOfPagedPoolInBytes
enum _TYPE_OF_MEMORY TYPE_OF_MEMORY
struct LOOKASIDE_ALIGN _GENERAL_LOOKASIDE GENERAL_LOOKASIDE
BOOLEAN NTAPI MmArmInitSystem(IN ULONG Phase, IN PLOADER_PARAMETER_BLOCK LoaderBlock)
FORCEINLINE BOOLEAN MI_IS_WS_UNSAFE(IN PEPROCESS Process)
PMMPTE MmLastReservedMappingPte
VOID NTAPI MiInitializeSessionWsSupport(VOID)
FORCEINLINE BOOLEAN MM_ANY_WS_LOCK_HELD(IN PETHREAD Thread)
enum _MM_SYSTEM_SIZE MM_SYSTEMSIZE
FORCEINLINE BOOLEAN MiIsMemoryTypeInvisible(TYPE_OF_MEMORY MemoryType)
struct _MMSESSION * PMMSESSION
SIZE_T MmSystemLockPagesCount
PDRIVER_UNLOAD Win32KDriverUnload
struct _POOL_DESCRIPTOR * PPOOL_DESCRIPTOR
ULONG OwnsSessionWorkingSetShared
struct _POOL_TRACKER_BIG_PAGES POOL_TRACKER_BIG_PAGES
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
SIZE_T MmMaximumNonPagedPoolInBytes
PETHREAD MiExpansionLockOwner
VOID FASTCALL MiSyncARM3WithROS(IN PVOID AddressStart, IN PVOID AddressEnd)
FORCEINLINE VOID MI_WRITE_VALID_PTE(IN PMMPTE PointerPte, IN MMPTE TempPte)
ULONG MmVerifyDriverBufferLength
#define KeMemoryBarrierWithoutFence()
#define InterlockedIncrementSizeT(a)
PFN_NUMBER NTAPI MiFindContiguousPages(IN PFN_NUMBER LowestPfn, IN PFN_NUMBER HighestPfn, IN PFN_NUMBER BoundaryPfn, IN PFN_NUMBER SizeInPages, IN MEMORY_CACHING_TYPE CacheType)
FORCEINLINE VOID MI_WRITE_INVALID_PDE(IN PMMPDE PointerPde, IN MMPDE InvalidPde)
PMEMORY_ALLOCATION_DESCRIPTOR MxFreeDescriptor
LARGE_INTEGER MmCriticalSectionTimeout
MMPDE ValidKernelPdeLocal
VOID NTAPI MiInitializeSystemPtes(IN PMMPTE StartingPte, IN ULONG NumberOfPtes, IN MMSYSTEM_PTE_POOL_TYPE PoolType)
PFN_NUMBER MmPlentyFreePages
PKEVENT MiLowNonPagedPoolEvent
struct _MMCOLOR_TABLES * PMMCOLOR_TABLES
struct _MI_LARGE_PAGE_DRIVER_ENTRY * PMI_LARGE_PAGE_DRIVER_ENTRY
FORCEINLINE BOOLEAN MiIsUserPde(PVOID Address)
ULONG OwnsSessionWorkingSetExclusive
FORCEINLINE VOID ExReleasePushLockExclusive(PEX_PUSH_LOCK PushLock)
PPHYSICAL_MEMORY_DESCRIPTOR MmPhysicalMemoryBlock
VOID NTAPI MiInitializeSessionIds(VOID)
FORCEINLINE PFN_NUMBER MiRemoveZeroPageSafe(IN ULONG Color)
TABLE_SEARCH_RESULT NTAPI MiFindEmptyAddressRangeInTree(IN SIZE_T Length, IN ULONG_PTR Alignment, IN PMM_AVL_TABLE Table, OUT PMMADDRESS_NODE *PreviousVad, OUT PULONG_PTR Base)
const ULONG_PTR MmProtectToPteMask[32]
MM_PAGED_POOL_INFO MmPagedPoolInfo
FORCEINLINE BOOLEAN MiIsRosSectionObject(IN PSECTION Section)
POOL_DESCRIPTOR PagedPool
FORCEINLINE VOID MI_MAKE_TRANSITION_PTE(_Out_ PMMPTE NewPte, _In_ PFN_NUMBER Page, _In_ ULONG Protection)
VOID NTAPI MiMakePdeExistAndMakeValid(IN PMMPDE PointerPde, IN PEPROCESS TargetProcess, IN KIRQL OldIrql)
FORCEINLINE PMMPTE MiPdeToPte(PMMPDE PointerPde)
_Must_inspect_result_ _In_ PHYSICAL_ADDRESS _In_ PHYSICAL_ADDRESS _In_opt_ PHYSICAL_ADDRESS _In_ MEMORY_CACHING_TYPE CacheType
PMMVAD NTAPI MiLocateAddress(IN PVOID VirtualAddress)
struct _MM_SESSION_SPACE_FLAGS MM_SESSION_SPACE_FLAGS
FORCEINLINE VOID MI_MAKE_PROTOTYPE_PTE(IN PMMPTE NewPte, IN PMMPTE PointerPte)
#define KeLeaveGuardedRegion()
PFN_NUMBER MiHighPagedPoolThreshold
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
ULONG MmVerifyDriverLevel
KEVENT MmZeroingPageEvent
ULONG MmSecondaryColorMask
VOID NTAPI MiDecrementShareCount(IN PMMPFN Pfn1, IN PFN_NUMBER PageFrameIndex)
VOID NTAPI MiInsertPageInList(IN PMMPFNLIST ListHead, IN PFN_NUMBER PageFrameIndex)
FORCEINLINE VOID MiUnlockWorkingSet(IN PETHREAD Thread, IN PMMSUPPORT WorkingSet)
FORCEINLINE VOID MI_WRITE_VALID_PDE(IN PMMPDE PointerPde, IN MMPDE TempPde)
PFN_NUMBER NTAPI MiPagesInLoaderBlock(IN PLOADER_PARAMETER_BLOCK LoaderBlock, IN PBOOLEAN IncludeType)
struct _POOL_TRACKER_TABLE POOL_TRACKER_TABLE
_Must_inspect_result_ _In_ WDFDMATRANSACTION _In_ PFN_WDF_PROGRAM_DMA _In_ WDF_DMA_DIRECTION _In_ PMDL _In_ PVOID VirtualAddress
VOID NTAPI MiReleaseSystemPtes(IN PMMPTE StartingPte, IN ULONG NumberOfPtes, IN MMSYSTEM_PTE_POOL_TYPE SystemPtePoolType)
TABLE_SEARCH_RESULT NTAPI MiCheckForConflictingNode(IN ULONG_PTR StartVpn, IN ULONG_PTR EndVpn, IN PMM_AVL_TABLE Table, OUT PMMADDRESS_NODE *NodeOrParent)
PMMVIEW SystemSpaceViewTable
ULONG NTAPI MiMakeSystemAddressValid(IN PVOID PageTableVirtualAddress, IN PEPROCESS CurrentProcess)
_Must_inspect_result_ _In_ PHYSICAL_ADDRESS _In_ PHYSICAL_ADDRESS SkipBytes
PMMPTE MmSharedUserDataPte
PMMCOLOR_TABLES MmFreePagesByColor[FreePageList+1]
FORCEINLINE ULONG_PTR MiDetermineUserGlobalPteMask(IN PVOID PointerPte)
union _MM_SESSION_SPACE::@1786 u
NTSTATUS NTAPI MiRosUnmapViewInSystemSpace(IN PVOID MappedBase)
NTSTATUS NTAPI MiCheckSecuredVad(IN PMMVAD Vad, IN PVOID Base, IN SIZE_T Size, IN ULONG ProtectionMask)
ULONG MmConsumedPoolPercentage
PMMPTE MmSystemPtesStart[MaximumPtePoolTypes]
FORCEINLINE VOID MiLockProcessWorkingSetUnsafe(IN PEPROCESS Process, IN PETHREAD Thread)
struct _MI_LARGE_PAGE_DRIVER_ENTRY MI_LARGE_PAGE_DRIVER_ENTRY
EX_PUSH_LOCK WorkingSetMutex
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID * BaseAddress
MM_SESSION_SPACE_FLAGS Flags
struct _MM_SESSION_SPACE * GlobalVirtualAddress
_Must_inspect_result_ _In_ ULONG Flags
NTSTATUS NTAPI MiInsertVadEx(_Inout_ PMMVAD Vad, _In_ ULONG_PTR *BaseAddress, _In_ SIZE_T ViewSize, _In_ ULONG_PTR HighestAddress, _In_ ULONG_PTR Alignment, _In_ ULONG AllocationType)
NTSTATUS NTAPI MiUnmapViewOfSection(IN PEPROCESS Process, IN PVOID BaseAddress, IN ULONG Flags)
PVOID MmNonPagedPoolExpansionStart
PMMPTE MmFirstReservedMappingPte
FORCEINLINE VOID MiUnlockProcessWorkingSetForFault(IN PEPROCESS Process, IN PETHREAD Thread, OUT PBOOLEAN Safe, OUT PBOOLEAN Shared)
#define MI_IS_SESSION_PTE(Pte)
ULONG64 UsedPageTableEntries
ULONG ExpNumberOfPagedPools
struct _MM_SESSION_SPACE MM_SESSION_SPACE
_In_ WDFCOLLECTION _In_ ULONG Index
BOOLEAN NTAPI MiInitializeSystemSpaceMap(IN PMMSESSION InputSession OPTIONAL)
ULONG MmMaximumNonPagedPoolPercent
enum _MMSYSTEM_PTE_POOL_TYPE MMSYSTEM_PTE_POOL_TYPE
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
struct _PHYSICAL_MEMORY_RUN PHYSICAL_MEMORY_RUN
#define InterlockedIncrement16
NTSTATUS NTAPI MiQueryMemorySectionName(IN HANDLE ProcessHandle, IN PVOID BaseAddress, OUT PVOID MemoryInformation, IN SIZE_T MemoryInformationLength, OUT PSIZE_T ReturnLength)
HARDWARE_PTE_ARMV6 TempPte
#define MM_PROTECT_ACCESS
C_ASSERT(sizeof(POOL_HEADER)==POOL_BLOCK_SIZE)
PFN_NUMBER MiHighNonPagedPoolThreshold
#define KeEnterGuardedRegion()
ULONG SessionPoolAllocationFailures[4]
PMMADDRESS_NODE NTAPI MiGetNextNode(IN PMMADDRESS_NODE Node)
FORCEINLINE VOID MiLockProcessWorkingSetShared(IN PEPROCESS Process, IN PETHREAD Thread)
ULONG_PTR MxPfnAllocation
FORCEINLINE BOOLEAN MiIsUserPte(PVOID Address)
VOID NTAPI MiDecrementReferenceCount(IN PMMPFN Pfn1, IN PFN_NUMBER PageFrameIndex)
FORCEINLINE USHORT MiIncrementPageTableReferences(IN PVOID Address)
FORCEINLINE PMMPFN MI_PFN_ELEMENT(IN PFN_NUMBER Pfn)
PKGUARDED_MUTEX SystemSpaceViewLockPointer
PFN_NUMBER MmLowMemoryThreshold
KGUARDED_MUTEX PagedPoolMutex
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
PCONTROL_AREA ControlArea
PFN_NUMBER MmMaximumNonPagedPoolInPages
PMMPTE MiSessionImagePteStart
FORCEINLINE VOID MiDropLockCount(IN PMMPFN Pfn1)
ULONG NTAPI MiMakeProtectionMask(IN ULONG Protect)
SLIST_HEADER MmDeadStackSListHead
ULONG MmMinAdditionNonPagedPoolPerMb
FORCEINLINE VOID MiUnlockWorkingSetShared(_In_ PETHREAD Thread, _In_ PMMSUPPORT WorkingSet)
VOID NTAPI MiComputeColorInformation(VOID)
const ULONG MmProtectToValue[32]
struct _PHYSICAL_MEMORY_RUN * PPHYSICAL_MEMORY_RUN
ULONG OwnsSystemWorkingSetExclusive
FORCEINLINE VOID MiDeletePde(_In_ PMMPDE PointerPde, _In_ PEPROCESS CurrentProcess)
LIST_HEAD(acpi_bus_event_list)
struct _MI_LARGE_PAGE_RANGES * PMI_LARGE_PAGE_RANGES
BOOLEAN MmProtectFreedNonPagedPool
VOID NTAPI ExInitializePoolDescriptor(IN PPOOL_DESCRIPTOR PoolDescriptor, IN POOL_TYPE PoolType, IN ULONG PoolIndex, IN ULONG Threshold, IN PVOID PoolLock)
MM_SYSTEMSIZE MmSystemSize
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID _In_ ULONG_PTR _In_ SIZE_T _Inout_opt_ PLARGE_INTEGER _Inout_ PSIZE_T _In_ SECTION_INHERIT _In_ ULONG AllocationType
FORCEINLINE PMMPFN MiGetPfnEntry(IN PFN_NUMBER Pfn)
LIST_ENTRY MmWorkingSetExpansionHead
VOID NTAPI MiRemoveNode(IN PMMADDRESS_NODE Node, IN PMM_AVL_TABLE Table)
enum _MI_PFN_CACHE_ATTRIBUTE * PMI_PFN_CACHE_ATTRIBUTE
ULONG MmNumberOfSystemPtes
PFN_NUMBER MiLowPagedPoolThreshold
NTSTATUS NTAPI MiSessionCommitPageTables(IN PVOID StartVa, IN PVOID EndVa)
#define MM_EXECUTE_READWRITE
PFN_COUNT NTAPI MiDeleteSystemPageableVm(IN PMMPTE PointerPte, IN PFN_NUMBER PageCount, IN ULONG Flags, OUT PPFN_NUMBER ValidPages)
FORCEINLINE VOID MI_MAKE_HARDWARE_PTE_USER(IN PMMPTE NewPte, IN PMMPTE MappingPte, IN ULONG_PTR ProtectionMask, IN PFN_NUMBER PageFrameNumber)
PVOID NTAPI MiCheckForContiguousMemory(IN PVOID BaseAddress, IN PFN_NUMBER BaseAddressPages, IN PFN_NUMBER SizeInPages, IN PFN_NUMBER LowestPfn, IN PFN_NUMBER HighestPfn, IN PFN_NUMBER BoundaryPfn, IN MI_PFN_CACHE_ATTRIBUTE CacheAttribute)
_In_ ULONG _In_ ULONG Offset
VOID NTAPI MiDeleteVirtualAddresses(IN ULONG_PTR Va, IN ULONG_PTR EndingAddress, IN PMMVAD Vad)
PFN_NUMBER NTAPI MiRemoveAnyPage(IN ULONG Color)
FORCEINLINE VOID ExAcquirePushLockShared(PEX_PUSH_LOCK PushLock)
FORCEINLINE VOID MiLockProcessWorkingSetForFault(IN PEPROCESS Process, IN PETHREAD Thread, IN BOOLEAN Safe, IN BOOLEAN Shared)
FORCEINLINE VOID MI_WRITE_INVALID_PTE(IN PMMPTE PointerPte, IN MMPTE InvalidPte)
WCHAR MmLargePageDriverBuffer[512]
PSUBSECTION NTAPI MiLocateSubsection(IN PMMVAD Vad, IN ULONG_PTR Vpn)
FORCEINLINE VOID MiLockWorkingSetShared(_In_ PETHREAD Thread, _In_ PMMSUPPORT WorkingSet)
struct _MMSESSION MMSESSION
PRTL_BITMAP SystemSpaceBitMap
SIZE_T MmDefaultMaximumNonPagedPool
ULONG MmVerifyDriverBufferType
FORCEINLINE PMMPDE MiPdeToPpe(PMMPDE PointerPde)
_Must_inspect_result_ _In_ PHYSICAL_ADDRESS HighAddress
SIZE_T MmAllocationFragment
PFN_NUMBER NTAPI MxGetNextPage(IN PFN_NUMBER PageCount)
PMMPTE MiFirstReservedZeroingPte
BOOLEAN MiLargePageAllDrivers
FORCEINLINE PMMPXE MiPdeToPxe(PMMPDE PointerPde)
ULONG NTAPI MiGetPageProtection(IN PMMPTE PointerPte)
NTSTATUS NTAPI MiInitializeSessionPool(VOID)
_Out_ PKAPC_STATE ApcState
VOID NTAPI MiZeroPhysicalPage(IN PFN_NUMBER PageFrameIndex)
LONG ResidentProcessCount
VOID NTAPI MiInitializeNonPagedPoolThresholds(VOID)
PFN_NUMBER MmSystemPageDirectory[PPE_PER_PAGE]
FORCEINLINE BOOLEAN ExConvertPushLockSharedToExclusive(IN PEX_PUSH_LOCK PushLock)
MI_PFN_CACHE_ATTRIBUTE MiPlatformCacheAttributes[2][MmMaximumCacheType]
ULONG OwnsProcessWorkingSetShared
VOID NTAPI InitializePool(IN POOL_TYPE PoolType, IN ULONG Threshold)
BOOLEAN NTAPI MiInitializeMemoryEvents(VOID)
VOID NTAPI MiInitializeDriverLargePageList(VOID)
PPOOL_DESCRIPTOR ExpPagedPoolDescriptor[16+1]
VOID NTAPI MiMapPfnDatabase(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
FORCEINLINE VOID MiReleaseExpansionLock(KIRQL OldIrql)
#define KeReleaseSpinLock(sl, irql)
#define InterlockedCompareExchange16
FORCEINLINE BOOLEAN MM_ANY_WS_LOCK_HELD_EXCLUSIVE(_In_ PETHREAD Thread)
PKEVENT MiLowPagedPoolEvent
VOID NTAPI MiInitializePoolEvents(VOID)
#define POOL_LISTS_PER_PAGE
SIZE_T MmSizeOfNonPagedPoolInBytes
_Must_inspect_result_ _Outptr_result_bytebuffer_ ViewSize PVOID * MappedBase
WCHAR MmVerifyDriverBuffer[512]
POOL_DESCRIPTOR NonPagedPoolDescriptor
struct _MM_SESSION_SPACE * PMM_SESSION_SPACE
FORCEINLINE BOOLEAN MiIsMemoryTypeFree(TYPE_OF_MEMORY MemoryType)
NTSTATUS NTAPI MiRosProtectVirtualMemory(IN PEPROCESS Process, IN OUT PVOID *BaseAddress, IN OUT PSIZE_T NumberOfBytesToProtect, IN ULONG NewAccessProtection, OUT PULONG OldAccessProtection OPTIONAL)
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ PLARGE_INTEGER _In_ ULONG _In_ PFILE_OBJECT _In_ PVOID Process
void * _ReturnAddress(void)
VOID NTAPI MiSessionAddProcess(IN PEPROCESS NewProcess)
FORCEINLINE PFN_NUMBER MiGetPfnEntryIndex(IN PMMPFN Pfn1)
MMSUPPORT MmSystemCacheWs
FORCEINLINE BOOLEAN MiConvertSharedWorkingSetLockToExclusive(_In_ PETHREAD Thread, _In_ PMMSUPPORT Vm)
FORCEINLINE VOID ExReleasePushLockShared(PEX_PUSH_LOCK PushLock)
VOID NTAPI MiInitializePfnAndMakePteValid(IN PFN_NUMBER PageFrameIndex, IN PMMPTE PointerPte, IN MMPTE TempPte)
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID _In_ ULONG_PTR _In_ SIZE_T _Inout_opt_ PLARGE_INTEGER _Inout_ PSIZE_T ViewSize
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
ULONG MmMaximumDeadKernelStacks
PKEVENT MiHighPagedPoolEvent
PMMWSL MmSystemCacheWorkingSetList
VOID NTAPI MiInitializeColorTables(VOID)
LIST_ENTRY MiLargePageDriverList
PMMADDRESS_NODE NTAPI MiGetPreviousNode(IN PMMADDRESS_NODE Node)
struct _POOL_TRACKER_BIG_PAGES * PPOOL_TRACKER_BIG_PAGES
VOID NTAPI MiRemoveMappedView(IN PEPROCESS CurrentProcess, IN PMMVAD Vad)
BOOLEAN NTAPI MiIsPfnInUse(IN PMMPFN Pfn1)
PFN_NUMBER MiLowNonPagedPoolThreshold
KGUARDED_MUTEX MmPagedPoolMutex
VOID NTAPI MiInsertVad(_Inout_ PMMVAD Vad, _Inout_ PMM_AVL_TABLE VadRoot)
#define InterlockedDecrementSizeT(a)
ULONG OwnsProcessWorkingSetExclusive
VOID NTAPI MiInsertNode(IN PMM_AVL_TABLE Table, IN PMMADDRESS_NODE NewNode, PMMADDRESS_NODE Parent, TABLE_SEARCH_RESULT Result)
ULONG MmCritsectTimeoutSeconds
struct _POOL_HEADER POOL_HEADER
FORCEINLINE VOID MiReferenceProbedPageAndBumpLockCount(IN PMMPFN Pfn1)
struct _PHYSICAL_MEMORY_DESCRIPTOR PHYSICAL_MEMORY_DESCRIPTOR
PFN_NUMBER MmSizeOfPagedPoolInPages
FORCEINLINE VOID MI_MAKE_HARDWARE_PTE_KERNEL(IN PMMPTE NewPte, IN PMMPTE MappingPte, IN ULONG_PTR ProtectionMask, IN PFN_NUMBER PageFrameNumber)
FORCEINLINE VOID MiLockWorkingSet(IN PETHREAD Thread, IN PMMSUPPORT WorkingSet)
NTSTATUS NTAPI MmArmAccessFault(IN ULONG FaultCode, IN PVOID Address, IN KPROCESSOR_MODE Mode, IN PVOID TrapInformation)
MMPTE ValidKernelPteLocal
#define KeGetCurrentThread
struct _POOL_TRACKER_TABLE * PPOOL_TRACKER_TABLE
FORCEINLINE PVOID MiPteToAddress(PMMPTE PointerPte)
ULONG SystemSpaceHashSize
_In_ HANDLE ProcessHandle
enum _MEMORY_CACHING_TYPE MEMORY_CACHING_TYPE
KGUARDED_MUTEX MmSectionCommitMutex
FORCEINLINE BOOLEAN MI_IS_PHYSICAL_ADDRESS(IN PVOID Address)
FORCEINLINE VOID MI_UPDATE_VALID_PTE(IN PMMPTE PointerPte, IN MMPTE TempPte)
FORCEINLINE BOOLEAN MI_WS_OWNER(IN PEPROCESS Process)
NTSTATUS NTAPI MiRosUnmapViewOfSection(IN PEPROCESS Process, IN PVOID BaseAddress, IN BOOLEAN SkipDebuggerNotify)
PKEVENT MiHighMemoryEvent
PFN_NUMBER MmTotalSystemDriverPages
VOID NTAPI MiUnlinkFreeOrZeroedPage(IN PMMPFN Entry)
BOOLEAN MmEnforceWriteProtection
PMDL NTAPI MiAllocatePagesForMdl(IN PHYSICAL_ADDRESS LowAddress, IN PHYSICAL_ADDRESS HighAddress, IN PHYSICAL_ADDRESS SkipBytes, IN SIZE_T TotalBytes, IN MI_PFN_CACHE_ATTRIBUTE CacheAttribute, IN ULONG Flags)
base of all file and directory entries
BOOLEAN MmTrackLockedPages
FORCEINLINE VOID MI_MAKE_HARDWARE_PTE(IN PMMPTE NewPte, IN PMMPTE MappingPte, IN ULONG_PTR ProtectionMask, IN PFN_NUMBER PageFrameNumber)
_Must_inspect_result_ _In_ PHYSICAL_ADDRESS _In_ PHYSICAL_ADDRESS _In_ SIZE_T TotalBytes
FORCEINLINE VOID MiUnlockProcessWorkingSet(IN PEPROCESS Process, IN PETHREAD Thread)
FORCEINLINE PMMPTE MI_GET_PROTOTYPE_PTE_FOR_VPN(IN PMMVAD Vad, IN ULONG_PTR Vpn)
PFN_NUMBER SessionPageDirectoryIndex
struct _POOL_DESCRIPTOR POOL_DESCRIPTOR
PULONG MinorVersion OPTIONAL
PVOID MmNonPagedSystemStart
PMMPTE MiSessionImagePteEnd