Partager via


Jeu de règles divers (NDIS)

Utilisez ces règles pour vérifier que votre pilote suit correctement un ensemble général d’exigences pour la gestion appropriée des minuteurs, des opérations de pause, des clés, des chaînes et des liaisons.

Dans cette section

Sujet Descriptif

CancelTimerObject

La règle CancelTimerObject spécifie que NdisSetTimerObject et NdisCancelTimerObject sont appelés dans un autre ordre. L’objectif ultime est de s’assurer que tous les minuteurs sont annulés lorsque MiniportHaltEx se termine.

MiniportPause_Return

La règle MiniportPause_Return spécifie que la fonction de rappel MiniportPause ne doit retourner que NDIS_STATUS_SUCCESS si l’opération de pause est terminée, ou NDIS_STATUS_PENDING si le pilote miniport est dans l’état de suspension. Tout autre état retourné n’est pas valide.

NdisOpenConfigurationEx

Cette règle vérifie que NdisOpenConfigurationEx et NdisCloseConfiguration sont appelés dans un autre ordre. L’objectif ultime est de s’assurer que les handles de configuration sont fermés lorsque MiniportHaltEx quitte

NdisQueryBindInstanceName

NdisQueryBindInstanceName alloue de la mémoire pour la chaîne qui spécifie le nom convivial. Après que l'appelant a fini d'utiliser cette mémoire, il doit appeler la fonction NdisFreeMemory pour libérer cette mémoire.

NdisReEnumerateProtocolBindings

Les pilotes de protocole ne peuvent pas appeler NdisReEnumerateProtocolBindings à partir du contexte des fonctions ProtocolBindAdapterEx ou ProtocolUnbindAdapterEx . En outre, les pilotes de protocole ne peuvent pas appeler NdisReEnumerateProtocolBindings à partir du contexte de la fonction ProtocolNetPnPEvent si le paramètre ProtocolBindingContext de ProtocolNetPnPEvent n’est pas NULL. Toutefois, les pilotes de protocole peuvent appeler NdisReEnumerateProtocolBindings à partir du contexte de ProtocolNetPnPEvent si ProtocolBindingContext a la valeur NULL. Une valeur NULL ProtocolBindingContext indique que l’événement s’applique à toutes les liaisons.

PeriodicTimer

La règle PeriodicTimer spécifie que l’appelant de NdisCancelTimerObject doit s’exécuter à IRQL = PASSIVE_LEVEL si une valeur différente de zéro a été spécifiée dans le paramètre MillisecondsPeriod de la fonction NdisSetTimerObject . Si le paramètre MillisecondsPeriod de la fonction NdisSetTimerObject était égal à zéro, les appelants de NdisCancelTimerObject peuvent s’exécuter à IRQL <= DISPATCH_LEVEL.

WriteErrorLog

La règle WriteErrorLog spécifie que si la fonction NdisMAllocateSharedMemory est appelée dans la fonction MiniportInitializeEx , le pilote doit également appeler NdisWriteErrorLogEntry si l’allocation échoue.

Pour sélectionner l’ensemble de règles diverses

  1. Sélectionnez votre projet de pilote (.vcxProj) dans Microsoft Visual Studio. Dans le menu Pilote , cliquez sur Lancer le vérificateur de pilote statique....

  2. Cliquez sur l’onglet Règles . Sous Ensembles de règles, sélectionnez Divers.

    Pour sélectionner l’ensemble de règles par défaut à partir d’une fenêtre d’invite de commandes du développeur Visual Studio, spécifiez Divers.sdv avec l’option /check . Par exemple:

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

    Pour plus d’informations, veuillez consulter la section Utilisation de Static Driver Verifier pour rechercher des défauts dans les pilotes et les commandes MSBuild (Static Driver Verifier).