Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym temacie opisano, jak można znaleźć przecieki pamięci sterownika spowodowane przez nieopublikowane odwołania. Dotyczy to sterowników User-Mode Driver Framework (UMDF) w wersji 1 i 2.
UMDF 1
W UMDF wersji 1 stos wywołań może spowodować przeciek pamięci, jeśli każde wywołanie metody AddRef nie ma zgodnego wywołania Release.
Aby sprawdzić, czy sterownik UMDF w wersji 1 przecieka obiekty frameworku, wykonaj następujące kroki:
Użyj aplikacji kontrolnej WDF weryfikatora , aby ustawić żądane opcje weryfikatora. Podczas regularnego testowania zacznij od ustawienia TrackObjects, a nie TrackRefCounts.
Gdy sterownik zostanie zwolniony, weryfikator kodu platformy uruchamia debuger, jeśli obiekt struktury nie został usunięty, i zaleca użycie rozszerzenia debugera !wudfdumpobjects. To rozszerzenie debugera wyświetla listę nieukończonych obiektów.
Jeśli weryfikator kodu wskazuje, że sterownik wycieka obiektów struktury, użyj aplikacji sterującej, aby ustawić opcję TrackRefCounts.
Jeśli ta opcja jest ustawiona, weryfikator śledzi odwołania do obiektów struktury podczas uruchamiania sterownika. Można użyć rozszerzenia debugera !wudfrefhist, aby wyświetlić każdy stos wywołań (zestaw wywołań funkcji), który zwiększa lub dekrementuje liczbę odwołań obiektu. Sprawdzając wywołania AddRef i Release w tych stosach wywołań, powinieneś być w stanie znaleźć stos, który nie zmniejsza liczby odwołań obiektu, co powoduje wyciek.
Aby uzyskać informacje o dodatkowych opcjach weryfikatora, zobacz Using UMDF Verifier.
Aby uzyskać informacje o tym, kiedy usunąć obiekty struktury, zobacz Zarządzanie okresem istnienia obiektów.
UMDF 2
W UMDF w wersji 2, niezwolnione odwołania są rzadkie, ale mogą wystąpić z powodu niezgodności w wywołaniach podczas używania WdfObjectReference i WdfObjectDereference.
Aby sprawdzić, czy sterownik UMDF w wersji 2 przecieka obiekty struktury, użyj następującej procedury:
Wykonaj kroki opisane w Najlepsze Praktyki, aby skonfigurować komputer do debugowania UMDF.
Aby użyć śledzenia tagów, włącz zarówno weryfikator UMDF, jak i obsługę śledzenia w rejestrze. Oba te ustawienia są przechowywane w podkluczu parametrów sterownika\Wdf podklucza nazwy sterownika HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services\<>.
Aby włączyć weryfikator UMDF, ustaw wartość niezerową dla VerifierOn.
Aby włączyć śledzenie uchwytów, ustaw na wartość TrackHandles nazwę jednego lub więcej typów obiektów lub podaj gwiazdkę (*) do śledzenia wszystkich typów obiektów.
Możesz również zmodyfikować ustawienia weryfikatora UMDF przy użyciu aplikacji WdfVerifier.exe.
Uruchom ponownie, ustanów połączenie debugera, a następnie użyj następujących poleceń debugera:
- !wdfkd.wdfdriverinfo 0x10, aby wyświetlić hierarchię obsługi
- !wdfkd.wdftagtracker, aby wyświetlić informacje o tagu
Jeśli weryfikator UMDF jest włączony, przecieki pamięci są wykrywane podczas zwalniania sterownika, podobnie jak w usłudze KMDF.
Aby uzyskać dodatkowe informacje o korzystaniu z liczników odwołań w sterownikach KMDF i UMDF w wersji 2, zobacz Framework Object Life Cycle.