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 |
---|---|
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 . |
|
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. |
|
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 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. |
|
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. |
|
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. |
|
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
Sélectionnez votre projet de pilote (.vcxProj) dans Microsoft Visual Studio. Dans le menu Pilote , cliquez sur Lancer le vérificateur de pilote statique....
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).