Freigeben über


Speichernutzungsregelsatz (NDIS)

Verwenden Sie diese Regeln, um zu überprüfen, ob der Treiber NDIS-Funktionen ordnungsgemäß aufruft, um Arbeitsspeicher zuzuweisen und freizugeben.

In diesem Abschnitt

Thema BESCHREIBUNG

NdisAllocateGenericObject

Die NdisAllocateGenericObject-Regel gibt an, dass NdisAllocateGenericObject und NdisFreeGenericObject in alternativer Reihenfolge aufgerufen werden. Das ultimative Ziel ist es, sicherzustellen, dass alle generischen Objekte freigegeben werden, wenn MiniportHaltEx endet.

NdisAllocateMdl

Die NdisAllocateMdl-Regel gibt an, dass NdisAllocateMdl und NdisFreeMdl in alternativer Reihenfolge aufgerufen werden. Das ultimative Ziel ist es, sicherzustellen, dass alle MDLs freigegeben werden, wenn MiniportHaltEx endet.

NdisAllocateMemoryWithTagPriority

Die NdisAllocateMemoryWithTagPriority-Regel gibt an, dass ein Treiber NdisAllocateMemoryWithTagPriority nicht aufrufen darf, ohne ein Tag anzugeben.

Jede Speicherzuweisung sollte ein eindeutiges Pooltag verwenden, um sicherzustellen, dass Kerneldebugger und Driver Verifier einen eindeutig zugewiesenen Speicherblock identifizieren können.

NdisAllocateNetBuffer

Die NdisAllocateNetBuffer-Regel gibt an, dass NdisAllocateNetBuffer und NdisFreeNetBuffer in alternativer Reihenfolge aufgerufen werden. Das ultimative Ziel ist es, sicherzustellen, dass alle Instanzen von NET_BUFFER freigegeben werden, wenn MiniportHaltEx endet.

NdisMFreeSharedMemory

NdisMFreeSharedMemory kann nicht von einer MiniportShutdownEx-Funktion aufgerufen werden.

NdisMIndicateStatusEx

Der Treiber darf NdisMIndicateStatusEx nicht aufrufen, nachdem er von der MiniportHaltEx-Funktion zurückgegeben wird.

NdisMMapIoSpace

Die NdisMMapIoSpace-Funktion sollte nur im Kontext von MiniportInitializeEx aufgerufen werden.

NdisMRegisterIoPortRange

Ein Miniporttreiber ruft NdisMRegisterIoPortRange aus seinen MiniportInitializeEx - oder MINIPORT_ADD_DEVICE-Funktionen auf. MiniportInitializeEx oder MINIPORT_ADD_DEVICE müssen NdisMSetMiniportAttributes aufrufen, bevor NdisMRegisterIoPortRange aufgerufen wird.

So wählen Sie einen Speichernutzung-Regelsatz 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 " MemoryUsage" aus.

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

    msbuild /t:sdv /p:Inputs="/check:MemoryUsage.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).