如何確定每個設備驅動程序正在消耗多少內存?我假設這可以使用一些Win32或.NET API來完成,但我只是無法確定哪一個。在Windows中測量設備驅動程序的內存使用
回答
我知道這是不平凡的。這裏有一些出發點密切相關的問題:
你可以得到一個(可能不理想)通過使用VirtualQueryEx來確定PE文件,堆等所使用的內存從這裏開始是一個程序,它提供Virtual memory map視圖。這應該回答設備驅動程序的圖像大小。
更大的困難是確定如何標記由分配它的代碼動態分配的內存。最好的方法是使用像detours這樣的東西來跟蹤動態內存分配,因爲它們是製作的,然後走棧以確定組件。最後,您希望爲設備驅動程序執行此操作的事實需要更進一步。我懷疑繞道可以用於設備驅動程序(雖然我不知道肯定)。我知道從設備驅動程序中走棧非常重要。
您可能也可以在SysInternals suite中從ProcExp獲取所需的數據。運行它轉到'系統',轉到查看/顯示下部窗格,啓用Dll的。然後右鍵單擊列標題並添加工作集的標題,例如'WS Total'。我不確定這會如何正確標記它們的內存。在我的盒子上,它給了他們映射設備驅動程序的映像大小,但在工作集列中只有0K。我認爲procexp缺乏答案作爲合理的證據表明解決這個問題不會很快。
祝你好運。
Windows使用池標記跟蹤設備驅動程序的內存使用情況。如果你知道什麼是池標記有問題的驅動程序傳遞到ExAllocatePoolWithTag
,那麼你就可以使用工具,如poolmon
(從Windows驅動程序工具包),PoolTag(從OSR),或WinDbg (or KD)跟蹤它的內存使用(從Windows調試工具) 。
請注意,設備驅動程序可能會調用間接分配內存的內核API。例如,調用IoAllocateMdl
將導致Windows I/O管理器使用由Windows I/O管理器分配的不同池標籤爲內存描述符列表分配內存。因此,代表多個設備驅動程序執行的分配可能都使用相同的池標記。
如果您試圖確定哪個驅動程序正在泄漏內存,請使用poolmon/PoolTag/WinDbg/KD標識正在泄露的池標記。然後,將內核調試程序(WinDbg或KD)附加到系統,並將變量nt!poolhittag
設置爲泄漏池標記。下次調用ExAllocatePoolWithTag
來分配帶有該池標籤的內存時,系統將進入內核調試程序,然後您可以查看調用堆棧以確定哪個驅動程序正在執行分配。這個過程在Using the Kernel Debugger to Find a Kernel-Mode Memory Leak中有更詳細的描述。
這是正確的答案。 如果你想跟蹤單個驅動程序,該程序的檢驗「可能會幫助你更容易,只需撥打「verifier.exe」在命令提示符下。有了這個工具,你可以跟蹤一個驅動程序。 – Christopher 2009-07-16 14:09:13
- 1. Windows設備驅動程序
- 2. Windows設備驅動程序與VB.Net
- 3. 平臺設備/驅動程序vs i2c設備/驅動程序
- 4. 的Windows硬件/設備驅動程序報告/庫存
- 5. 如何測試Windows設備驅動程序
- 6. 如何在Windows中讀取設備驅動程序的狀態?
- 7. 設備驅動程序在linux中
- 8. Wince設備驅動程序
- 9. Linux設備驅動程序
- 10. scull設備驅動程序
- 11. 使用舊設備文件的字符設備驅動程序
- 12. Linux中設備驅動程序檢測的過程
- 13. 在註冊表中刪除Windows驅動程序設備類
- 14. 在Windows中使用TUN驅動程序
- 15. Ubislate 7ci驅動程序使用adb設備列出設備
- 16. Beaglebone使用設備樹文件追蹤設備驅動程序
- 17. Android設備驅動程序使節點
- 18. 用於Windows CE 5.0的CDC/ACM設備驅動程序
- 19. Windows 7域用戶的設備驅動程序訪問權限
- 20. 可以阻止設備驅動程序成爲字符設備驅動程序
- 21. USb驅動程序Windows移動設備的文檔掃描儀
- 22. 如何在linux中創建內置設備驅動程序
- 23. 在設備驅動程序中使用stdlib.h
- 24. 在設備驅動程序中使用select()/ poll()
- 25. 測量某個Linux驅動程序模塊的內存使用情況
- 26. 如何使用android/linux電源驅動程序註冊設備驅動程序?
- 27. 如何在Windows CE設備驅動程序中將調用方內存映射到XXX_IOControl調用結束之後?
- 28. 設備驅動程序vs驅動程序堆棧
- 29. windows設備驅動程序中pdo和fdo有什麼區別?
- 30. 在Windows XP上靜默安裝設備驅動程序
這太棒了! Process Explorer再次通過。雖然工作集數據只是0,但可以獲得物理內存基址和映射大小,這是朝着正確方向邁出的一大步。 – 2008-12-27 23:57:44