1、pte
!pte 扩展显示指定地址的页表项(page table entry (PTE))和页目录项(page directory entry (PDE))。
语法
Windows NT 4.0 和Windows 2000的语法
!pte VirtualAddress
!pte PTE
!pte LiteralAddress 1
!pte StartAddress EndAddress
Windows XP和之后的语法
!pte VirtualAddress
!pte PTE
!pte LiteralAddress 1
参数
VirtualAddres
2、s
指定需要查看页表的虚拟地址。
PTE
指定实际的PTE的地址。
LiteralAddress 1
指定实际的PTE或PDE的地址。
StartAddress
(仅x86 或x64 目标机;仅 Windows NT 4.0 和Windows 2000) 指定某个范围的开始的虚拟地址。该范围内的所有页表都会被显示出来。
EndAddress
(仅x86 或x64 目标机; 仅Windows NT 4.0 和Windows 2000) 指定某个范围的结束的虚拟地址。该范围内的所有页表都会被显示出来。
DLL
Windows NT 4.0
Kdextx86.dll
Win
3、dows 2000
Kdextx86.dll
Windows XP和之后
Kdexts.dll
注释
如果指定了一个参数,并且该参数是一个用于保存页表的内存区域中的地址,那么调试器将它当作一个PTE参数。该参数被当作要查看的PTE的实际地址,调试器会显示该PTE以及相应的PDE。
如果指定的参数不在这个范围内,调试器把它当作VirtualAddress。会显示用于映射这个地址的PTE和PDE。
如果指定了两个参数,并且第二个参数是1 (或者更小的数字),调试器将第一个参数当作LiteralAddress。这个地址会被当作PTE或者PDE的实际地址,并且显示相应的数据(可能是错误的
4、)。
(仅x86 或x64目标机) 如果提供了两个参数,并且第二个参数比第一个大,调试器将它们当作StartAddress 和EndAddress。命令会显示指定的内存范围中每个页面的PTE。
使用!sysptes扩展命令查看所有系统PTE的列表。
下面是x86目标机上的示例:
kd> !pte 801544f4
801544F4 - PDE at C0300800 PTE at C0200550
contains 0003B163 contains 00154121
pfn 3b G-DA--KWV pfn 1
5、54 G--A--KRV
输出的第一行会再次显示被查看的虚拟地址。然后是包含该地址内存映射(virtual-physical mapping)信息的PDE和PTE的虚拟地址。
第二行是PDE和PTE的实际内容。
第三行是对这些内容的分析,将它们分解成页面帧序号(PFN)和状态位(status bits)。
查看 !pfn扩展命令或者 将虚拟地址转换成物理地址小节来获得如何理解和使用PFN的信息。
在x86和x64目标机上,PDE和PTE的状态位在下表中列出。!pte 的显示会用大写字母或者虚线来表示这些位,并且还添加其他信息。
位
设置时的显示
清除时的显示
意义
0x20
6、0
C
-
写时复制(Copy on write)
0x100
G
-
全局页面(Global)
0x80
L
-
大页面(Large page)。只有PDE有,PTE中没有。
0x40
D
-
脏页面(Dirty)
0x20
A
-
已访问(Accessed)
0x10
N
-
禁止缓存(Cache disabled)
0x8
T
-
通写(Write-through)
0x4
U
K
所有者(用户模式或内核模式)。
0x2
W
R
可写或者只读。只有在多处理器计算机和任何运行Windows Vista和之后系统的机器上有
7、
0x1
V
有效位(Valid)
E
-
可执行页面。对于包括很多x86系统在内的不支持硬件执行/非执行标志位的平台,总是显示E。
在Itanium目标机上,PDE和PTE的状态位和PPE中有少许不同。Itanium PPE位有下面这些:
设置时的显示
清除时的显示
意义
V
有效位(Valid)
U
K
所有者(用户模式或内核模式)。
D
-
脏页面(Dirty)
A
-
已访问(Accessed)
W
R
可写或者只读。只有在多处理器计算机和任何运行Windows Vista和之后系统的机器上有。
E
-
执行(Execute)
C
-
写时复制(Copy on write)
附加信息
关于页表、页目录和这些状态位的说明,查看Mark Russinovich 和David Solomon 编写的Microsoft Windows Internals。