Debugging Tools for Windows

!poolfind

!poolfind扩展命令在非分页和分页内存中查找指定的pool tag。

语法

!poolfind TagString [PoolType
!poolfind TagValue [PoolType

参数

TagString
指定pool tag。TagString是区分大小写的ASCII字符串。星号(*)可以用来表示任意数量的字符,问号 (?)可以用来代表一个字符。如果没有使用星号, TagString必须刚好是4个字符长度。
TagValue
指定pool tag。TagValue必须以"0x"开头,即使默认的基数为16。如果该参数以任何其他值开头(包括"0X"),则会被解释为ASCII的标签字符串。
PoolType
指定要搜索的池类型。允许下面这些值:
0
指定非分页内存池。这是默认值。
1
指定分页内存池。
2
指定特殊池(special pool)。
4
(Windows XP和之后) 指定会话池(session pool)。

DLL

Windows 2000 Kdextx86.dll
Windows XP和之后 Kdexts.dll

注释

该命令根据需要搜索的池内存大小的不同,需要很长时间来执行。要加快速度,可以通过CTRL+A (Toggle Baud Rate)键增加COM端口,或者使用.cache (Set Cache Size)命令增加缓存大小 (设置到大约10 MB)。

Pool tag和传递给ExAllocateXxx类例程的标签一样。

下面是一个示例。搜索整个非分页内存池之后搜索分页池,但是命令在完成之前被终止(长时间操作之后):

kd> !poolfind SeSd 0

Scanning large pool allocation table for Tag: SeSd (827d1000 : 827e9000)

Searching NonPaged pool (823b1000 : 82800000) for Tag: SeSd

826fa130 size:   c0 previous size:   40  (Allocated) SeSd
82712000 size:   c0 previous size:    0  (Allocated) SeSd
82715940 size:   a0 previous size:   60  (Allocated) SeSd
8271da30 size:   c0 previous size:   10  (Allocated) SeSd
82721c00 size:   10 previous size:   30  (Free)      SeSd
8272b3f0 size:   60 previous size:   30  (Allocated) SeSd
8272d770 size:   60 previous size:   40  (Allocated) SeSd
8272d7d0 size:   a0 previous size:   60  (Allocated) SeSd
8272d960 size:   a0 previous size:   70  (Allocated) SeSd
82736f30 size:   a0 previous size:   10  (Allocated) SeSd
82763840 size:   a0 previous size:   10  (Allocated) SeSd
8278b730 size:  100 previous size:  290  (Allocated) SeSd
8278b830 size:   10 previous size:  100  (Free)      SeSd
82790130 size:   a0 previous size:   20  (Allocated) SeSd
82799180 size:   a0 previous size:   10  (Allocated) SeSd
827c00e0 size:   a0 previous size:   30  (Allocated) SeSd
827c8320 size:   a0 previous size:   60  (Allocated) SeSd
827ca180 size:   a0 previous size:   50  (Allocated) SeSd
827ec140 size:   a0 previous size:   10  (Allocated) SeSd

Searching NonPaged pool (fe7c3000 : ffbe0000) for Tag: SeSd

kd> !poolfind SeSd 1

Scanning large pool allocation table for Tag: SeSd (827d1000 : 827e9000)

Searching Paged pool (e1000000 : e4400000) for Tag: SeSd

e10000b0 size:   d0 previous size:   20  (Allocated) SeSd
e1000260 size:   d0 previous size:   60  (Allocated) SeSd
......
e1221dc0 size:   a0 previous size:   60  (Allocated) SeSd
e1224250 size:   a0 previous size:   30  (Allocated) SeSd

...terminating - searched pool to e1224000
kd> 

附加信息

关于内存池和pool tag的信息,查看Windows Driver Kit (WDK) 文档,以及Mark Russinovich 和David Solomon 编写的Microsoft Windows Internals

Build machine: CAPEBUILD