Freigeben über


Verschiedene Regelsätze (NDIS)

Verwenden Sie diese Regeln, um zu überprüfen, ob Ihr Treiber einen allgemeinen Satz von Anforderungen für die ordnungsgemäße Behandlung von Zeitgebern, Pausenvorgängen, Schlüsseln, Zeichenfolgen und Bindungen erfüllt.

In diesem Abschnitt

Thema BESCHREIBUNG

CancelTimerObject

Die CancelTimerObject-Regel gibt an, dass NdisSetTimerObject und NdisCancelTimerObject in alternativer Reihenfolge aufgerufen werden. Das ultimative Ziel ist es, sicherzustellen, dass alle Timer abgebrochen werden, wenn MiniportHaltEx endet.

MiniportPause_Return

Die MiniportPause_Return Regel gibt an, dass die MiniportPause-Rückruffunktion nur NDIS_STATUS_SUCCESS zurückgeben soll, wenn der Pausenvorgang abgeschlossen ist, oder NDIS_STATUS_PENDING, wenn sich der Miniporttreiber im anhaltenden Zustand befindet. Ein anderer zurückgegebener Status ist ungültig.

NdisOpenConfigurationEx

Diese Regel überprüft, ob NdisOpenConfigurationEx und NdisCloseConfiguration in alternativer Reihenfolge aufgerufen werden. Das ultimative Ziel ist es, sicherzustellen, dass Konfigurationshandles geschlossen werden, wenn MiniportHaltEx beendet wird.

NdisQueryBindInstanceName

NdisQueryBindInstanceName weist Speicher für die Zeichenfolge zu, die den Anzeigenamen angibt. Nachdem der Aufrufer diesen Speicher verwendet hat, muss der Aufrufer die NdisFreeMemory-Funktion aufrufen, um den Speicher freizugeben.

NdisReEnumerateProtocolBindings

Protokolltreiber können NdisReEnumerateProtocolBindings nicht aus dem Kontext der ProtocolBindAdapterEx - oder ProtocolUnbindAdapterEx-Funktionen aufrufen. Außerdem können Protokolltreiber NdisReEnumerateProtocolBindings nicht aus dem Kontext der ProtocolNetPnPEvent-Funktion aufrufen, wenn der ProtocolBindingContext-Parameter von ProtocolNetPnPEvent nicht NULL ist. Protokolltreiber können jedoch NdisReEnumerateProtocolBindings aus dem Kontext von ProtocolNetPnPEvent aufrufen, wenn ProtocolBindingContext NULL ist. Ein NULL ProtocolBindingContext-Wert gibt an, dass das Ereignis für alle Bindungen gilt.

PeriodischTimer

Die Regel "PeriodTimer" gibt an, dass der Aufrufer von NdisCancelTimerObject bei IRQL = PASSIVE_LEVEL ausgeführt werden muss, wenn ein Wert ungleich Null im MillisecondsPeriod-Parameter der NdisSetTimerObject-Funktion angegeben wurde. Wenn der MillisecondsPeriod-Parameter der NdisSetTimerObject-Funktion null war, können Aufrufer von NdisCancelTimerObject unter IRQL <= DISPATCH_LEVEL ausgeführt werden.

WriteErrorLog

Die WriteErrorLog-Regel gibt an, dass der Treiber NdisWriteErrorLogEntry aufrufen soll, wenn die NdisMAllocateSharedMemory-Funktion in der MiniportInitializeEx-Funktion aufgerufen wird und die Zuweisung fehlschlägt.

So wählen Sie den Regelsatz „Verschiedenes“ 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" "Sonstiges" aus.

    Wenn Sie den Standardregelsatz aus einem Visual Studio-Entwickler-Eingabeaufforderungsfenster auswählen möchten, geben Sie "Miscellaneous.sdv " mit der Option "/check " an. Beispiel:

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