60 #define MAX_MAD_COUNT 200 70 TRACE(
"MempAddMemoryBlock(BasePage=0x%lx, PageCount=0x%lx, Type=%ld)\n",
71 BasePage, PageCount,
Type);
75 if (BasePage >= MM_MAX_PAGE)
82 if (BasePage + PageCount > MM_MAX_PAGE)
85 PageCount = MM_MAX_PAGE - BasePage;
91 ERR(
"Error: no MAD slots left!\n");
113 TRACE(
"MempSetupPagingForRegion(BasePage=0x%lx, PageCount=0x%lx, Type=%ld)\n",
114 BasePage, PageCount,
Type);
172 ERR(
"Error during MempSetupPaging\n");
183 PFN_NUMBER i, PagesCount, MemoryMapSizeInPages, NoEntries;
223 UiMessageBox(
"Can not retrieve the current memory map.");
231 TRACE(
"Got memory map with %d entries\n", NoEntries);
237 ERR(
"Error during MempSetupPaging of low 1Mb\n");
244 LastPageType =
MemoryMap[1].PageAllocated;
245 for (
i = 2;
i < NoEntries;
i++)
247 if ((
MemoryMap[
i].PageAllocated != LastPageType) ||
248 (
i == NoEntries - 1))
262 LastPageType =
MemoryMap[0].PageAllocated;
263 for (
i = 1;
i < NoEntries;
i++)
266 if (
i >= MemoryMapStartPage &&
267 i < (MemoryMapStartPage+MemoryMapSizeInPages))
274 if (
MemoryMap[
i].PageAllocated == LastPageType &&
343 TRACE(
"Memory Descriptor List prepared, printing PDE\n");
344 List_PaToVa(&LoaderBlock->MemoryDescriptorListHead);
359 PLIST_ENTRY ListHead = &LoaderBlock->MemoryDescriptorListHead;
367 PreviousEntry = ListHead;
368 NextEntry = ListHead->
Flink;
369 while (NextEntry != ListHead)
377 PreviousEntry = NextEntry;
378 PreviousDescriptor = NextDescriptor;
379 NextEntry = NextEntry->
Flink;
406 if ((NextEntry != ListHead) &&
PFN_NUMBER MmHighestPhysicalPage
DBG_DEFAULT_CHANNEL(WINDOWS)
VOID List_PaToVa(_In_ LIST_ENTRY *ListEntry)
FORCEINLINE VOID InsertHeadList(_Inout_ PLIST_ENTRY ListHead, _Inout_ __drv_aliasesMem PLIST_ENTRY Entry)
BIOS_MEMORY_MAP MemoryMap[32]
TYPE_OF_MEMORY MemoryType
VOID MempSetupPagingForRegion(PFN_NUMBER BasePage, PFN_NUMBER PageCount, ULONG Type)
BOOLEAN MempSetupPaging(IN PFN_NUMBER StartPage, IN PFN_NUMBER NumberOfPages, IN BOOLEAN KernelMapping)
_In_opt_ PSECURITY_DESCRIPTOR _Out_ PSECURITY_DESCRIPTOR * NewDescriptor
MEMORY_ALLOCATION_DESCRIPTOR * Mad
FORCEINLINE BOOLEAN RemoveEntryList(_In_ PLIST_ENTRY Entry)
TYPE_OF_MEMORY MemoryType
PFN_NUMBER MmLowestPhysicalPage
VOID UiMessageBox(PCSTR Format,...)
static const PCSTR MemTypeDesc[]
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
ULONG BiosMemoryMapEntryCount
struct _LIST_ENTRY * Flink
PPAGE_LOOKUP_TABLE_ITEM MmGetMemoryMap(PFN_NUMBER *NoEntries)
VOID FrLdrHeapCleanupAll(VOID)
PFREELDR_MEMORY_DESCRIPTOR BiosMemoryMap
PVOID MmAllocateMemoryWithType(SIZE_T MemorySize, TYPE_OF_MEMORY MemoryType)
VOID WinLdrpDumpMemoryDescriptors(PLOADER_PARAMETER_BLOCK LoaderBlock)
VOID MempAddMemoryBlock(IN OUT PLOADER_PARAMETER_BLOCK LoaderBlock, PFN_NUMBER BasePage, PFN_NUMBER PageCount, ULONG Type)
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
BOOLEAN WinLdrSetupMemoryLayout(IN OUT PLOADER_PARAMETER_BLOCK LoaderBlock)
static VOID WinLdrInsertDescriptor(IN OUT PLOADER_PARAMETER_BLOCK LoaderBlock, IN PMEMORY_ALLOCATION_DESCRIPTOR NewDescriptor)