|
Classes |
struct | _MMCOLOR_TABLES |
struct | _MMPRIMARY_COLOR_TABLES |
struct | _MMPTE_SOFTWARE |
struct | _MMPTE_TRANSITION |
struct | _MMPTE_PROTOTYPE |
struct | _MMPTE_SUBSECTION |
struct | _MMPTE_LIST |
struct | _MMPTE_HARDWARE |
struct | _MMPTE |
Defines |
#define | MM_EMPTY_LIST ((ULONG)0xFFFFFFFF) |
#define | MM_EMPTY_PTE_LIST ((ULONG)0xFFFFF) |
#define | MI_PTE_BASE_FOR_LOWEST_KERNEL_ADDRESS (MiGetPteAddress (0x80000000)) |
#define | MM_SESSION_SPACE_DEFAULT (0xA0000000) |
#define | MM_BOOT_IMAGE_SIZE (16 * 1024 * 1024) |
#define | KSTACK_POOL_START (0xA4000000) |
#define | KSTACK_POOL_END (0xBFFFFFFF) |
#define | KSTACK_POOL_SIZE |
#define | MM_VIRTUAL_PAGE_FILLER 0 |
#define | MM_VIRTUAL_PAGE_SIZE 20 |
#define | MM_KSEG0_BASE ((ULONG)0x80000000) |
#define | MM_KSEG2_BASE ((ULONG)0xA0000000) |
#define | MM_PAGES_IN_KSEG0 ((MM_KSEG2_BASE - MM_KSEG0_BASE) >> PAGE_SHIFT) |
#define | CODE_START MM_KSEG0_BASE |
#define | CODE_END MM_KSEG2_BASE |
#define | MM_SYSTEM_SPACE_START (0xC0800000) |
#define | MM_SYSTEM_SPACE_END (0xFFFFFFFF) |
#define | PTE_TOP 0xC03FFFFF |
#define | PDE_TOP 0xC03FFFFF |
#define | HYPER_SPACE ((PVOID)0xC0400000) |
#define | HYPER_SPACE_END (0xC07fffff) |
#define | MM_SYSTEM_VIEW_START (0xA0000000) |
#define | MM_SYSTEM_VIEW_SIZE (48*1024*1024) |
#define | MM_SYSTEM_VIEW_START_IF_HYDRA (0xA3000000) |
#define | MM_SYSTEM_VIEW_SIZE_IF_HYDRA (16*1024*1024) |
#define | MM_LOWEST_4MB_START ((32*1024*1024)/PAGE_SIZE) |
#define | MM_DEFAULT_4MB_START (((1024*1024)/PAGE_SIZE)*4096) |
#define | MM_HIGHEST_4MB_START (((1024*1024)/PAGE_SIZE)*4096) |
#define | MM_USER_ADDRESS_RANGE_LIMIT 0xFFFFFFFF |
#define | MM_MAXIMUM_ZERO_BITS 21 |
#define | MM_SYSTEM_CACHE_WORKING_SET (0xC0C00000) |
#define | MM_SYSTEM_CACHE_START (0xC1000000) |
#define | MM_SYSTEM_CACHE_END (0xE1000000) |
#define | MM_SYSTEM_CACHE_START_EXTRA (0xA4000000) |
#define | MM_SYSTEM_CACHE_END_EXTRA (0xC0000000) |
#define | MM_PAGED_POOL_START ((PVOID)(0xE1000000)) |
#define | MM_LOWEST_NONPAGED_SYSTEM_START ((PVOID)(0xEB000000)) |
#define | MmProtopte_Base ((ULONG)0xE1000000) |
#define | MM_NONPAGED_POOL_END ((PVOID)(0xFFBE0000)) |
#define | MM_CRASH_DUMP_VA ((PVOID)(0xFFBE0000)) |
#define | MM_DEBUG_VA ((PVOID)0xFFBFF000) |
#define | NON_PAGED_SYSTEM_END ((ULONG)0xFFFFFFF0) |
#define | MM_MINIMUM_SYSTEM_PTES 7000 |
#define | MM_MAXIMUM_SYSTEM_PTES 50000 |
#define | MM_DEFAULT_SYSTEM_PTES 11000 |
#define | MM_MAX_INITIAL_NONPAGED_POOL ((ULONG)(128*1024*1024)) |
#define | MM_MAX_ADDITIONAL_NONPAGED_POOL ((ULONG)(128*1024*1024)) |
#define | MM_MAX_PAGED_POOL ((ULONG)MM_NONPAGED_POOL_END - (ULONG)MM_PAGED_POOL_START) |
#define | MM_MAX_TOTAL_POOL (((ULONG)MM_NONPAGED_POOL_END) - ((ULONG)(MM_PAGED_POOL_START))) |
#define | MM_PROTO_PTE_ALIGNMENT ((ULONG)PAGE_SIZE) |
#define | PAGE_DIRECTORY_MASK ((ULONG)0x003FFFFF) |
#define | MM_VA_MAPPED_BY_PDE (0x400000) |
#define | LOWEST_IO_ADDRESS 0xa0000 |
#define | PTE_SHIFT 2 |
#define | PHYSICAL_ADDRESS_BITS 32 |
#define | MM_MAXIMUM_NUMBER_OF_COLORS (1) |
#define | MM_NUMBER_OF_COLORS (1) |
#define | MM_COLOR_MASK (0) |
#define | MM_COLOR_ALIGNMENT (0) |
#define | MM_COLOR_MASK_VIRTUAL (0) |
#define | MM_SECONDARY_COLORS_DEFAULT (64) |
#define | MM_SECONDARY_COLORS_MIN (2) |
#define | MM_SECONDARY_COLORS_MAX (1024) |
#define | MAX_PAGE_FILES 16 |
#define | FIRST_MAPPING_PTE ((ULONG)0xC0400000) |
#define | NUMBER_OF_MAPPING_PTES 255 |
#define | LAST_MAPPING_PTE ((ULONG)((ULONG)FIRST_MAPPING_PTE + (NUMBER_OF_MAPPING_PTES * PAGE_SIZE))) |
#define | IMAGE_MAPPING_PTE ((PMMPTE)((ULONG)LAST_MAPPING_PTE + PAGE_SIZE)) |
#define | ZEROING_PAGE_PTE ((PMMPTE)((ULONG)IMAGE_MAPPING_PTE + PAGE_SIZE)) |
#define | WORKING_SET_LIST ((PVOID)((ULONG)ZEROING_PAGE_PTE + PAGE_SIZE)) |
#define | MM_MAXIMUM_WORKING_SET MiMaximumWorkingSet |
#define | MM_WORKING_SET_END ((ULONG)0xC07FF000) |
#define | MM_PTE_VALID_MASK 0x1 |
#define | MM_PTE_WRITE_MASK 0x800 |
#define | MM_PTE_OWNER_MASK 0x4 |
#define | MM_PTE_WRITE_THROUGH_MASK 0x8 |
#define | MM_PTE_CACHE_DISABLE_MASK 0x10 |
#define | MM_PTE_ACCESS_MASK 0x20 |
#define | MM_PTE_DIRTY_MASK 0x42 |
#define | MM_PTE_LARGE_PAGE_MASK 0x80 |
#define | MM_PTE_GLOBAL_MASK 0x100 |
#define | MM_PTE_COPY_ON_WRITE_MASK 0x200 |
#define | MM_PTE_PROTOTYPE_MASK 0x400 |
#define | MM_PTE_TRANSITION_MASK 0x800 |
#define | MM_PTE_NOACCESS 0x0 |
#define | MM_PTE_READONLY 0x0 |
#define | MM_PTE_READWRITE MM_PTE_WRITE_MASK |
#define | MM_PTE_WRITECOPY 0x200 |
#define | MM_PTE_EXECUTE 0x0 |
#define | MM_PTE_EXECUTE_READ 0x0 |
#define | MM_PTE_EXECUTE_READWRITE MM_PTE_WRITE_MASK |
#define | MM_PTE_EXECUTE_WRITECOPY 0x200 |
#define | MM_PTE_NOCACHE 0x010 |
#define | MM_PTE_GUARD 0x0 |
#define | MM_PTE_CACHE 0x0 |
#define | MM_PROTECT_FIELD_SHIFT 5 |
#define | MI_MAXIMUM_PTE_WORKING_SET_INDEX 0 |
#define | MM_ZERO_PTE 0 |
#define | MM_ZERO_KERNEL_PTE 0 |
#define | MM_DEMAND_ZERO_WRITE_PTE (MM_READWRITE << MM_PROTECT_FIELD_SHIFT) |
#define | MM_KERNEL_DEMAND_ZERO_PTE (MM_READWRITE << MM_PROTECT_FIELD_SHIFT) |
#define | MM_KERNEL_NOACCESS_PTE (MM_NOACCESS << MM_PROTECT_FIELD_SHIFT) |
#define | MM_STACK_ALIGNMENT 0x0 |
#define | MM_STACK_OFFSET 0x0 |
#define | PDE_PER_PAGE ((ULONG)1024) |
#define | PTE_PER_PAGE ((ULONG)1024) |
#define | MM_USER_PAGE_TABLE_PAGES (768) |
#define | MI_MAKE_VALID_PTE(OUTPTE, FRAME, PMASK, PPTE) |
#define | MI_MAKE_VALID_PTE_TRANSITION(OUTPTE, PROTECT) |
#define | MI_MAKE_TRANSITION_PTE(OUTPTE, PAGE, PROTECT, PPTE) |
#define | MI_MAKE_TRANSITION_PTE_VALID(OUTPTE, PPTE) |
#define | MI_SET_PTE_IN_WORKING_SET(PTE, WSINDEX) |
#define | MI_GET_WORKING_SET_FROM_PTE(PTE) 0 |
#define | MI_SET_PTE_WRITE_COMBINE(PTE) |
#define | MI_SET_PTE_DIRTY(PTE) (PTE).u.Long |= HARDWARE_PTE_DIRTY_MASK |
#define | MI_SET_PTE_CLEAN(PTE) (PTE).u.Long &= ~HARDWARE_PTE_DIRTY_MASK |
#define | MI_IS_PTE_DIRTY(PTE) ((PTE).u.Hard.Dirty != 0) |
#define | MI_SET_GLOBAL_BIT_IF_SYSTEM(OUTPTE, PPTE) |
#define | MI_SET_GLOBAL_STATE(PTE, STATE) |
#define | MI_ENABLE_CACHING(PTE) |
#define | MI_DISABLE_CACHING(PTE) |
#define | MI_IS_CACHING_DISABLED(PPTE) ((PPTE)->u.Hard.CacheDisable == 1) |
#define | MI_SET_PFN_DELETED(PPFN) |
#define | MI_IS_PFN_DELETED(PPFN) ((PPFN)->PteAddress == (PMMPTE)(ULONG_PTR)0xFFFFFFFF) |
#define | MI_CHECK_PAGE_ALIGNMENT(PAGE, PPTE) |
#define | MI_INITIALIZE_HYPERSPACE_MAP(INDEX) |
#define | MI_GET_PAGE_COLOR_FROM_PTE(PTEADDRESS) ((ULONG)((MmSystemPageColor++) & MmSecondaryColorMask)) |
#define | MI_GET_PAGE_COLOR_FROM_VA(ADDRESS) ((ULONG)((MmSystemPageColor++) & MmSecondaryColorMask)) |
#define | MI_GET_PAGE_COLOR_FROM_SESSION(_SessionSpace) ((ULONG)((_SessionSpace->Color++) & MmSecondaryColorMask)) |
#define | MI_PAGE_COLOR_PTE_PROCESS(PTE, COLOR) ((ULONG)((*(COLOR))++) & MmSecondaryColorMask) |
#define | MI_PAGE_COLOR_VA_PROCESS(ADDRESS, COLOR) ((ULONG)((*(COLOR))++) & MmSecondaryColorMask) |
#define | MI_GET_NEXT_COLOR(COLOR) ((COLOR + 1) & MM_COLOR_MASK) |
#define | MI_GET_PREVIOUS_COLOR(COLOR) (0) |
#define | MI_GET_SECONDARY_COLOR(PAGE, PFN) (PAGE & MmSecondaryColorMask) |
#define | MI_GET_COLOR_FROM_SECONDARY(SECONDARY_COLOR) (0) |
#define | MI_GET_MODIFIED_PAGE_BY_COLOR(PAGE, COLOR) PAGE = MmModifiedPageListByColor[COLOR].Flink |
#define | MI_GET_MODIFIED_PAGE_ANY_COLOR(PAGE, COLOR) |
#define | MI_MAKE_VALID_PTE_WRITE_COPY(PPTE) |
#define | MI_DETERMINE_OWNER(PPTE) |
#define | MI_SET_ACCESSED_IN_PTE(PPTE, ACCESSED) |
#define | MI_GET_ACCESSED_IN_PTE(PPTE) 0 |
#define | MI_SET_OWNER_IN_PTE(PPTE, OWNER) ((PPTE)->u.Hard.Owner = OWNER) |
#define | MI_GET_OWNER_IN_PTE(PPTE) ((PPTE)->u.Hard.Owner) |
#define | CLEAR_FOR_PROTO_PTE_ADDRESS ((ULONG)0x701) |
#define | CLEAR_FOR_PAGE_FILE 0x000003E0 |
#define | MI_SET_PAGING_FILE_INFO(OUTPTE, PPTE, FILEINFO, OFFSET) |
#define | MiPteToProto(lpte) |
#define | MiProtoAddressForPte(proto_va) |
#define | MiProtoAddressForKernelPte(proto_va) MiProtoAddressForPte(proto_va) |
#define | MM_SUBSECTION_MAP (128*1024*1024) |
#define | MiGetSubsectionAddress(lpte) |
#define | MiGetSubsectionAddressForPte(VA) |
#define | MiGetPpeAddress(va) ((PMMPTE)0) |
#define | MiGetPdeAddress(va) ((PMMPTE)(((((ULONG)(va)) >> 22) << 2) + PDE_BASE)) |
#define | MiGetPteAddress(va) ((PMMPTE)(((((ULONG)(va)) >> 12) << 2) + PTE_BASE)) |
#define | MiGetPpeOffset(va) (0) |
#define | MiGetPdeOffset(va) (((ULONG)(va)) >> 22) |
#define | MiGetPpePdeOffset MiGetPdeOffset |
#define | MiGetPteOffset(va) ((((ULONG)(va)) << 10) >> 22) |
#define | MiGetVirtualAddressMappedByPpe(PPE) (NULL) |
#define | MiGetVirtualAddressMappedByPde(PDE) ((PVOID)((ULONG)(PDE) << 20)) |
#define | MiGetVirtualAddressMappedByPte(PTE) ((PVOID)((ULONG)(PTE) << 10)) |
#define | MiIsVirtualAddressOnPpeBoundary(VA) (FALSE) |
#define | MiIsVirtualAddressOnPdeBoundary(VA) (((ULONG_PTR)(VA) & PAGE_DIRECTORY_MASK) == 0) |
#define | MiIsPteOnPpeBoundary(PTE) (FALSE) |
#define | MiIsPteOnPdeBoundary(PTE) (((ULONG_PTR)(PTE) & (PAGE_SIZE - 1)) == 0) |
#define | MiDoesPpeExistAndMakeValid(PPE, TARGETPROCESS, PFNMUTEXHELD, WAITED) (1) |
#define | GET_PAGING_FILE_NUMBER(PTE) ((((PTE).u.Long) >> 1) & 0x0000000F) |
#define | GET_PAGING_FILE_OFFSET(PTE) ((((PTE).u.Long) >> 12) & 0x000FFFFF) |
#define | IS_PTE_NOT_DEMAND_ZERO(PTE) ((PTE).u.Long & (ULONG)0xFFFFFC01) |
#define | MI_MAKING_VALID_PTE_INVALID(SYSTEM_WIDE) |
#define | MI_MAKING_MULTIPLE_PTES_INVALID(SYSTEM_WIDE) |
#define | MI_MAKE_PROTECT_WRITE_COPY(PTE) |
#define | MI_SET_PAGE_DIRTY(PPTE, VA, PFNHELD) |
#define | MI_NO_FAULT_FOUND(TEMP, PPTE, VA, PFNHELD) |
#define | MI_CAPTURE_DIRTY_BIT_TO_PFN(PPTE, PPFN) |
#define | MI_IS_PHYSICAL_ADDRESS(Va) (((ULONG)Va >= MM_KSEG0_BASE) && ((ULONG)Va < MM_KSEG2_BASE) && (MmKseg2Frame)) |
#define | MI_CONVERT_PHYSICAL_TO_PFN(Va) (((ULONG)Va << 3) >> 15) |
#define | MI_PTE_LOOKUP_NEEDED (0xfffff) |
#define | HARDWARE_PTE_DIRTY_MASK 0x42 |
#define | MI_GET_PAGE_FRAME_FROM_PTE(PTE) ((PTE)->u.Hard.PageFrameNumber) |
#define | MI_GET_PAGE_FRAME_FROM_TRANSITION_PTE(PTE) ((PTE)->u.Trans.PageFrameNumber) |
#define | MI_GET_PROTECTION_FROM_SOFT_PTE(PTE) ((PTE)->u.Soft.Protection) |
#define | MI_GET_PROTECTION_FROM_TRANSITION_PTE(PTE) ((PTE)->u.Trans.Protection) |
#define | MI_WRITE_VALID_PTE(_PointerPte, _PteContents) (*(_PointerPte) = (_PteContents)) |
#define | MI_WRITE_INVALID_PTE(_PointerPte, _PteContents) (*(_PointerPte) = (_PteContents)) |
#define | MI_WRITE_VALID_PTE_NEW_PROTECTION(_PointerPte, _PteContents) (*(_PointerPte) = (_PteContents)) |
#define | MiFillMemoryPte(Destination, Length, Pattern) RtlFillMemoryUlong ((Destination), (Length), (Pattern)) |
#define | MI_IS_PAGE_TABLE_ADDRESS(VA) ((PVOID)(VA) >= (PVOID)PTE_BASE && (PVOID)(VA) <= (PVOID)PDE_TOP) |
#define | MI_IS_KERNEL_PAGE_TABLE_ADDRESS(VA) ((PVOID)(VA) >= (PVOID)MiGetPteAddress(MmSystemRangeStart) && (PVOID)(VA) <= (PVOID)PDE_TOP) |
#define | MI_IS_PAGE_DIRECTORY_ADDRESS(VA) ((PVOID)(VA) >= (PVOID)PDE_BASE && (PVOID)(VA) <= (PVOID)PDE_TOP) |
#define | MI_IS_HYPER_SPACE_ADDRESS(VA) ((PVOID)(VA) >= (PVOID)HYPER_SPACE && (PVOID)(VA) <= (PVOID)HYPER_SPACE_END) |
#define | MI_IS_PROCESS_SPACE_ADDRESS(VA) |
#define | MI_IS_PTE_PROTOTYPE(PTE) ((PTE) > (PMMPTE)PDE_TOP) |
#define | MI_IS_SYSTEM_CACHE_ADDRESS(VA) |
#define | MI_BARRIER_SYNCHRONIZE(TimeStamp) |
#define | MI_BARRIER_STAMP_ZEROED_PAGE(PointerTimeStamp) |
#define | MI_FLUSH_SINGLE_SESSION_TB(Virtual, Invalid, AllProcessors, PtePointer, PteValue, PreviousPte) |
#define | MI_FLUSH_ENTIRE_SESSION_TB(Invalid, AllProcessors) NOTHING; |
Typedefs |
typedef _MMCOLOR_TABLES | MMCOLOR_TABLES |
typedef _MMCOLOR_TABLES * | PMMCOLOR_TABLES |
typedef _MMPRIMARY_COLOR_TABLES | MMPRIMARY_COLOR_TABLES |
typedef _MMPRIMARY_COLOR_TABLES * | PMMPRIMARY_COLOR_TABLES |
typedef _MMPTE_SOFTWARE | MMPTE_SOFTWARE |
typedef _MMPTE_TRANSITION | MMPTE_TRANSITION |
typedef _MMPTE_PROTOTYPE | MMPTE_PROTOTYPE |
typedef _MMPTE_SUBSECTION | MMPTE_SUBSECTION |
typedef _MMPTE_LIST | MMPTE_LIST |
typedef _MMPTE_HARDWARE | MMPTE_HARDWARE |
typedef _MMPTE_HARDWARE * | PMMPTE_HARDWARE |
typedef _MMPTE | MMPTE |
typedef MMPTE * | PMMPTE |
Functions |
ULONG FASTCALL | MiDetermineUserGlobalPteMask (IN PMMPTE Pte) |
Variables |
ULONG | MiNumberOfExtraSystemPdes |
ULONG | MiMaximumSystemCacheSizeExtra |
PVOID | MiSystemCacheStartExtra |
PVOID | MiSystemCacheEndExtra |
ULONG | MmKseg2Frame |
BOOLEAN | MiWriteCombiningPtes |
ULONG | MmSecondaryColorMask |
ULONG | MiMaximumWorkingSet |
PMMCOLOR_TABLES | MmFreePagesByColor [2] |
ULONG | MmTotalPagesForPagingFile |
MMPTE | MmPteGlobal |