Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Aby SDV ověřil ovladač, musí být schopen interpretovat kód ovladače, konkrétně vstupní body ovladače a kód ve funkcích a rutinách, které podporují požadované funkce ovladače.
Následující části popisují základní požadavky na ovladače a konkrétní syntaxi, kterou SDV očekává od ovladačů, které ověřuje. SDV neověřuje, že ovladače splňují tyto požadavky, ale pokud ovladač nevyhovuje, nemusí se SDV spustit a ve výjimečných situacích může hlásit falešně pozitivní nebo falešně negativní výsledky kvůli chybné interpretaci.
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.
Základní charakteristiky ovladače
SDV dokáže ověřit pouze ovladače s následujícími vlastnostmi:
SDV ověřuje ovladače a knihovny napsané v jazyce C a C++.
SDV provádí úplné ověření pouze u ovladačů zařízení kompatibilních se standardem KMDF a WDM (ovladače funkcí, ovladače filtru a ovladače sběrnice), ovladače NDIS (filtr, miniport a ovladače protokolu) a ovladače storportu.
SDV se pokouší omezit ověření obecných vlastností (například NullCheck) u ovladačů, které se nevejdou do výše uvedených kategorií.
SDV může ověřit ovladače WDM, které deklarují funkce zpětného volání ovladače pomocí typů rolí funkcí WDM. Informace o deklarování funkcí naleznete v tématu Deklarování funkcí pomocí typů rolí funkcí pro ovladače WDM.
SDV může ověřit ovladače vytvořené z rozhraníKernel-Mode Driver Framework za předpokladu, že deklarujete každou funkci zpětného volání pomocí typu role funkce zpětného volání SDV-KMDF. Další informace naleznete v tématu Deklarování funkcí pomocí typů rolí funkcí pro ovladače KMDF.
SDV může ověřit ovladače NDIS, pokud označíte každou funkci zpětného volání pomocí deklarace funkce s typem zpětného volání SDV-NDIS. Další informace naleznete v tématu Deklarování funkcí pomocí typů rolí funkcí pro ovladače NDIS.
SDV může ověřit ovladače Storport za předpokladu, že každou funkci zpětného volání označíte deklarací funkce. Provedete to použitím typu funkce zpětného volání SDV-Storport. Další informace naleznete v tématu Deklarování funkcí pomocí typů rolí funkcí pro ovladače Storport.
Základní požadavky na ovladač
Aby SDV ověřil ovladač WDM, musí ovladač:
Zahrnout Wdm.h nebo Ntddk.h (Wdm.h je podmnožina Ntddk.h).
Pomocí metod popsaných v úvodu k objektům zařízení a následujícím způsobem vytvořte objekty zařízení.
Mějte rutinu Unload napsanou podle doporučení v Writing an Unload Routine.
Deklarujte každou funkci dispatch pomocí deklarace typu role funkce popsané v tématu Použití deklarací typu role funkce. Informace o typech rolí WDM a poznámkách k _Dispatch_type_ (typů) naleznete v tématu Deklarování funkcí pomocí typů rolí funkcí pro ovladače WDM.
Aby SDV ověřil ovladač KMDF, musí ovladač:
Zahrňte Wdf.h a Ntddk.h.
Vytvořte objekty KMDF popsané v části Použití rozhraní k vývoji ovladače.
Jednotlivé funkce zpětného volání můžete komentovat pomocí typu role zpětného volání SDV-KMDF popsaného v tématu Použití deklarací typu role funkce. Seznam podporovaných typů rolí najdete v tématu Static Driver Verifier KMDF Function Declarations.
Aby SDV ověřil ovladač NDIS, musí ovladač:
Zahrňte Ndis.h a Ntddk.h.
Při vytváření ovladačů NDIS postupujte podle pokynů v průvodci návrhem sítě.
Jednotlivé funkce zpětného volání můžete komentovat pomocí typu role funkce zpětného volání SDV-NDIS, jak je popsáno v tématu Použití deklarací typu role funkce. Seznam podporovaných typů rolí najdete v tématu Deklarace funkcí NDIS statického ovladače.
Kromě toho může SDV ověřit ovladače, které podporují:
Názvy rezervovaných funkcí
Ověřovací modul SDV nefunguje správně, pokud kód ovladače nebo knihovny používá stejné vzory názvů funkcí, které SDV používá interně.
SDV konkrétně neinterpretuje správně kód, pokud:
Kód obsahuje názvy funkcí začínající __init a za nimi následuje jedno nebo více celých čísel, například __init123.
Kód obsahuje názvy funkcí, které začínají sdv_, například sdv_Func, nebo obsahují řetězec _sdv_, například Func_sdv_ nebo Func_sdv_foo.
Knihovna používá
.defsoubor k přejmenování exportované funkce a externí název je stejný jako název jiné statické funkce v knihovně.
Pokud kód ovladače nebo kód knihovny tyto prvky obsahuje, pokusí se SDV ověřit ovladač nebo zpracovat knihovnu, ale výsledek není podporovaná funkce (NSF). Další informace o výsledcích SDV naleznete v tématu Interpretace výsledků ověření statického ovladače.