Debugging Tools for Windows

!irpfind

!irpfind显示当前目标系统中已分配的,或者符合指定搜索条件的I/O请求包(IRP)的信息。

语法

Windows 2000的语法

!irpfind [PoolType [RestartAddress [Criteria Data]]] 

Windows XP和之后的语法

!irpfind [-v] [PoolType [RestartAddress [Criteria Data]]] 

参数

-v
(Windows XP和之后)显示详细信息。
PoolType
指定要搜索的池的类型。可以指定下面这些值:
0
指定非分页内存池(nonpaged memory pool)。这是默认值。
1
指定分页内存池(paged memory pool)。
2
指定特殊池(special pool)。
4
(Windows XP和之后) 指定会话池(session pool)。

RestartAddress
指定搜索开始位置的16进制地址。这在前面的搜索提前终止时有用。默认值为0。
Criteria
指定搜索条件。只有满足给定条件的IRP才会显示出来。
条件 匹配
arg 查找所有某个stack location具有等于Data的参数的IRP。
device 查找某个stack location的DeviceObject等于Data的所有IRP。
fileobject 查找Irp.Tail.Overlay.OriginalFileObject等于Data的IRP。
mdlprocess 查找Irp.MdlAddress.Process等于Data的IRP。
thread 查找Irp.Tail.Overlay.Thread等于Data的IRP。
userevent 查找Irp.UserEvent等于Data的IRP。

Data
指定搜索的匹配项。

DLL

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

注释

下面的例子查找完成时会设置FF9E4F48 用户事件的,在非分页池中的IRP:

kd> !irpfind 0 0 userevent ff9e4f48

下面的命令列出所有非分页池中的IRP:

kd> !irpfind
Searching NonPaged pool (8090c000 : 8131e000) for Tag: Irp
8097c008 Thread 8094d900 current stack belongs to  \Driver\symc810
8097dec8 Thread 8094dda0 current stack belongs to  \FileSystem\Ntfs
809861a8 Thread 8094dda0 current stack belongs to  \Driver\symc810
809864e8 Thread 80951ba0 current stack belongs to  \Driver\Mouclass
80986608 Thread 80951ba0 current stack belongs to  \Driver\Kbdclass
80986728 Thread 8094dda0 current stack belongs to  \Driver\symc810

附加信息

查看Plug and Play调试获取该扩展命令的应用。关于IRP的更多信息,查看Windows Driver Kit (WDK)文档,以及Mark Russinovich 和David Solomon编写的Microsoft Windows Internals

Build machine: CAPEBUILD