Debugging Tools for Windows

!icpleak

!icpleak扩展在系统中查找队列中条目个数最大的I/O completion对象。

语法

!icpleak [HandleFlag

参数

HandleFlag
如果设置了该标志,则还会显示拥有该最大的队列条目个数的对象句柄的所有进程。

DLL

Windows 2000 不可用
Windows XP和之后 Kdexts.dll

注释

该扩展在I/O completion池存在泄漏的情况下很有用。I/O completion pool 泄露在进程调用PostQueuedCompletionStatus分配I/O completion packet,但是又没有调用GetQueuedCompletionStatus来释放,或者进程将completion entries排队到某个端口,但是又没有任何线程会取出这些entries时就会发生。通过运行!poolused扩展并且检查ICP pool tag的值来发现泄露。如果有使用ICP tag的池(pool),那么就可能发生了泄露。

该扩展只有在系统维护了类型列表(type lists)时才能工作。如果设置了HandleFlag并且系统中有很多进程,则可能需要运行很长时间。

可以按下CTRL+BREAK (WinDbg中) 或者CTRL+C (KD中)来中止命令。

附加信息

关于I/O完成端口( I/O completion port)的信息,查看Mark Russinovich 和David Solomon编写的Microsoft Windows Internals

Build machine: CAPEBUILD