KD>! PTE
VA 00000000
PDE AT C0300000 PTE AT C0000000
Contains 0e474067 Contains 00000000
PFN E474 --- Da - UWEV
Virtual Address 0x00000000's PTE is in virtual address 0xc0000000, PDE in virtual address 0xc0300000,
Because each PTE maps a page, 4K, each PTE accounts for 4 bytes in PDE, so that you need to map all 4GB virtual address space to require 4G / 4K * 4 = 4m.
Assign a page for PDE, where every 4-byte is a PTE virtual address, and PDE's page also needs a PTE (page entry) to indicate that the page table is placed from 0xC0000000. That is, address 0x00000000- 0x00001000 This 4K space PTE entry exists in 4 bytes of 0xC0000000, so, the address 0xc0000000-0XC0001000 page table item is placed in 4 bytes started at 0XC0300000, so this is also the form of PDE. The page used, the PDE is selected in the 0xC0300000:>
Find the first page table by PDE, you will find the start of the virtual 4G address space.
Relevant
if paged pool expansion requires the allocation of a new system page table, the memory manager does not go back and update all the process page directories to point to the new system page table. Instead, it updates the process page directories when the processes reference The New Virtual Address.
Thus, a process can take a page fault when referencing paged pool that is in fact physically resident because its process page directory does not yet point to the new system page table that describes the new area of pool. Page faults do not occur when Accessing Nonpaged Pool, Even Though It Too Can Can Be Expanded, Because Windows 2000 Builds Enough System Page Tables To Describe The Maximum Size During System Initialization.