Avertissement C28113

Accès à une variable locale via une fonction verrouillée

Le pilote utilise une routine de support interlocked executive, telle qu’InterlockedDecrement, pour accéder à une variable locale.

Bien que les pilotes soient autorisés à transmettre l’adresse d’une variable locale à une autre fonction, puis à utiliser une fonction interblocée pour fonctionner sur cette variable, il est important de vérifier que la pile ne sera pas permutée sur le disque de manière inattendue et que la variable a le temps de vie correct sur tous les threads susceptibles de l’utiliser.

Exemple

En règle générale, la valeur de retour d'une routine de prise en charge exécutive Interlocked est utilisée dans les calculs suivants, à la place des arguments d'entrée. En outre, les routines Interlocked protègent uniquement le premier argument (le plus à gauche). L’utilisation d’une routine interblocée de la façon suivante ne protège pas la valeur du global et ne sert souvent à aucun but.

InterlockedExchange(&local, global)

La forme suivante a le même effet sur les données et accède à la variable globale en toute sécurité.

local = InterllockedExchange(&global, global)