23#define IS_PAGE_ALIGNED(addr) IS_ALIGNED(addr, PAGE_SIZE)
203 MMPTE TmplPte, *PointerPxe;
224 PointerPxe->
u.
Long = 0;
249 *PointerPxe = TmplPte;
382 SIZE_T NonPagedSystemSize;
433 Pfn->
u3.
e2.ReferenceCount = 1;
454#if (_MI_PAGING_LEVELS >= 3)
458#if (_MI_PAGING_LEVELS == 4)
464#if (_MI_PAGING_LEVELS == 4)
466#elif (_MI_PAGING_LEVELS == 3)
477 Pfn->
u3.
e2.ReferenceCount = 1;
480#if (_MI_PAGING_LEVELS == 4)
495#if (_MI_PAGING_LEVELS >= 3)
536#if (_MI_PAGING_LEVELS >= 3)
539#if (_MI_PAGING_LEVELS == 4)
586 Pfn->
u3.
e2.ReferenceCount = 0;
628#if (_MI_PAGING_LEVELS >= 3)
637 for (ListEntry = LoaderBlock->MemoryDescriptorListHead.
Flink;
638 ListEntry != &LoaderBlock->MemoryDescriptorListHead;
639 ListEntry = ListEntry->
Flink)
730 Pfn->
u3.
e2.ReferenceCount = 0;
734 Pfn->
u3.
e2.ReferenceCount = 0;
738 Pfn->
u3.
e2.ReferenceCount = 0;
742 Pfn->
u3.
e2.ReferenceCount = 0;
746 Pfn->
u3.
e2.ReferenceCount = 0;
756 DPRINT1(
"MmInitializeProcessAddressSpace(9 failed: 0x%lx\n",
Status);
#define NT_SUCCESS(StatCode)
VOID NTAPI InitializePool(IN POOL_TYPE PoolType, IN ULONG Threshold)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
PMMPTE MmLastReservedMappingPte
PMMPTE MiFirstReservedZeroingPte
PMMPTE MmFirstReservedMappingPte
__INTRIN_INLINE unsigned long __readcr3(void)
__INTRIN_INLINE unsigned long __readcr4(void)
__INTRIN_INLINE void __writecr4(unsigned int Data)
#define Add2Ptr(PTR, INC)
PFN_NUMBER MmHighestPhysicalPage
VOID NTAPI MiInitializeSystemPtes(IN PMMPTE StartingPte, IN ULONG NumberOfPtes, IN MMSYSTEM_PTE_POOL_TYPE PoolType)
SIZE_T MmMinimumNonPagedPoolSize
FORCEINLINE BOOLEAN MiIsMemoryTypeInvisible(TYPE_OF_MEMORY MemoryType)
struct _MM_SESSION_SPACE * PMM_SESSION_SPACE
PMM_SESSION_SPACE MmSessionSpace
VOID NTAPI MiInitializeColorTables(VOID)
PFN_NUMBER NTAPI MxGetNextPage(IN PFN_NUMBER PageCount)
PMMPTE MiSessionImagePteEnd
VOID NTAPI MiInsertPageInFreeList(IN PFN_NUMBER PageFrameIndex)
#define MM_EXECUTE_READWRITE
PFN_NUMBER MmMaximumNonPagedPoolInPages
VOID NTAPI MiInitializeNonPagedPoolThresholds(VOID)
PMMPTE MiSessionImagePteStart
ULONG MmMaxAdditionNonPagedPoolPerMb
PMMPTE NTAPI MiReserveSystemPtes(IN ULONG NumberOfPtes, IN MMSYSTEM_PTE_POOL_TYPE SystemPtePoolType)
ULONG MmMinAdditionNonPagedPoolPerMb
FORCEINLINE BOOLEAN MiIsMemoryTypeFree(TYPE_OF_MEMORY MemoryType)
#define MI_PTE_LOOKUP_NEEDED
FORCEINLINE VOID MI_WRITE_VALID_PTE(IN PMMPTE PointerPte, IN MMPTE TempPte)
SIZE_T MmDefaultMaximumNonPagedPool
BOOLEAN NTAPI MmIsAddressValid(IN PVOID VirtualAddress)
#define MiAddressToPte(x)
#define MiAddressToPde(x)
#define MI_SESSION_WORKING_SET_SIZE
#define MI_MAPPING_RANGE_START
FORCEINLINE PVOID MiPpeToAddress(PMMPTE PointerPpe)
#define MI_HYPERSPACE_PTES
#define MI_MAPPING_RANGE_END
#define MM_PTE_SOFTWARE_PROTECTION_BITS
#define MI_NUMBER_SYSTEM_PTES
#define MI_WORKING_SET_LIST
#define MI_SESSION_VIEW_SIZE
#define MM_SYSTEM_SPACE_START
#define MI_MIN_PAGES_FOR_NONPAGED_POOL_TUNING
#define MI_MAX_INIT_NONPAGED_POOL_SIZE
FORCEINLINE PMMPTE MiAddressToPpe(PVOID Address)
#define MI_SESSION_SPACE_END
FORCEINLINE PMMPTE MiAddressToPxe(PVOID Address)
#define MI_HIGHEST_SYSTEM_ADDRESS
#define MI_SESSION_IMAGE_SIZE
#define MI_SYSTEM_VIEW_SIZE
#define MI_SESSION_POOL_SIZE
#define MI_MAX_NONPAGED_POOL_SIZE
FORCEINLINE PVOID MiPxeToAddress(PMMPTE PointerPxe)
#define MiPdeToAddress(_Pde)
#define MiPteToAddress(_Pte)
VOID NTAPI KeFlushCurrentTb(VOID)
FORCEINLINE PMMPFN MiGetPfnEntry(IN PFN_NUMBER Pfn)
NTSTATUS NTAPI MmInitializeProcessAddressSpace(IN PEPROCESS Process, IN PEPROCESS Clone OPTIONAL, IN PVOID Section OPTIONAL, IN OUT PULONG Flags, IN POBJECT_NAME_INFORMATION *AuditName OPTIONAL)
PFN_COUNT MmNumberOfPhysicalPages
VOID NTAPI MiInitializeNonPagedPool(VOID)
VOID NTAPI MmInitializeBalancer(ULONG NrAvailablePages, ULONG NrSystemPages)
PFN_NUMBER MmAvailablePages
ULONG MmMaximumNonPagedPoolPercent
PVOID MmNonPagedSystemStart
PMEMORY_ALLOCATION_DESCRIPTOR MxFreeDescriptor
ULONG MmMaximumNonPagedPoolInBytes
ULONG MmSizeOfNonPagedPoolInBytes
PVOID MiSessionImageStart
ULONG MmNumberOfSystemPtes
PVOID MmNonPagedPoolExpansionStart
MEMORY_ALLOCATION_DESCRIPTOR MxOldFreeDescriptor
PVOID MmNonPagedPoolStart
VOID NTAPI MiMapPTEs(PVOID StartAddress, PVOID EndAddress)
VOID NTAPI MiBuildSystemPteSpace(VOID)
VOID NTAPI MiInitializePageTable(VOID)
PVOID MiSystemPteSpaceStart
MMPTE ValidKernelPteLocal
BOOLEAN MiPfnsInitialized
VOID NTAPI MiBuildPfnDatabase(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
PFN_NUMBER MxFreePageBase
VOID NTAPI MiMapPDEs(PVOID StartAddress, PVOID EndAddress)
MMPTE ValidKernelPdeLocal
VOID NTAPI MiInitializeSessionSpaceLayout(VOID)
BOOLEAN MiIncludeType[LoaderMaximum]
VOID NTAPI MiMapPPEs(PVOID StartAddress, PVOID EndAddress)
static VOID MiAddDescriptorToDatabase(PFN_NUMBER BasePage, PFN_NUMBER PageCount, TYPE_OF_MEMORY MemoryType)
PVOID MiSystemPteSpaceEnd
#define IS_PAGE_ALIGNED(addr)
VOID NTAPI MiBuildNonPagedPool(VOID)
static VOID MiBuildPfnDatabaseFromPageTables(VOID)
NTSTATUS NTAPI MiInitMachineDependent(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
static VOID MiSetupPfnForPageTable(PFN_NUMBER PageFrameIndex, PMMPTE PointerPte)
PVOID MmHighestUserAddress
enum _TYPE_OF_MEMORY TYPE_OF_MEMORY
struct _LIST_ENTRY * Flink
struct _MMPFN::@1799::@1805 e2
#define RtlZeroMemory(Destination, Length)
#define CONTAINING_RECORD(address, type, field)
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
_Must_inspect_result_ _In_ ULONG Flags
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
#define PsGetCurrentProcess