Sdílet prostřednictvím


Sada pravidel použití DDI (NDIS)

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

V této části

Téma Popis

Init_DeRegisterInterrupt

Pravidlo Init_DeRegisterInterrupt určuje, že pokud je během funkce MPInitilize alespoň jednou volána NdisMRegisterInterruptEx, mělo by být alespoň jednou voláno NdisMDeregisterInterruptEx v MPHaltEx.

Init_NdisAllocateIoWorkItem

Pravidlo Init_NdisAllocateIoWorkItem určuje, že pokud je NdisAllocateIoWorkItem volána alespoň jednou během MiniportInitializeEx, funkce NdisFreeIoWorkItem by měla:

Init_RegisterInterrupt

Pravidlo Init_RegisterInterrupt určuje, že registrace přerušení, ke kterým obvykle dochází během inicializace, musí být vrácena zpět, pokud dojde k nějaké chybě v procesu inicializace nebo během zastavení ovladače miniportu.

Pokud NdisMRegisterInterruptEx je volána alespoň jednou během MiniportInitializeEx, musí být funkce NdisMDeregisterInterruptEx volána alespoň jednou v MiniportHaltEx.

Init_RegisterSG

Pravidlo Init_RegisterSG určuje, že registrace seznamu bodového shromáždění (SG), ke kterému obvykle dochází během inicializace, musí být vrácena zpět, pokud dojde k nějaké chybě v procesu inicializace nebo při zastavení ovladače miniportu.

Pokud je NdisMRegisterScatterGatherDma volána alespoň jednou během MiniportInitializeEx, měla by se funkce NdisMDeregisterScatterGatherDma volat alespoň jednou v MiniportHaltEx.

NdisFDeregisterFilterDriver

Ovladač filtru musí z rutiny FilterDriverUnload volat NdisFDeregisterFilterDriver.

NdisMDeregisterInterruptEx

Jakmile NdisMDeregisterInterruptEx vrátí řízení, miniportový ovladač nemůže volat funkci NdisMSynchronizeWithInterruptEx.

NullCheck

Pravidlo NullCheck ověřuje, zda hodnota NULL uvnitř kódu ovladače není později 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.

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čů).