Udostępnij przez


Korzystanie z weryfikatora UMDF

Platforma udostępnia wbudowane funkcje weryfikacji, których można użyć do testowania działającego sterownika User-Mode Driver Framework (UMDF). Ta funkcja, czasami nazywana weryfikatorem UMDF, w szerokim zakresie weryfikuje stan sterownika i argumenty, które sterownik przekazuje do metod obiektów struktury. Weryfikator UMDF można użyć samodzielnie lub razem z narzędziem ogólnego przeznaczenia Application Verifier (AppVerif.exe).

Weryfikator UMDF sprawdza nabywanie blokad i hierarchie, weryfikuje prawidłowe anulowanie operacji we/wy i użycie kolejki oraz zapewnia, że sterownik i platforma są zgodne z udokumentowanymi kontraktami.

Weryfikator UMDF powoduje błędy w kodzie sterownika UMDF w celu sprawdzenia procesu hosta. Jednak sprawdzanie błędów UMDF nie powoduje wyświetlenia niebieskiego ekranu tekstowego z informacjami o błędzie. Zamiast tego nastąpi sprawdzenie awarii UMDF.

  • Tworzy plik zrzutu pamięci i zapisuje plik w katalogu plików dziennika komputera (na przykład %windir%\System32\LogFiles\WUDF\Xxx.dmp).

    Uwaga Począwszy od wersji UMDF 2.15, katalog dziennika jest %ProgramData%\Microsoft\WDF.

  • Tworzy raport o błędach dla firmy Microsoft (zgoda).

  • Włamuje się do debugera, jeśli jest on dołączony do komputera.

  • Przerywa proces hosta i wyłącza urządzenie.

Od wersji UMDF 2.0, weryfikator UMDF w niektórych przypadkach generuje punkty przerwania, a w innych powoduje sprawdzanie błędów UMDF. Zachowanie to jest podobne do Weryfikatora KMDF.

Zdecydowanie zalecamy wykonanie wszystkich czynności programistycznych i testowych sterownika po włączeniu weryfikatora aplikacji (AppVerif.exe) w WUDFHost.exe. Użyj następującego polecenia, dołącz debuger, a następnie uruchom ponownie.

AppVerif -enable Heaps Exceptions Handles Locks Memory TLS Leak -for WudfHost.exe

Począwszy od wersji 2.0 UMDF, jeśli uruchamiasz weryfikator aplikacji w procesie hosta sterownika (Wudfhost), weryfikator UMDF jest automatycznie włączony dla wszystkich sterowników UMDF 2.0 w tym hoście, a także wszystkich sterowników UMDF 2.0 w przyszłych procesach hosta sterowników.

W wersji UMDF 1.11 i starszych weryfikator platformy jest zawsze włączony i nie można go wyłączyć.

Włączanie i wyłączanie weryfikatora UMDF

Weryfikator UMDF można włączyć ręcznie, ustawiając VerifierOn na wartość inną niż zerowa w podkluczu Parameters\Wdf sterownika w kluczu rejestru HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services\<nazwa sterownika>.

Uwaga Samo istnienie wartości VerifierOn, nawet ustawionej na zero, zastępuje powiązanie z weryfikatorem aplikacji. W związku z tym zalecamy usunięcie wartości, jeśli jej nie wymuszasz, zamiast ustawiać ją na zero.

Aby określić, czy weryfikator UMDF jest włączony, ustaw punkt przerwania w lokalizacji po wywołaniu przez sterownik funkcji WdfDriverCreate i użyj polecenia debuggera rozszerzenia !wdfdriverinfo :

!wdfkd.wdfdriverinfo<twoja nazwa sterownika> **** 0x1

Aby uzyskać więcej informacji na temat poleceń rozszerzenia debugera, zobacz Debugger Extensions for Framework-based Drivers (Rozszerzenia debugera dla sterowników opartych na strukturze).

Kontrolowanie zachowania weryfikatora

Zachowanie weryfikatora UMDF można kontrolować, modyfikując wartości w rejestrze. Alternatywnie możesz użyć aplikacji do kontroli WDF, aby ustawić te wartości.

Następujące wartości rejestru mogą być używane ze sterownikami UMDF 1.x, a także sterownikami UMDF 2.0 i nowsze.

VerifyDownLevel (REG_DWORD)
Jeśli właściwość VerifyDownLevel jest ustawiona na wartość inną niżzerowa, a jeśli sterownik został skompilowany przy użyciu wersji starszej niż bieżąca wersja, weryfikator platformy zawiera testy dodane po skompilowania sterownika. Jeśli ta wartość nie istnieje lub jest ustawiona na zero, weryfikator struktury zawiera tylko testy, które istniały podczas kompilacji sterownika.

Jeśli na przykład sterownik został skompilowany z wersją 1.7 platformy, a wersja 1.9 platformy jest zainstalowana na komputerze, ustawienie VerifyDownLevel na wartość nonzero powoduje, że weryfikator dołącza testy dodane do wersji 1.9 weryfikatora podczas uruchamiania sterownika.

Ta wartość znajduje się w podkluczu Parameters\Wdf klucza rejestruHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services\DriverName .

TrackObjects (REG_DWORD)
Jeśli właściwość TrackObjects jest ustawiona na wartość niezerową, struktura wprowadza debuger po usunięciu sterownika, jeśli wyciekły jakiekolwiek obiekty oparte na strukturze (nie zostały usunięte).

Podczas regularnego testowania należy włączyć obiekty TrackObjects , a nie TrackRefCounts. Jeśli weryfikator zgłasza, że sterownik wycieka obiektów struktury, użyj aplikacji sterującej, aby włączyć opcję Weryfikatora TrackRefCounts .

Ta wartość znajduje się w podkluczu DefaultHostProcessGuid klucza rejestru HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services , gdzie DefaultHostProcessGuid jest wartością, którą można znaleźć w podkluczu HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF .

TrackRefCounts (REG_DWORD)
Jeśli właściwość TrackRefCounts jest ustawiona na wartość niezerową, struktura zachowuje liczbę odwołań do każdego obiektu opartego na strukturze. Możesz użyć rozszerzenia debugera !wudfrefhist , aby wyświetlić zmiany liczby odwołań obiektu.

Ustawienie parametru TrackRefCounts na wartość niezerową obniża wydajność sterownika, dlatego należy pozostawić wartość równą zero, chyba że debugujesz usterkę usuwania obiektu.

Ta wartość znajduje się w podkluczu DefaultHostProcessGuid klucza rejestru HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services , gdzie DefaultHostProcessGuid jest wartością, którą można znaleźć w podkluczu HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF .

Oprócz wartości rejestru wymienionych powyżej sterowniki UMDF 2.0 i nowszych mogą również używać wielu wartości rejestru wymienionych w temacie Korzystanie z weryfikatora KMDF.