Freigeben über


DDI-Nutzungsregelsatz (NDIS)

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

In diesem Abschnitt

Thema BESCHREIBUNG

Init_DeRegisterInterrupt

Die Init_DeRegisterInterrupt Regel gibt an, dass NdisMDeregisterInterruptEx mindestens einmal in MPHaltEx aufgerufen werden soll, wenn NdisMDeregisterInterruptEx mindestens einmal aufgerufen wird.

Init_NdisAllocateIoWorkItem

Die Init_NdisAllocateIoWorkItem Regel gibt an, dass die NdisFreeIoWorkItem-Funktion mindestens einmal aufgerufen wird, wenn NdisAllocateIoWorkItem während MiniportInitializeEx mindestens einmal aufgerufen wird:

Init_RegisterInterrupt

Die Init_RegisterInterrupt-Regel gibt an, dass die Registrierung von Unterbrechungen, was in der Regel während der Initialisierung geschieht, rückgängig gemacht werden muss, wenn der Initialisierungsprozess oder das Anhalten des Miniporttreibers fehlschlägt.

Wenn NdisMRegisterInterruptEx während MiniportInitializeEx mindestens einmal 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, was in der Regel während der Initialisierung geschieht, rückgängig gemacht werden muss, wenn der Initialisierungsprozess oder das Anhalten des Miniporttreibers fehlschlägt.

Wenn NdisMRegisterScatterGatherDma während MiniportInitializeEx mindestens einmal 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 der folgenden Bedingungen zutrifft:

  • Es gibt eine Zuweisung von NULL, die später dereferenziert wird.
  • Es gibt einen globalen Parameter für eine Prozedur in einem Treiber, die möglicherweise NULL ist, die später abgeleitet wird, und es gibt eine explizite Überprüfung im Treiber, die darauf hindeutet, dass der Anfangswert des Zeigers NULL sein kann.

Bei NullCheck-Regelverletzungen werden die relevantesten Codeanweisungen im Ablaufverfolgungsstrukturbereich hervorgehoben. Weitere Informationen zum Arbeiten mit der Berichtsausgabe finden Sie unter Static Driver Verifier Report und Grundlegendes zum Ablaufverfolgungs-Viewer.

So wählen Sie den DDI-Nutzungsregelsatz 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ätzedie Option DDIUsage aus.

    Um den Standardregelsatz aus einem Visual Studio-Entwicklereingabeaufforderungsfenster 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 Using Static Driver Verifier to Find Defects in Drivers and Static Driver Verifier commands (MSBuild).