Windows 服务:如何确定哪个库或驱动程序导致泄漏?

Windows 服务:如何确定哪个库或驱动程序导致泄漏?

我遇到了 USB 设备的内存泄漏,并试图找出 Windows 服务正在加载哪些驱动程序,以便可以联系制造商进行修复。

内存泄漏很慢(每天大约 2-3 GB 内存),所以我并不惊讶很多人没有报告它,但对我的家人来说,这是一个问题,因为它会在大约 2-3 天后导致 BSOD 崩溃或冻结。分析 BSOD 中的 Minidump 是无用的,因为它只是给出了一般的内存不足错误,而没有指向驱动程序。

使用 VMMAP 和 Process Explorer,我能够追踪从 svchost.exe 到 Windows 服务的泄漏:

WWAN  Auto Config
WwanSvc
C:\Windows\system32\svchost.exe -k LocalServiceNoNetwork

尽管 Windows 服务WWAN 自动配置与设备类型一致,它并不具体指向实际驱动程序。我可以重新启动服务并让它释放内存,前提是它没有超过某个阈值(服务在释放内存之前超时)。

有没有一种简单的方法可以跟踪或查看此服务加载的 DLL 和驱动程序,以便我可以显示它已链接到设备,以避免说一些无聊的话,例如“当我插入它时就会发生这种情况。”??

相关内容