Dela via


Drivrutiner som stöds

För att SDV ska kunna verifiera en drivrutin måste den kunna tolka drivrutinskoden, särskilt förarens startpunkter och koden i funktioner och rutiner som stöder nödvändiga drivrutinsfunktioner.

I följande avsnitt beskrivs de grundläggande kraven för drivrutiner och den specifika syntax som SDV förväntar sig av de drivrutiner som verifieras. SDV verifierar inte att drivrutinerna uppfyller dessa krav, men om drivrutinen inte uppfyller kraven kan SDV inte köras och i sällsynta fall rapporterar den falska positiva eller falska negativa resultat på grund av feltolkning.

Viktigt!

SDV stöds inte längre och SDV är inte tillgängligt i Windows 24H2 WDK- eller EWDK-versioner. Den är inte tillgänglig i WDK:er som är nyare än version 26017 och ingår inte i Windows 24H2 RTM WDK. SDV kan fortfarande användas genom att ladda ner Windows 11, version 22H2 EWDK (släppt den 24 oktober 2023) med Visual Studio build tools 17.1.5 från Ladda ned Windows Driver Kit (WDK). Endast användning av Enterprise WDK för att köra SDV rekommenderas. Användning av äldre versioner av standard-WDK tillsammans med de senaste versionerna av Visual Studio rekommenderas inte, eftersom detta sannolikt resulterar i analysfel.
Framöver är CodeQL det primära statiska analysverktyget för drivrutiner. CodeQL tillhandahåller ett kraftfullt frågespråk som behandlar kod som en databas som ska frågas, vilket gör det enkelt att skriva frågor för specifika beteenden, mönster med mera. Mer information om hur du använder CodeQL finns i CodeQL och logotestet för statiska verktyg.

Grundläggande drivrutinskaraktäristik

SDV kan bara verifiera drivrutiner med följande egenskaper:

Grundläggande drivrutinskrav

För att SDV ska kunna verifiera en WDM-drivrutin måste drivrutinen:

För att SDV ska kunna verifiera en KMDF-drivrutin måste den:

För att SDV ska kunna verifiera en NDIS-drivrutin måste drivrutinen:

Dessutom kan SDV verifiera drivrutiner som stöder:

Namn på reserverade funktioner

SDV-verifieringsmotorn fungerar inte korrekt när drivrutinen eller bibliotekskoden använder samma funktionsnamnmönster som SDV använder internt.

Mer specifikt tolkar SDV inte kod korrekt om:

  • Koden innehåller funktionsnamn som börjar med __init och följs av ett eller flera heltal, till exempel __init123.

  • Koden innehåller funktionsnamn som börjar med sdv_, till exempel sdv_Func, eller innehåller strängen _sdv_, till exempel Func_sdv_ eller Func_sdv_foo.

  • Biblioteket använder en .def fil för att byta namn på en exporterad funktion och det externa namnet är detsamma som namnet på en annan statisk funktion i biblioteket.

Om drivrutinskoden eller bibliotekskoden innehåller dessa element försöker SDV verifiera drivrutinen eller bearbeta biblioteket, men resultatet stöds inte av funktionen (NSF).. Mer information om SDV-resultat finns i Tolka resultat för statisk drivrutinsverifierare.