判斷 UMDF 驅動程式為何耗用過多的記憶體
警告
UMDF 2 是最新版的 UMDF,並取代 UMDF 1。 所有新的 UMDF 驅動程式都應該使用 UMDF 2 來撰寫。 未將新功能新增至 UMDF 1,而且較新版本的 Windows 10 上不支援 UMDF 1。 通用 Windows 驅動程式必須使用 UMDF 2。
封存的 UMDF 1 範例可在Windows 11 22H2 版 - 2022 年 5 月驅動程式範例更新中找到。
如需詳細資訊,請參閱使用 UMDF 消費者入門。
本主題描述如何使用 Wudfext.dll 偵錯工具延伸模組搭配 User-Mode Driver Framework (UMDF) 第 1 版驅動程式,以判斷 UMDF 驅動程式為何耗用過多的記憶體。
從 UMDF 第 2 版開始,您應該改用 Wdfkd.dll 偵錯工具延伸模組。 如需詳細資訊,請參閱 Windows Driver Framework Extensions (Wdfkd.dll) 。
若要調查記憶體使用量,請使用下列步驟:
使用 !wudfext.wudfobject UMDF 偵錯工具延伸模組來檢視物件樹狀結構中的未處理物件。
!wudfext.wudfobject延伸模組會顯示 WDF 物件的相關資訊,其中包含其父系和子關聯性。 如果您將 Flags 參數的位 0 設定為 1 (0x01) , !wudfext.wudfobject 會執行物件樹狀目錄的遞迴傾印,該轉儲會以您所傳遞的物件為根目錄。 若要檢視完整的物件樹狀結構,請使用下列範例命令:
!wudfext.wudfobject < IWDFDriver* > 1
判斷您是否看到比預期更多的未完成物件。
您的驅動程式最終可能會外泄這些物件 (,以取得有關洩漏 WDF 物件的詳細資訊,請參閱 判斷驅動程式外泄架構物件) 。
這些物件可能位於物件樹狀結構中,因此最終會釋放。 不過,它們會不必要地累積。 這些物件可能需要:
- 修正其父物件。
- 使用 IWDFObject::D eleteWdfObject 方法明確刪除。