我如何确定每个设备驱动程序消耗多少内存?我假设这可以用一些Win32或.NET API完成,但是我根本无法确定哪一个.
我知道这是不平凡的.以下是密切相关问题的一些起点:
您可以通过使用VirtualQueryEx来确定PE文件,堆等使用的内存(可能不令人满意)的开始.这是一个提供Virtual memory map视图的程序.这应该回答设备驱动程序的图像大小.
更大的困难在于确定如何标记由分配它的代码动态分配的内存.最好的方法是使用像detours这样的动态内存分配来跟踪它们的动态内存分配,然后走栈来确定orginator.最后,您希望为设备驱动程序执行此操作的事实将进一步.我怀疑绕行可以用于设备驱动程序(虽然我不知道肯定).我知道从设备驱动程序走栈是非常不平凡的.
您也可以在SysInternals suite中从ProcExp获取所需的数据.运行转到“System”,转到“查看/显示”下窗格,启用Dll.然后右键单击列标题,然后添加工作集的例子. ‘WS总计’.我不知道这是做什么来正确标记他们的记忆.在我的盒子上,它给出了设备驱动程序的映射图像大小,但在工作集列中只有0K.我没有采取过程解决方案的答案作为合理的证据,解决这个问题将不会很快.
祝你好运.