Udostępnij za pośrednictwem


Opis statycznego weryfikatora sterowników

Aby napisać niezawodny sterownik zgodny z modelem sterowników systemu Windows (WDM) lub strukturą sterowników trybu jądra (KMDF), NDIS lub Storport, musisz mieć wiedzę i zrozumieć, jak sterownik współdziała z menedżerem we/wy. Testowanie tych sterowników jest równie trudne.

Tworzenie solidnych sterowników może być trudne z następujących powodów:

  • Sterowniki są asynchroniczne, nawet na maszynach z pojedynczym procesorem.

  • Kierowcy są masowo reentrant.

  • Kierowcy używają wielu niejasnych zasad.

  • Modele sterowników są ewolucyjne i starzeją się w czasie.

Testowanie sterowników urządzeń jest ograniczone z następujących powodów:

  • Obserwacja. Nie można zaobserwować błędu w interakcji między sterownikiem a systemem operacyjnym. Sterowniki mogą naruszać niejawne reguły użycia, co powoduje awarię lub niewłaściwe zachowanie, ale trudno jest wykryć główną przyczynę błędu podczas opracowywania i testowania sterowników.

  • Sterowanie. Sterowniki, które działają prawidłowo w normalnych okolicznościach, mogą mieć subtelne błędy, które występują tylko w wyjątkowych sytuacjach, na przykład gdy sterownik poniżej niego w stosie ulegnie awarii IRP. Takie sytuacje są trudne do przeprowadzenia, więc tradycyjne testowanie nie wykrywa wystarczająco dobrze ścieżek błędów w kodzie sterownika.

SdV zwiększa zarówno obserwację, jak i kontrolę, którą masz podczas testowania kierowców. Definiując reguły odpowiedniego użycia funkcji WDM, KMDF, NDIS i Storport oraz monitorowania zgodności sterownika z tymi regułami, sdV zwiększa możliwość obserwowania błędów. Na przykład reguła WDM LowerDriverReturn określa, że w pewnych okolicznościach procedura wysyłania sterownika powinna zawsze zwracać wartość zwróconą przez niższy sterownik w stosie.

SdV zwiększa również kontrolę, zapewniając:

  • Wrogi model środowiska sterownika, w którym może wystąpić kilka najgorszych scenariuszy (takich jak wywołania systemu operacyjnego, które stale kończą się niepowodzeniem).

  • Zaawansowana analiza statyczna (nazywana sprawdzaniem modelu), która systematycznie bada wszystkie możliwe ścieżki wykonywania w sterowniku.

SDV to podstawowe narzędzie do testowania jednostkowego dla sterowników urządzeń. Umieszcza sterownik w wrogim środowisku i systematycznie testuje ścieżki kodu przez sterownik, wyszukując naruszenia reguł użycia modelu sterowników.

Ważne

SdV nie jest już obsługiwane i SDV nie jest dostępny w wersjach zestawu WDK lub EWDK systemu Windows 24H2. Nie jest on dostępny w zestawach WDK nowszych niż kompilacja 26017 i nie jest uwzględniony w zestawie WDK systemu Windows 24H2 RTM. SDV może być nadal używany po pobraniu Windows 11 w wersji 22H2 EWDK (wydanego 24 października 2023 r.) wraz z narzędziami kompilacyjnymi programu Visual Studio 17.1.5 z #B0 Pobierz zestaw sterowników systemu Windows (WDK) #A1. Zaleca się używanie Enterprise WDK do uruchamiania SDV. Używanie starszych wersji standardowego zestawu WDK w połączeniu z najnowszymi wersjami programu Visual Studio nie jest zalecane, ponieważ prawdopodobnie spowoduje to błędy analizy.
W przyszłości kodQL będzie podstawowym narzędziem do analizy statycznej sterowników. Język CodeQL udostępnia zaawansowany język zapytań, który traktuje kod jako bazę danych do odpytywania, co ułatwia pisanie zapytań dotyczących określonych zachowań, wzorców i nie tylko. Aby uzyskać więcej informacji na temat korzystania z CodeQL, zobacz CodeQL i Static Tools Logo Test.