当前位置:  开发笔记 > 开发工具 > 正文

测量Windows中设备驱动程序的内存使用情况

如何解决《测量Windows中设备驱动程序的内存使用情况》经验,为你挑选了1个好方法。

如何确定每个设备驱动程序消耗的内存量?我假设这可以使用一些Win32或.NET API完成,但我只是无法确定哪个.



1> bk1e..:

Windows使用池标记跟踪设备驱动程序内存使用情况 如果您知道有问题的驱动程序传递给哪些池标记ExAllocatePoolWithTag,那么您可以使用诸如poolmon(来自Windows驱动程序工具包),PoolTag(来自OSR)或WinDbg(或KD)(来自调试工具)等工具来跟踪其内存使用情况.视窗).

请注意,设备驱动程序可能会调用间接分配内存的内核API.例如,调用IoAllocateMdl将使Windows I/O管理器使用由Windows I/O管理器分配的不同池标记为内存描述符列表分配内存.因此,代表多个设备驱动程序执行的分配可能都使用相同的池标记.

如果您正在尝试确定哪个驱动程序正在泄漏内存,请使用poolmon/PoolTag/WinDbg/KD标识正在泄漏的池标记.然后将内核调试器(WinDbg或KD)附加到系统并将变量nt!poolhittag设置为漏池标记.下一次ExAllocatePoolWithTag调用为该池标记分配内存,系统将进入内核调试器,然后您可以查看调用堆栈以确定哪个驱动程序正在执行分配.在使用内核调试器查找内核模式内存泄漏中更详细地描述了此过程.

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有