[NTOSKRNL] Close page files (and delete them!) on shutdown

This commit is contained in:
Pierre Schweitzer 2018-08-13 07:52:05 +02:00
parent d793f196df
commit 3814a822f1
No known key found for this signature in database
GPG key ID: 7545556C3D585B0B
3 changed files with 28 additions and 19 deletions

View file

@ -102,6 +102,8 @@ typedef ULONG_PTR SWAPENTRY;
#define SESSION_POOL_MASK 32
#define VERIFIER_POOL_MASK 64
#define MAX_PAGING_FILES (16)
// FIXME: use ALIGN_UP_BY
#define MM_ROUND_UP(x,s) \
((PVOID)(((ULONG_PTR)(x)+(s)-1) & ~((ULONG_PTR)(s)-1)))
@ -421,6 +423,22 @@ typedef struct _MM_PAGED_POOL_INFO
extern MM_MEMORY_CONSUMER MiMemoryConsumers[MC_MAXIMUM];
/* Page file information */
typedef struct _MMPAGING_FILE
{
PFILE_OBJECT FileObject;
HANDLE FileHandle;
LARGE_INTEGER MaximumSize;
LARGE_INTEGER CurrentSize;
PFN_NUMBER FreePages;
PFN_NUMBER UsedPages;
PRTL_BITMAP AllocMap;
KSPIN_LOCK AllocMapLock;
}
MMPAGING_FILE, *PMMPAGING_FILE;
extern PMMPAGING_FILE MmPagingFile[MAX_PAGING_FILES];
typedef VOID
(*PMM_ALTER_REGION_FUNC)(
PMMSUPPORT AddressSpace,

View file

@ -36,30 +36,12 @@
#pragma alloc_text(INIT, MmInitPagingFile)
#endif
/* TYPES *********************************************************************/
typedef struct _MMPAGING_FILE
{
PFILE_OBJECT FileObject;
HANDLE FileHandle;
LARGE_INTEGER MaximumSize;
LARGE_INTEGER CurrentSize;
PFN_NUMBER FreePages;
PFN_NUMBER UsedPages;
PRTL_BITMAP AllocMap;
KSPIN_LOCK AllocMapLock;
}
MMPAGING_FILE, *PMMPAGING_FILE;
/* GLOBALS *******************************************************************/
#define PAIRS_PER_RUN (1024)
#define MAX_PAGING_FILES (16)
/* List of paging files, both used and free */
static PMMPAGING_FILE MmPagingFile[MAX_PAGING_FILES];
PMMPAGING_FILE MmPagingFile[MAX_PAGING_FILES];
/* Lock for examining the list of paging files */
static KSPIN_LOCK PagingFileListLock;

View file

@ -20,6 +20,15 @@
VOID
MiShutdownSystem(VOID)
{
ULONG i;
/* Loop through all the paging files */
for (i = 0; i < MmNumberOfPagingFiles; i++)
{
/* And close them */
ZwClose(MmPagingFile[i]->FileHandle);
}
UNIMPLEMENTED;
}