MMPTE数据结构

本文详细解析了MMPTE内存页表的结构及其在操作系统内存管理中的作用。介绍了MMPTE作为union类型,如何抽象PDE、PTE等数据结构,并详细解释了其内部各个字段的意义,如Valid、Write、Owner等位标识,以及PageFrameNumber等关键信息。

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

转载于:https://www.cnblogs.com/fanzi2009/archive/2011/12/22/2297570.html

kd> x nt!MmPfnDatabase fffff805`7b8fc500 nt!MmPfnDatabase = <no type information> kd> dt _mmpfn fffff805`7b8fc500+0x460f7*0x30 nt!_MMPFN +0x000 ListEntry : _LIST_ENTRY [ 0x470348fa`8b4ce3f7 - 0xc4034900`d7834908 ] +0x000 TreeNode : _RTL_BALANCED_NODE +0x000 u1 : <anonymous-tag> +0x008 PteAddress : 0xc4034900`d7834908 _MMPTE +0x008 PteLong : 0xc4034900`d7834908 +0x010 OriginalPte : _MMPTE +0x018 u2 : _MIPFNBLINK +0x020 u3 : <anonymous-tag> +0x024 NodeBlinkLow : 0x1047 +0x026 Unused : 0y1001 +0x026 Unused2 : 0y0100 +0x027 ViewCount : 0x83 '' +0x027 NodeFlinkLow : 0x83 '' +0x027 ModifiedListBucketIndex : 0y0011 +0x027 AnchorLargePageSize : 0y11 +0x028 u4 : <anonymous-tag> kd> dt _mmpfn fffff805`7b8fc500+0x4609*0x30 nt!_MMPFN +0x000 ListEntry : _LIST_ENTRY [ 0x006f006c`006c0041 - 0x00000064`00650077 ] +0x000 TreeNode : _RTL_BALANCED_NODE +0x000 u1 : <anonymous-tag> +0x008 PteAddress : 0x00000064`00650077 _MMPTE +0x008 PteLong : 0x00000064`00650077 +0x010 OriginalPte : _MMPTE +0x018 u2 : _MIPFNBLINK +0x020 u3 : <anonymous-tag> +0x024 NodeBlinkLow : 0x54 +0x026 Unused : 0y0101 +0x026 Unused2 : 0y0110 +0x027 ViewCount : 0 '' +0x027 NodeFlinkLow : 0 '' +0x027 ModifiedListBucketIndex : 0y0000 +0x027 AnchorLargePageSize : 0y00 +0x028 u4 : <anonymous-tag> kd> dx -id 0,0,ffffbd046545f1c0 -r1 (*((ntkrnlmp!_LIST_ENTRY *)0xfffff8057c61f350)) (*((ntkrnlmp!_LIST_ENTRY *)0xfffff8057c61f350)) [Type: _LIST_ENTRY] [+0x000] Flink : 0x470348fa8b4ce3f7 [Type: _LIST_ENTRY *] [+0x008] Blink : 0xc4034900d7834908 [Type: _LIST_ENTRY *]
07-21
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值