Partager via


Jeu de règles d’utilisation DDI (NDIS)

Utilisez ces règles pour vérifier que votre pilote utilise correctement les DDIS NDIS.

Dans cette section

Sujet Descriptif

Init_DeRegisterInterrupt

La règle Init_DeRegisterInterrupt spécifie que si NdisMRegisterInterruptEx est appelé au moins une fois pendant MPInitilize, NdisMDeregisterInterruptEx doit être appelé au moins une fois dans MPHaltEx.

Init_NdisAllocateIoWorkItem

La règle Init_NdisAllocateIoWorkItem spécifie que si NdisAllocateIoWorkItem est appelé au moins une fois pendant MiniportInitializeEx, la fonction NdisFreeIoWorkItem doit :

Init_RegisterInterrupt

La règle Init_RegisterInterrupt spécifie que l’enregistrement des interruptions, qui se produit généralement pendant l’initialisation, doit être annulé si quelque chose tourne mal dans le processus d’initialisation ou lorsqu'on interrompt le pilote miniport.

Si NdisMRegisterInterruptEx est appelé au moins une fois pendant MiniportInitializeEx, la fonction NdisMDeregisterInterruptEx doit être appelée au moins une fois dans MiniportHaltEx.

Init_RegisterSG

La règle Init_RegisterSG spécifie que l’inscription de la liste de collecte de points (SG), qui se produit généralement lors de l’initialisation, doit être annulée si un problème se produit dans le processus d’initialisation ou pendant l’arrêt du pilote miniport.

Si NdisMRegisterScatterGatherDma est appelé au moins une fois pendant MiniportInitializeEx, la fonction NdisMDeregisterScatterGatherDma doit être appelée au moins une fois dans MiniportHaltEx.

NdisFDeregisterFilterDriver

Un pilote de filtre doit appeler NdisFDeregisterFilterDriver à partir de sa routine FilterDriverUnload .

NdisMDeregisterInterruptEx

Après que NdisMDeregisterInterruptEx ait rendu le contrôle, le pilote miniport ne peut plus appeler la fonction NdisMSynchronizeWithInterruptEx .

NullCheck

La règle NullCheck vérifie qu'une valeur NULL à l'intérieur du code du pilote n'est pas déréférencée ultérieurement dans le pilote. Cette règle signale un défaut si l’une de ces conditions est vraie :

  • Il existe une affectation de NULL qui est déréférencée ultérieurement.
  • Il existe un paramètre global ou une procédure dans un pilote qui peut être NULL et qui est déréférencée ultérieurement. Il y a une vérification explicite dans le pilote qui suggère que la valeur initiale du pointeur peut être NULL.

Avec les violations de règle NullCheck, les instructions de code les plus pertinentes sont mises en surbrillance dans le volet d’arborescence de trace. Pour plus d'informations sur l'utilisation de la sortie du rapport, consultez Rapport du Vérificateur de Pilotes Statique et Comprendre la Visionneuse de Trace.

Pour sélectionner l’ensemble de règles d’utilisation DDI

  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 DDIUsage.

    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 DDIUsage.sdv avec l’option /check . Par exemple:

    msbuild /t:sdv /p:Inputs="/check:DDIUsage.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).