Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 |
|---|---|
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. |
|
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. |
|
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 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. |
|
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 à 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 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=Win32Pour 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).