C28167
avertissement C28167 : la fonction modifie l’IRQL et ne restaure pas l’IRQL avant sa sortie. Il doit être annoté pour refléter la modification ou l’IRQL doit être restauré.
Cet avertissement indique que les conditions suivantes sont remplies :
La fonction modifie l’IRQL auquel le pilote est en cours d’exécution.
Il existe au moins un chemin via une fonction qui ne restaure pas l’IRQL à l’IRQL d’origine que le pilote exécutait à l’entrée de la fonction.
Cet avertissement se produit lorsqu’une annotation IRQL sur une fonction est requise, mais qu’il n’en existe pas.
Pour éviter cet avertissement, le pilote doit enregistrer correctement la valeur IRQL initiale et restaurer la même valeur IRQL à la sortie de la fonction s’il n’avait pas l’intention de modifier l’IRQL.
Les fonctions qui modifient intentionnellement l’IRQL en une valeur différente de l’IRQL à laquelle le pilote s’exécutait à l’entrée de fonction doivent être annotées pour indiquer ce comportement. Par exemple, vous pouvez utiliser l’annotation _IRQL_raises_(irql) pour indiquer que la fonction change l’IRQL de l’IRQL à laquelle la fonction a été appelée. Vous pouvez également enregistrer et restaurer la valeur IRQL et appliquer les annotations correspondantes (_IRQL_saves_, _IRQL_restores_). L’annotation supprime cet avertissement. Pour plus d’informations, consultez Annotations IRQL pour les pilotes. Les fonctions qui modifient l’IRQL par erreur doivent être corrigées.