Partager via


Ensemble de règles diverses (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.

Contenu de cette section

Rubrique Description

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 à la fin de MiniportHaltEx .

MiniportPause_Return

La règle de MiniportPause_Return spécifie que la fonction de rappel MiniportPause doit retourner uniquement NDIS_STATUS_SUCCESS si l’opération de pause est terminée, ou NDIS_STATUS_PENDING si le pilote miniport est à l’état de suspension. Tout autre status 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 se ferme

NdisQueryBindInstanceName

NdisQueryBindInstanceName alloue de la mémoire pour la chaîne qui spécifie le nom convivial. Une fois que l’appelant a terminé d’utiliser cette mémoire, l’appelant doit appeler la fonction NdisFreeMemory pour libérer la 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 sur 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 développeur Visual Studio, spécifiez Divers.sdv avec l’option /case activée. Par exemple :

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

    Pour plus d’informations, consultez Utilisation du vérificateur de pilote statique pour rechercher des défauts dans les pilotes et commandes MSBuild (Static Driver Verifier).