diff --git a/ntoskrnl/include/internal/mm.h b/ntoskrnl/include/internal/mm.h index f7b08a2d0f5..6f0972da40f 100644 --- a/ntoskrnl/include/internal/mm.h +++ b/ntoskrnl/include/internal/mm.h @@ -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, diff --git a/ntoskrnl/mm/pagefile.c b/ntoskrnl/mm/pagefile.c index 347ffec4a52..2859a35fd10 100644 --- a/ntoskrnl/mm/pagefile.c +++ b/ntoskrnl/mm/pagefile.c @@ -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; diff --git a/ntoskrnl/mm/shutdown.c b/ntoskrnl/mm/shutdown.c index 68549983bf2..50522dd4e82 100644 --- a/ntoskrnl/mm/shutdown.c +++ b/ntoskrnl/mm/shutdown.c @@ -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; }