Freigeben über


DDI-Nutzungsregelsatz (NDIS)

Verwenden Sie diese Regeln, um zu überprüfen, ob der Treiber NDIS-DDIs ordnungsgemäß verwendet.

In diesem Abschnitt

Thema BESCHREIBUNG

Init_DeRegisterInterrupt

Die Init_DeRegisterInterrupt Regel gibt an, dass NdisMRegisterInterruptEx mindestens einmal während mpInitilize aufgerufen wird, NdisMDeregisterInterruptEx mindestens einmal in MPHaltEx aufgerufen werden soll.

Init_NdisAllocateIoWorkItem

Die Init_NdisAllocateIoWorkItem Regel gibt an, dass, wenn NdisAllocateIoWorkItem mindestens einmal während MiniportInitializeEx aufgerufen wird, die Funktion NdisFreeIoWorkItem angewendet werden sollte.

Init_RegisterInterrupt

Die Init_RegisterInterrupt Regel gibt an, dass die Registrierung von Unterbrechungen, die in der Regel während der Initialisierung auftreten, rückgängig gemacht werden muss, wenn beim Initialisierungsprozess oder während des Anhaltens des Miniporttreibers etwas schief geht.

Wenn NdisMRegisterInterruptEx mindestens einmal während MiniportInitializeEx aufgerufen wird, muss die NdisMDeregisterInterruptEx-Funktion mindestens einmal in MiniportHaltEx aufgerufen werden.

Init_RegisterSG

Die „Init_RegisterSG“-Regel gibt an, dass die Registrierung der Scatter-Gather-Liste (SG), die in der Regel während der Initialisierung erfolgt, rückgängig gemacht werden muss, wenn etwas im Initialisierungsprozess oder während des Anhaltens des Miniport-Treibers schiefgeht.

Wenn NdisMRegisterScatterGatherDma mindestens einmal während MiniportInitializeEx aufgerufen wird, sollte die NdisMDeregisterScatterGatherDma-Funktion mindestens einmal in MiniportHaltEx aufgerufen werden.

NdisFDeregisterFilterDriver

Ein Filtertreiber muss NdisFDeregisterFilterDriver aus seiner FilterDriverUnload-Routine aufrufen.

NdisMDeregisterInterruptEx

Nachdem NdisMDeregisterInterruptEx die Steuerung zurückgegeben hat, kann der Miniporttreiber die NdisMSynchronizeWithInterruptEx-Funktion nicht aufrufen.

NullCheck

Die NullCheck-Regel überprüft, ob ein NULL-Wert im Treibercode später im Treiber nicht abgeleitet wird. Diese Regel meldet einen Fehler, wenn eine dieser Bedingungen zutrifft:

  • Es gibt eine Zuweisung von NULL, die später dereferenziert wird.
  • Es gibt eine globale Variable/einen Parameter für eine Prozedur in einem Treiber, die/das möglicherweise NULL sein kann und später dereferenziert wird. Der Treiber hat eine explizite Überprüfung, die darauf hindeutet, dass der anfängliche Wert des Zeigers NULL sein könnte.

Bei NullCheck-Regelverstößen werden die relevantesten Codeanweisungen im Ablaufverfolgungs-Ansichtsbereich hervorgehoben. Weitere Informationen zum Arbeiten mit der Berichtsausgabe finden Sie im Bericht "Static Driver Verifier Report" und "Understanding the Trace Viewer".

So wählen Sie den DDI-Verwendungsregelsatz aus

  1. Wählen Sie Ihr Treiberprojekt (VCXProj) in Microsoft Visual Studio aus. Klicken Sie im Menü "Treiber" auf "Statische Treiberüberprüfung starten".

  2. Klicken Sie auf die Registerkarte "Regeln". Wählen Sie unter "Regelsätze" die Option "DDIUsage" aus.

    Um den Standardregelsatz aus einem Visual Studio-Entwickler-Eingabeaufforderungsfenster auszuwählen, geben Sie DDIUsage.sdv mit der Option "/check " an. Beispiel:

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

    Weitere Informationen finden Sie unter Verwendung von Static Driver Verifier zur Fehlererkennung in Treibern und Befehle für Static Driver Verifier (MSBuild).