Sdílet prostřednictvím


Pochopení ověřovatele statického ovladače

Pokud chcete napsat robustní ovladač, který je v souladu s modelem ovladačů Windows (WDM) nebo rozhraním KMDF (Kernel Mode Driver Framework), NDIS nebo Storport, musíte mít odborné znalosti a porozumět tomu, jak ovladač komunikuje se správcem vstupně-výstupních operací. Testování těchto ovladačů je stejně složité.

Vývoj pevných ovladačů může být náročný z následujících důvodů:

  • Ovladače jsou asynchronní, i na počítačích s jedním procesorem.

  • Ovladače jsou velmi znovuvstupné.

  • Řidiči používají mnoho nejasných pravidel.

  • Modely ovladačů jsou vývojové a v průběhu času stárnou.

Testování ovladačů zařízení je omezené následujícími důvody:

  • Pozorování. Při interakci mezi ovladačem a operačním systémem nelze pozorovat chybu. Ovladače můžou narušit implicitní pravidla použití, což vede k chybovému ukončení nebo nesprávnému chování, ale při vývoji a testování ovladačů je obtížné rozpoznat původní příčinu chyby.

  • Ovládací. Ovladače, které fungují správně za normálních okolností, můžou mít drobné chyby, ke kterým dochází pouze ve výjimečných situacích, například když ovladač pod ním v zásobníku selže s protokolem IRP. Takové situace je těžké simulovat, takže tradiční testování nedokáže adekvátně detekovat chybové cesty prostřednictvím kódu ovladače.

SDV zlepšuje jak schopnost pozorování, tak kontrolu, kterou máte během testování ovladačů. Definováním pravidel pro správné použití funkcí WDM, KMDF, NDIS a Storport a monitorováním dodržování těchto pravidel ovladače zlepšuje SDV schopnost sledovat chyby. Například pravidlo WDM LowerDriverReturn určuje, že za určitých okolností by rutina pro odesílání ovladače měla vždy vrátit hodnotu, kterou vrátil nižší ovladač ve stohu.

SDV také zvyšuje kontrolu tím, že poskytuje:

  • Nepřátelský model uživatelského prostředí, kde může nastat několik nejhorších scénářů, jako jsou neustálá selhání volání operačního systému.

  • Výkonná statická analýza (označovaná jako kontrola modelu), která systematicky zkoumá všechny možné cesty provádění v ovladači.

SDV je základní nástroj pro testování jednotek pro ovladače zařízení. Umístí ovladač do nepřátelského prostředí a systematicky testuje cesty kódu skrz ovladač hledáním porušení pravidel použití modelu ovladače.

Důležité

SDV se už nepodporuje a SDV není k dispozici ve verzích Windows 24H2 WDK nebo EWDK. Není k dispozici v wdk novější než build 26017 a není součástí windows 24H2 RTM WDK. SDV lze stále používat stažením Windows 11 verze 22H2 EWDK, vydaného 24. října 2023, s nástroji Visual Studio Build Tools 17.1.5 z Stáhnout sadu Windows Driver Kit (WDK). Doporučuje se pouze použití sady Enterprise WDK ke spuštění SDV. Použití starších verzí standardní sady WDK ve spojení s nedávnými verzemi sady Visual Studio se nedoporučuje, protože to bude pravděpodobně mít za následek selhání analýzy.
V budoucnu bude CodeQL primárním nástrojem pro statickou analýzu ovladačů. CodeQL poskytuje výkonný dotazovací jazyk, který zpracovává kód jako databázi, která se má dotazovat, což usnadňuje psaní dotazů pro konkrétní chování, vzory a další. Další informace o použití CodeQL naleznete v tématu CodeQL a Static Tools Logo Test.