MMPTE其实是个union,它抽象了PDE,PTE,原型PTE等数据结构
kd> dt _MMPTE -r2
nt!_MMPTE
+0x000 u : __unnamed
+0x000 Long : Uint4B
+0x000 Flush : _HARDWARE_PTE_X86
+0x000 Valid : Pos 0, 1 Bit
+0x000 Write : Pos 1, 1 Bit
+0x000 Owner : Pos 2, 1 Bit
+0x000 WriteThrough : Pos 3, 1 Bit
+0x000 CacheDisable : Pos 4, 1 Bit
+0x000 Accessed : Pos 5, 1 Bit
+0x000 Dirty : Pos 6, 1 Bit
+0x000 LargePage : Pos 7, 1 Bit
+0x000 Global : Pos 8, 1 Bit
+0x000 CopyOnWrite : Pos 9, 1 Bit
+0x000 Prototype : Pos 10, 1 Bit
+0x000 reserved : Pos 11, 1 Bit
+0x000 PageFrameNumber : Pos 12, 20 Bits
+0x000 Hard : _MMPTE_HARDWARE
+0x000 Valid : Pos 0, 1 Bit
+0x000 Writable : Pos 1, 1 Bit
+0x000 Owner : Pos 2, 1 Bit
+0x000 WriteThrough : Pos 3, 1 Bit
+0x000 CacheDisable : Pos 4, 1 Bit
+0x000 Accessed : Pos 5, 1 Bit
+0x000 Dirty : Pos 6, 1 Bit
+0x000 LargePage : Pos 7, 1 Bit
+0x000 Global : Pos 8, 1 Bit
+0x000 CopyOnWrite : Pos 9, 1 Bit
+0x000 Prototype : Pos 10, 1 Bit
+0x000 Write : Pos 11, 1 Bit
+0x000 PageFrameNumber : Pos 12, 20 Bits
+0x000 Proto : _MMPTE_PROTOTYPE
+0x000 Valid : Pos 0, 1 Bit
+0x000 ProtoAddressLow : Pos 1, 7 Bits
+0x000 ReadOnly : Pos 8, 1 Bit
+0x000 WhichPool : Pos 9, 1 Bit
+0x000 Prototype : Pos 10, 1 Bit
+0x000 ProtoAddressHigh : Pos 11, 21 Bits
+0x000 Soft : _MMPTE_SOFTWARE
+0x000 Valid : Pos 0, 1 Bit
+0x000 PageFileLow : Pos 1, 4 Bits
+0x000 Protection : Pos 5, 5 Bits
+0x000 Prototype : Pos 10, 1 Bit
+0x000 Transition : Pos 11, 1 Bit
+0x000 PageFileHigh : Pos 12, 20 Bits
+0x000 Trans : _MMPTE_TRANSITION
+0x000 Valid : Pos 0, 1 Bit
+0x000 Write : Pos 1, 1 Bit
+0x000 Owner : Pos 2, 1 Bit
+0x000 WriteThrough : Pos 3, 1 Bit
+0x000 CacheDisable : Pos 4, 1 Bit
+0x000 Protection : Pos 5, 5 Bits
+0x000 Prototype : Pos 10, 1 Bit
+0x000 Transition : Pos 11, 1 Bit
+0x000 PageFrameNumber : Pos 12, 20 Bits
+0x000 Subsect : _MMPTE_SUBSECTION
+0x000 Valid : Pos 0, 1 Bit
+0x000 SubsectionAddressLow : Pos 1, 4 Bits
+0x000 Protection : Pos 5, 5 Bits
+0x000 Prototype : Pos 10, 1 Bit
+0x000 SubsectionAddressHigh : Pos 11, 20 Bits
+0x000 WhichPool : Pos 31, 1 Bit
+0x000 List : _MMPTE_LIST
+0x000 Valid : Pos 0, 1 Bit
+0x000 OneEntry : Pos 1, 1 Bit
+0x000 filler0 : Pos 2, 8 Bits
+0x000 Prototype : Pos 10, 1 Bit
+0x000 filler1 : Pos 11, 1 Bit
+0x000 NextEntry : Pos 12, 20 Bits