Sdílet prostřednictvím


Sada pravidel použití DDI (WDM)

Pomocí těchto pravidel ověřte, že ovladač správně používá rozhraní WDM DDI.

V této části

Téma Popis

DebugBreakUsage

Pravidlo DebugBreakUsage určuje, že ovladač nesmí volat DbgBreakPoint nebo DbgBreakPointWithStatus. Toto pravidlo platí jenom v případě, že vytváříte nedeugovací verzi ovladače.

DoubleFetch

Pravidlo DoubleFetch kontroluje dvojité načtení z ukazatelů paměti v uživatelském režimu. Přístup k paměti uživatelského režimu v režimu dvojitého jádra může vést k problému se zabezpečením stavu časování. Při přístupu k datům uživatelského režimu musí kód režimu jádra vytvořit kopii dat uživatelského režimu místně a vyhnout se vícenásobnému přístupu k datům uživatelského režimu. Pokud to neuděláte, výsledkem je typ problému označovaného jako "dvojité načtení", kdy se data můžou po prvním přístupu změnit.

NullCheck

Pravidlo NullCheck ověřuje, že hodnota NULL uvnitř kódu ovladače není později v ovladači dereferencována. Toto pravidlo hlásí vadu, pokud je splněná některé z těchto podmínek:

  • Existuje přiřazení hodnoty NULL, které je později dereferencováno.
  • V ovladači existuje globální proměnná/parametr procedury, který může mít hodnotu NULL a je později dereferencován. V ovladači je explicitní kontrola, která naznačuje, že počáteční hodnota ukazatele může být NULL.

V případě porušení pravidel NullCheck jsou v podokně stromu trasování zvýrazněny nejrelevantnější příkazy kódu. Další informace o práci s výstupem sestavy naleznete v tématu Static Driver Verifier Report a Understanding the Trace Viewer.

Bezpečné řetězce

Pravidlo SafeStrings určuje, že ovladač volá pouze funkce pro manipulaci s řetězci, které chrání systém před neúmyslným nebo škodlivým neoprávněným vniknutím. Tyto bezpečné řetězcové funkce pro ovladače jsou definovány v ntstrsafe.h.

Zastaralé DDI

Pravidlo ObsoleteDDIs určuje, že ovladače by neměly volat FsRtlPrivateLock. Tato funkce je zastaralá. Místo toho použijte FsRtlFastLock .

Výběr sady pravidel využití DDI

  1. Vyberte projekt ovladače (.vcxProj) v aplikaci Microsoft Visual Studio. V nabídce Ovladač klepněte na Spustit statický ověřovatel ovladače....

  2. Klikněte na kartu Pravidla . V části Sady pravidel vyberte DDIUsage.

    Pokud chcete vybrat výchozí sadu pravidel z okna příkazového řádku pro vývojáře sady Visual Studio, zadejte DDIUsage.sdv s možností /check . Například:

    msbuild /t:sdv /p:Inputs="/check:DDIUsage.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
    

    Další informace naleznete v tématu Použití statického ověřovače ovladačů k nalezení vad v ovladačích a příkazy MSBuild (Statický ověřovač ovladačů).