Sdílet prostřednictvím


Různá sada pravidel (NDIS)

Pomocí těchto pravidel ověřte, že ovladač správně dodržuje obecnou sadu požadavků pro správné zpracování časovačů, operací pozastavení, klíčů, řetězců a vazeb.

V této části

Téma Popis

CancelTimerObject

Pravidlo CancelTimerObject určuje, že NdisSetTimerObject a NdisCancelTimerObject jsou volány v alternativním pořadí. Konečným cílem je zajistit, aby všechny časovače byly zrušeny, když MiniportHaltEx skončí.

MiniportPause_Return

Pravidlo MiniportPause_Return určuje, že funkce zpětného volání MiniportPause by měla vracet pouze NDIS_STATUS_SUCCESS, pokud je operace pozastavení dokončena, nebo NDIS_STATUS_PENDING, pokud je ovladač miniportu ve stavu pozastavení. Jakýkoli jiný vrácený stav je neplatný.

NdisOpenConfigurationEx

Toto pravidlo zkontroluje, že NdisOpenConfigurationEx a NdisCloseConfiguration jsou volány v alternativním pořadí. Konečným cílem je zajistit, aby se při ukončení MiniportHaltEx zavřely obslužné rutiny konfigurace.

NdisQueryBindInstanceName

NdisQueryBindInstanceName přidělí paměť pro řetězec, který určuje popisný název. Jakmile volající tuto paměť dokončí, volající musí zavolat funkci NdisFreeMemory , aby uvolnil paměť.

NdisReEnumerateProtocolBindings

Ovladače protokolu nemohou volat NdisReEnumerateProtocolBindings z kontextu funkce ProtocolBindAdapterEx nebo ProtocolUnbindAdapterEx . Ovladače protokolu také nemůžou volat NdisReEnumerateProtocolBindings z kontextu funkce ProtocolNetPnPEvent , pokud protocolBindingContext parametr ProtocolNetPnPEvent není NULL. Ovladače protokolu však mohou Volat NdisReEnumerateProtocolBindings z kontextu ProtocolNetPnPEvent , pokud ProtocolBindingContext má hodnotu NULL. Hodnota NULL ProtocolBindingContext označuje, že událost se vztahuje na všechny vazby.

PeriodicTimer

Pravidlo PeriodicTimer určuje, že volající NdisCancelTimerObject musí být spuštěn v IRQL = PASSIVE_LEVEL pokud byla v parametru MillisecondsPeriod funkce NdisSetTimerObject zadána nenulová hodnota. Pokud byl parametr MillisecondsPeriod funkce NdisSetTimerObject nulový, lze volání funkce NdisCancelTimerObject provádět na IRQL <= DISPATCH_LEVEL.

WriteErrorLog

Pravidlo WriteErrorLog určuje, že pokud je funkce NdisMAllocateSharedMemory volána ve funkci MiniportInitializeEx , ovladač by měl také NdisWriteErrorLogEntry volat, pokud přidělení selže.

Výběr sady pravidel Různé

  1. Vyberte projekt ovladače (.vcxProj) v aplikaci Microsoft Visual Studio. V nabídce Ovladač klepněte na Spustit statický ověřovatel ovladače....

  2. Klikněte na kartu Pravidla . V části Sady pravidel vyberte Různé.

    Chcete-li vybrat výchozí sadu pravidel z okna příkazového řádku pro vývojáře sady Visual Studio, zadejte ostatní.sdv s možností /check . Například:

    msbuild /t:sdv /p:Inputs="/check:Miscellaneous.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
    

    Další informace naleznete v tématu Použití statického ověřovače ovladačů k nalezení vad v ovladačích a příkazy MSBuild (Statický ověřovač ovladačů).