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 디버거 확장을 UMDF(User-Mode Driver Framework) 버전 1 드라이버와 함께 사용하여 UMDF 드라이버가 과도한 양의 메모리를 사용하는 이유를 확인하는 방법을 설명합니다.

UMDF 버전 2부터 Wdfkd.dll 디버거 확장을 대신 사용해야 합니다. 자세한 내용은 Windows 드라이버 프레임워크 확장(Wdfkd.dll)을 참조하세요.

메모리 사용량을 조사하려면 다음 단계를 사용합니다.

  1. !wudfext.wudfobject UMDF 디버거 확장을 사용하여 개체 트리에서 미해결 개체를 봅니다.

    !wudfext.wudfobject 확장은 부모 및 자식 관계를 포함하는 WDF 개체에 대한 정보를 표시합니다. Flags 매개 변수의 비트 0을 1(0x01)으로 설정하면 !wudfext.wudfobject는 전달한 개체에 루팅된 개체 트리의 재귀 덤프를 수행합니다. 전체 개체 트리를 보려면 다음 예제 명령을 사용합니다.

    !wudfext.wudfobject <IWDFDriver*> 1

  2. 예상보다 더 많은 미해결 개체가 표시되는지 확인합니다.

    드라이버가 결국 이러한 개체를 누설할 수 있습니다(WDF 개체 누수에 대한 자세한 내용은 드라이버가 프레임워크 개체를 누수하는지 확인 참조).

    이러한 개체는 개체 트리에 있을 수 있으므로 결국 해제됩니다. 그러나 불필요하게 누적되고 있습니다. 이러한 개체에는 다음이 필요할 수 있습니다.