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 Timern, Pausenvorgängen, Schlüsseln, Zeichenfolgen und Bindungen ordnungsgemäß erfüllt.
In diesem Abschnitt
Thema | BESCHREIBUNG |
---|---|
Die CancelTimerObject-Regel gibt an, dass NdisSetTimerObject und NdisCancelTimerObject in alternativer Reihenfolge aufgerufen werden. Das ultimative Ziel besteht darin, sicherzustellen, dass alle Timer abgebrochen werden, wenn MiniportHaltEx beendet wird. |
|
Die MiniportPause_Return-Regel gibt an, dass die Rückruffunktion MiniportPause nur NDIS_STATUS_SUCCESS zurückgeben soll, wenn der Pausenvorgang abgeschlossen ist, oder NDIS_STATUS_PENDING, wenn sich der Miniporttreiber im angehaltenen Zustand befindet. Jeder andere zurückgegebene Status ist ungültig. |
|
Mit dieser Regel wird überprüft, ob NdisOpenConfigurationEx und NdisCloseConfiguration in alternativer Reihenfolge aufgerufen werden. Das ultimative Ziel besteht darin, sicherzustellen, dass Konfigurationshandles geschlossen werden, wenn MiniportHaltEx beendet wird. |
|
NdisQueryBindInstanceName weist Arbeitsspeicher für die Zeichenfolge zu, die den Anzeigenamen angibt. Nachdem der Aufrufer die Verwendung dieses Speichers abgeschlossen hat, muss der Aufrufer die NdisFreeMemory-Funktion aufrufen, um den Arbeitsspeicher freizugeben. |
|
Protokolltreiber können NdisReEnumerateProtocolBindings nicht im Kontext der Funktionen ProtocolBindAdapterEx oder ProtocolUnbindAdapterEx aufrufen. Außerdem können Protokolltreiber NdisReEnumerateProtocolBindings aus dem Kontext der ProtocolNetPnPEvent-Funktion nicht 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. |
|
Die PeriodicTimer-Regel gibt an, dass der Aufrufer von NdisCancelTimerObject unter IRQL = PASSIVE_LEVEL ausgeführt werden muss, wenn im MillisecondsPeriod-Parameter der NdisSetTimerObject-Funktion ein Wert ungleich null angegeben wurde. Wenn der MillisecondsPeriod-Parameter der NdisSetTimerObject-Funktion null war, können Aufrufer von NdisCancelTimerObject unter IRQL <= DISPATCH_LEVEL ausgeführt werden. |
|
Die WriteErrorLog-Regel gibt an, dass der Treiber auch NdisWriteErrorLogEntry aufrufen soll, wenn die NdisMAllocateSharedMemory-Funktion in der MiniportInitializeEx-Funktion aufgerufen wird, wenn die Zuordnung fehlschlägt. |
So wählen Sie den Regelsatz Verschiedenes aus
Wählen Sie Ihr Treiberprojekt (VCXProj) in Microsoft Visual Studio aus. Klicken Sie im Menü Treiber auf Statische Treiberüberprüfung starten....
Klicken Sie auf die Registerkarte Regeln . Wählen Sie unter Regelsätzedie Option Verschiedenes aus.
Um den Standardregelsatz aus einem Visual Studio-Entwicklereingabeaufforderungsfenster auszuwählen, 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 Using Static Driver Verifier to Find Defects in Drivers and Static Driver Verifier commands (MSBuild).