|
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 |
Defines |
| #define | HEADER_FILE |
| #define | VLM_SUPPORT 1 |
| #define | MM_KSEG0_BASE KSEG0_BASE64 |
| #define | MM_HIGHEST_USER_ADDRESSxx MM_HIGHEST_USER_ADDRESS64 |
| #define | LARGE_PAGES 1 |
| #define | MM_VIRTUAL_PAGE_SHIFT 20 |
| #define | PDE_BASE64 ((ULONG)0xC0302000) |
| #define | PTE_BASE64 ((ULONG)0xC0800000) |
| #define | MM_SYSTEM_SPACE_START (0xC2800000) |
| #define | MM_SYSTEM_SPACE_END (0xFFFFFFFF) |
| #define | MM_NONPAGED_SYSTEM_SPACE_START (0xF0000000) |
| #define | PDE_TOP 0xC03FFFFF |
| #define | MM_PAGES_IN_KSEG0 (((ULONG)KSEG1_BASE - (ULONG)KSEG0_BASE) >> PAGE_SHIFT) |
| #define | HYPER_SPACE ((PVOID)0xC0400000) |
| #define | HYPER_SPACE_END 0xC07fffff |
| #define | MM_SYSTEM_CACHE_WORKING_SET (0xC2800000) |
| #define | MM_SYSTEM_CACHE_START (0xC2C00000) |
| #define | MM_SYSTEM_CACHE_END (0xDE000000) |
| #define | MM_MAXIMUM_SYSTEM_CACHE_SIZE (((ULONG)MM_SYSTEM_CACHE_END - (ULONG)MM_SYSTEM_CACHE_START) >> PAGE_SHIFT) |
| #define | MM_SYSTEM_VIEW_START (0xDE000000) |
| #define | MM_SYSTEM_VIEW_SIZE (48*1024*1024) |
| #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 | NON_PAGED_SYSTEM_END ((ULONG)0xFFFFFFF0) |
| #define | MM_MINIMUM_SYSTEM_PTES 9000 |
| #define | MM_MAXIMUM_SYSTEM_PTES 50000 |
| #define | MM_DEFAULT_SYSTEM_PTES 15000 |
| #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)(192*1024*1024)) |
| #define | MM_MAX_TOTAL_POOL (((ULONG)MM_NONPAGED_POOL_END) - ((ULONG)(MM_PAGED_POOL_START))) |
| #define | PAGE_DIRECTORY_MASK ((ULONG)0x003FFFFF) |
| #define | MM_VA_MAPPED_BY_PDE (0x400000) |
| #define | LOWEST_IO_ADDRESS (0x40000000) |
| #define | PTE_SHIFT (2) |
| #define | MM_HIGHEST_VAD_ADDRESS64 ((PVOID64)(0x800000000)) |
| #define | PHYSICAL_ADDRESS_BITS (36) |
| #define | MM_MAXIMUM_NUMBER_OF_COLORS (8) |
| #define | MM_PROTO_PTE_ALIGNMENT ((ULONG)MM_MAXIMUM_NUMBER_OF_COLORS * (ULONG)PAGE_SIZE) |
| #define | MAX_PAGE_FILES 8 |
| #define | HYPER_SPACE ((PVOID)0xC0400000) |
| #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 ((ULONG)((ULONG)2*1024*1024*1024 - 64*1024*1024) >> PAGE_SHIFT) |
| #define | MM_WORKING_SET_END ((ULONG)0xC07FF000) |
| #define | MM_PTE_GLOBAL_MASK 0x1 |
| #define | MM_PTE_PROTOTYPE_MASK 0x4 |
| #define | MM_PTE_VALID_MASK 0x2 |
| #define | MM_PTE_DIRTY_MASK 0x4 |
| #define | MM_PTE_CACHE_DISABLE_MASK 0x10 |
| #define | MM_PTE_TRANSITION_MASK 0x100 |
| #define | MM_PTE_WRITE_MASK 0x40000000 |
| #define | MM_PTE_COPY_ON_WRITE_MASK 0x80000000 |
| #define | MM_PTE_CACHE_ENABLE_MASK 0x0 |
| #define | MM_PTE_NOACCESS 0x0 |
| #define | MM_PTE_READONLY 0x0 |
| #define | MM_PTE_READWRITE MM_PTE_WRITE_MASK |
| #define | MM_PTE_WRITECOPY (MM_PTE_WRITE_MASK | MM_PTE_COPY_ON_WRITE_MASK) |
| #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 (MM_PTE_WRITE_MASK | MM_PTE_COPY_ON_WRITE_MASK) |
| #define | MM_PTE_NOCACHE (MM_PTE_CACHE_DISABLE_MASK) |
| #define | MM_PTE_GUARD 0x0 |
| #define | MM_PTE_CACHE MM_PTE_CACHE_ENABLE_MASK |
| #define | MM_PROTECT_FIELD_SHIFT 3 |
| #define | MM_ZERO_PTE 0 |
| #define | MM_ZERO_KERNEL_PTE MM_PTE_GLOBAL_MASK |
| #define | MM_DEMAND_ZERO_WRITE_PTE (MM_READWRITE << MM_PROTECT_FIELD_SHIFT) |
| #define | MM_KERNEL_DEMAND_ZERO_PTE ((MM_READWRITE << MM_PROTECT_FIELD_SHIFT) | MM_PTE_GLOBAL_MASK) |
| #define | MM_KERNEL_NOACCESS_PTE ((MM_NOACCESS << MM_PROTECT_FIELD_SHIFT) | MM_PTE_GLOBAL_MASK) |
| #define | MM_PTE_CLEAN 0 |
| #define | MM_PTE_DIRTY 1 |
| #define | MM_STACK_ALIGNMENT 0x2000 |
| #define | MM_STACK_OFFSET 0x1000 |
| #define | PDE_PER_PAGE ((ULONG)1024) |
| #define | PTE_PER_PAGE ((ULONG)1024) |
| #define | MM_USER_PAGE_TABLE_PAGES (512) |
| #define | MM_NUMBER_OF_COLORS 8 |
| #define | MM_COLOR_MASK 7 |
| #define | MM_COLOR_STRIDE 11 |
| #define | MM_COLOR_ALIGNMENT 0x8000 |
| #define | MM_COLOR_MASK_VIRTUAL 0x7000 |
| #define | MM_SECONDARY_COLORS_DEFAULT (256) |
| #define | MM_SECONDARY_COLORS_MIN (2) |
| #define | MM_SECONDARY_COLORS_MAX (2048) |
| #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_GLOBAL_BIT_IF_SYSTEM(OUTPTE, PPTE) |
| #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_STATE(PTE, STATE) (PTE).u.Hard.Global = STATE; |
| #define | MI_ENABLE_CACHING(PTE) ((PTE).u.Hard.CachePolicy = PCR->CachePolicy) |
| #define | MI_DISABLE_CACHING(PTE) ((PTE).u.Hard.CachePolicy = UNCACHED_POLICY) |
| #define | MI_IS_CACHING_DISABLED(PPTE) ((PPTE)->u.Hard.CachePolicy == UNCACHED_POLICY) |
| #define | MI_IS_PTE_DIRTY(PTE) ((PTE).u.Hard.Dirty != 0) |
| #define | MI_SET_PFN_DELETED(PPFN) (((ULONG)(PPFN)->PteAddress &= 0x7FFFFFFF )) |
| #define | MI_IS_PFN_DELETED(PPFN) (((ULONG)(PPFN)->PteAddress & 0x80000000) == 0) |
| #define | MI_CHECK_PAGE_ALIGNMENT(PAGE, COLOR) |
| #define | MI_INITIALIZE_HYPERSPACE_MAP(HYPER_PAGE) |
| #define | MI_GET_PAGE_COLOR_FROM_PTE(PTEADDRESS) |
| #define | MI_GET_PAGE_COLOR_FROM_VA(ADDRESS) |
| #define | MI_PAGE_COLOR_PTE_PROCESS(PTE, COLOR) |
| #define | MI_PAGE_COLOR_VA_PROCESS(ADDRESS, COLOR) |
| #define | MI_GET_NEXT_COLOR(COLOR) ((COLOR + 1) & MM_COLOR_MASK) |
| #define | MI_GET_PREVIOUS_COLOR(COLOR) ((COLOR - 1) & MM_COLOR_MASK) |
| #define | MI_GET_COLOR_FROM_SECONDARY(COLOR) ((COLOR) & MM_COLOR_MASK) |
| #define | MI_GET_SECONDARY_COLOR(PAGE, PFN) ((((ULONG)(PAGE) & MmSecondaryColorMask)) | (PFN)->u3.e1.PageColor) |
| #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) |
| #define | MI_GET_OWNER_IN_PTE(PPTE) KernelMode |
| #define | CLEAR_FOR_PROTO_PTE_ADDRESS ((ULONG)0xf) |
| #define | CLEAR_FOR_PAGE_FILE ((ULONG)(0x0F9)) |
| #define | SET_PAGING_FILE_INFO(PTE, FILEINFO, OFFSET) |
| #define | MiPteToProto(lpte) |
| #define | MiProtoAddressForPte(proto_va) ((ULONG)((((ULONG)proto_va - MmProtopte_Base) << 1) | MM_PTE_PROTOTYPE_MASK)) |
| #define | MiProtoAddressForKernelPte(proto_va) |
| #define | MM_SUBSECTION_MAP (128*1024*1024) |
| #define | MiGetSubsectionAddress(lpte) |
| #define | MiGetSubsectionAddressForPte(VA) |
| #define | MiGetPdeAddress(va) ((PMMPTE)(((((ULONG)(va)) >> 22) << 2) + PDE_BASE)) |
| #define | MiGetPdeAddress64(va) ((PMMPTE)((ULONG)((((ULONGLONG)(va)) >> 22) << 2) + PDE_BASE64)) |
| #define | MiGetPteAddress(va) ((PMMPTE)(((((ULONG)(va)) >> 12) << 2) + PTE_BASE)) |
| #define | MiGetPteAddress64(va) ((PMMPTE)((ULONG)((((ULONGLONG)(va)) >> 12) << 2) + PTE_BASE64)) |
| #define | MiGetPdeOffset(va) (((ULONG)(va)) >> 22) |
| #define | MiGetPteOffset(va) ((((ULONG)(va)) << 10) >> 22) |
| #define | MiGetVirtualAddressMappedByPte(PTE) ((PVOID)((ULONG)(PTE) << 10)) |
| #define | MiGetVirtualAddressMappedByPte64(PTE) ((PVOID64)(((ULONGLONG)((ULONG)(PTE) - PTE_BASE64)) << 10)) |
| #define | MiGetVirtualPageNumberMappedByPte64(PTE) (((ULONG)(PTE) - PTE_BASE64) >> 2) |
| #define | GET_PAGING_FILE_NUMBER(PTE) ((((PTE).u.Long) >> 9) & 0x7) |
| #define | GET_PAGING_FILE_OFFSET(PTE) ((((PTE).u.Long) >> 12) & 0x000FFFFF) |
| #define | IS_PTE_NOT_DEMAND_ZERO(PTE) ((PTE).u.Long & (ULONG)0xFFFFF107) |
| #define | MM_DEMAND_ZERO_WRITE_PTE (MM_READWRITE << MM_PROTECT_FIELD_SHIFT) |
| #define | MM_KERNEL_DEMAND_ZERO_PTE ((MM_READWRITE << MM_PROTECT_FIELD_SHIFT) | MM_PTE_GLOBAL_MASK) |
| #define | MM_KERNEL_NOACCESS_PTE ((MM_NOACCESS << MM_PROTECT_FIELD_SHIFT) | MM_PTE_GLOBAL_MASK) |
| #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 >= KSEG0_BASE) && ((ULONG)Va < KSEG2_BASE)) |
| #define | MI_CONVERT_PHYSICAL_TO_PFN(Va) (((ULONG)Va << 3) >> 15) |
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 | MMPTE |
| typedef MMPTE * | PMMPTE |
Variables |
| ULONG | MmSecondaryColorMask |
| MMPFNLIST | MmFreePagesByPrimaryColor [2][MM_MAXIMUM_NUMBER_OF_COLORS] |
| PMMCOLOR_TABLES | MmFreePagesByColor [2] |
| ULONG | MmTotalPagesForPagingFile |