Files
MiniVisorPkg/Sources/MemoryManager.h
2020-02-22 13:54:50 -08:00

62 lines
1.3 KiB
C

/*!
@file MemoryManager.h
@brief Functions for memory management.
@author Satoshi Tanda
@copyright Copyright (c) 2020 - , Satoshi Tanda. All rights reserved.
*/
#pragma once
#include "Common.h"
/*!
@brief Allocates the requested size of memory and initialize the singleton
memory manager instance with it.
@param[in] PageCount - The page count to allocate for the use by the
memory manager.
@return MV_STATUS_SUCCESS on success; otherwise, an appropriate error code.
*/
_IRQL_requires_max_(PASSIVE_LEVEL)
_Must_inspect_result_
MV_STATUS
MmInitializeMemoryManager (
_In_ UINT32 PageCount
);
/*!
@brief Cleans up the memory manager.
*/
_IRQL_requires_max_(PASSIVE_LEVEL)
VOID
MmCleanupMemoryManager (
);
/*!
@brief Allocates page-aligned, zero-initialized physical page backed pool.
@param[in] PageCount - The page count to allocate.
@return The base of allocated pointer, or NULL on failure. The caller must
free the return value with FreeSystemMemory().
*/
_Post_maybenull_
_Post_writable_byte_size_(PageCount * PAGE_SIZE)
_Must_inspect_result_
VOID*
MmAllocatePages (
_In_ UINT8 PageCount
);
/*!
@brief Frees the memory allocated by AllocatePages().
@param[in] Pages - The pointer to free.
*/
VOID
MmFreePages (
_Pre_notnull_ VOID* Pages
);