25 #define FREELDR_SECTION_COUNT 3 29 #define FREELDR_SECTION_COUNT 4 32 #define FREELDR_SECTION_COUNT 3 44 #if defined(__i386__) || defined(_PPC_) || defined(_MIPS_) || defined(_ARM_) 46 #define MM_PAGE_SIZE 4096 47 #define MM_PAGE_MASK 0xFFF 48 #define MM_PAGE_SHIFT 12 49 #define MM_MAX_PAGE 0xFFFFF 51 #define MM_SIZE_TO_PAGES(a) \ 52 ( ((a) >> MM_PAGE_SHIFT) + ((a) & MM_PAGE_MASK ? 1 : 0) ) 54 #endif // defined __i386__ or _PPC_ or _MIPS_ 58 #define MM_PAGE_SIZE 4096 59 #define MM_PAGE_MASK 0xFFF 60 #define MM_PAGE_SHIFT 12 61 #define MM_MAX_PAGE 0x3FFFF 63 #define MM_SIZE_TO_PAGES(a) \ 64 ( ((a) >> MM_PAGE_SHIFT) + ((a) & MM_PAGE_MASK ? 1 : 0) ) 69 #define HEAP_PAGES 0x400 70 #define STACK_PAGES 0x00 85 #define DUMP_MEM_MAP_ON_VERIFY 0 122 #define DEFAULT_HEAP_SIZE (1024 * 1024) 123 #define TEMP_HEAP_SIZE (32 * 1024 * 1024)
FORCEINLINE VOID FrLdrHeapFree(PVOID MemoryPointer, ULONG Tag)
BOOLEAN MmInitializeMemoryManager(VOID)
VOID FrLdrHeapVerify(PVOID HeapHandle)
TYPE_OF_MEMORY MemoryType
IN PVOID IN PVOID IN USHORT IN USHORT Size
PVOID FrLdrHeapAllocateEx(PVOID HeapHandle, SIZE_T ByteSize, ULONG Tag)
PFN_NUMBER MmFindAvailablePagesBeforePage(PVOID PageLookupTable, PFN_NUMBER TotalPageCount, PFN_NUMBER PagesNeeded, PFN_NUMBER LastPage)
VOID MmAllocatePagesInLookupTable(PVOID PageLookupTable, PFN_NUMBER StartPage, PFN_NUMBER PageCount, TYPE_OF_MEMORY MemoryType)
PVOID MmFindLocationForPageLookupTable(PFN_NUMBER TotalPageCount)
VOID MmSetMemoryType(PVOID MemoryAddress, SIZE_T MemorySize, TYPE_OF_MEMORY NewType)
_Must_inspect_result_ _In_ SIZE_T _In_ PVOID PageAddress
enum _TYPE_OF_MEMORY TYPE_OF_MEMORY
int WINAPI StartPage(_In_ HDC)
PFN_NUMBER LastFreePageHint
VOID MmInitializeHeap(PVOID PageLookupTable)
FORCEINLINE PVOID FrLdrTempAlloc(_In_ SIZE_T Size, _In_ ULONG Tag)
PFN_NUMBER FreePagesInLookupTable
PFN_NUMBER PageAllocationLength
PFN_NUMBER MmGetAddressablePageCountIncludingHoles(VOID)
TYPE_OF_MEMORY PageAllocated
PFN_NUMBER TotalPagesInLookupTable
PVOID MmAllocateHighestMemoryBelowAddress(SIZE_T MemorySize, PVOID DesiredAddress, TYPE_OF_MEMORY MemoryType)
VOID FrLdrHeapFreeEx(PVOID HeapHandle, PVOID Pointer, ULONG Tag)
PVOID MmAllocateMemory(SIZE_T MemorySize)
FORCEINLINE PVOID FrLdrHeapAlloc(SIZE_T MemorySize, ULONG Tag)
PPAGE_LOOKUP_TABLE_ITEM MmGetMemoryMap(PFN_NUMBER *NoEntries)
VOID MmInitPageLookupTable(PVOID PageLookupTable, PFN_NUMBER TotalPageCount)
VOID FrLdrHeapCleanupAll(VOID)
static CONST DWORD MemorySize[]
struct _FREELDR_MEMORY_DESCRIPTOR FREELDR_MEMORY_DESCRIPTOR
PVOID MmAllocateMemoryWithType(SIZE_T MemorySize, TYPE_OF_MEMORY MemoryType)
PVOID MmAllocateMemoryAtAddress(SIZE_T MemorySize, PVOID DesiredAddress, TYPE_OF_MEMORY MemoryType)
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
PFN_NUMBER MmCountFreePagesInLookupTable(PVOID PageLookupTable, PFN_NUMBER TotalPageCount)
PFN_NUMBER MmGetPageNumberFromAddress(PVOID Address)
PVOID PageLookupTableAddress
VOID MmFreeMemory(PVOID MemoryPointer)
BOOLEAN MmAreMemoryPagesAvailable(PVOID PageLookupTable, PFN_NUMBER TotalPageCount, PVOID PageAddress, PFN_NUMBER PageCount)
PFN_NUMBER MmFindAvailablePages(PVOID PageLookupTable, PFN_NUMBER TotalPageCount, PFN_NUMBER PagesNeeded, BOOLEAN FromEnd)
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_opt_ PLARGE_INTEGER MaximumSize
VOID FrLdrHeapRelease(PVOID HeapHandle)
VOID MmMarkPagesInLookupTable(PVOID PageLookupTable, PFN_NUMBER StartPage, PFN_NUMBER PageCount, TYPE_OF_MEMORY PageAllocated)
_IRQL_requires_same_ _In_ CLONG ByteSize
struct _FREELDR_MEMORY_DESCRIPTOR * PFREELDR_MEMORY_DESCRIPTOR
PVOID FrLdrHeapCreate(SIZE_T MaximumSize, TYPE_OF_MEMORY MemoryType)
VOID FrLdrHeapDestroy(PVOID HeapHandle)
struct PAGE_LOOKUP_TABLE_ITEM * PPAGE_LOOKUP_TABLE_ITEM
VOID MmUpdateLastFreePageHint(PVOID PageLookupTable, PFN_NUMBER TotalPageCount)
FORCEINLINE VOID FrLdrTempFree(PVOID Allocation, ULONG Tag)