Freigeben über


Regelsatz für die Speicherauslastung (NDIS)

Verwenden Sie diese Regeln, um zu überprüfen, ob Ihr 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 besteht darin, sicherzustellen, dass alle generischen Objekte freigegeben werden, wenn MiniportHaltEx beendet wird.

NdisAllocateMdl

Die NdisAllocateMdl-Regel gibt an, dass NdisAllocateMdl und NdisFreeMdl in alternativer Reihenfolge aufgerufen werden. Das ultimative Ziel besteht darin, sicherzustellen, dass alle MDLs freigegeben werden, wenn MiniportHaltEx beendet wird.

NdisAllocateMemoryWithTagPriority

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

Jede Speicherzuweisung sollte ein eindeutiges Pooltag verwenden, um sicherzustellen, dass Kernel-Debugger und die Treiberüberprüfung einen eindeutigen zugewiesenen Speicherblock identifizieren können.

NdisAllocateNetBuffer

Die NdisAllocateNetBuffer-Regel gibt an, dass NdisAllocateNetBuffer und NdisFreeNetBuffer in alternativer Reihenfolge aufgerufen werden. Das ultimative Ziel besteht darin, sicherzustellen, dass alle Instanzen von NET_BUFFER freigegeben werden, wenn MiniportHaltEx beendet wird.

NdisMFreeSharedMemory

NdisMFreeSharedMemory kann nicht über eine MiniportShutdownEx-Funktion aufgerufen werden.

NdisMIndicateStatusEx

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

NdisMMapIoSpace

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

NdisMRegisterIoPortRange

Ein Miniporttreiber ruft NdisMRegisterIoPortRange über seine MiniportInitializeEx - oder MINIPORT_ADD_DEVICE-Funktionen auf. MiniportInitializeEx oder MINIPORT_ADD_DEVICE muss NdisMSetMiniportAttributes aufrufen, bevor NdisMRegisterIoPortRange aufgerufen wird.

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

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