Partager via


C28113

avertissement C28113 : Accès à une variable locale via une fonction Interlock

Le pilote utilise une routine exec enclenché de charge, tels que, InterlockedDecrementpour accéder à une variable locale.

Bien que les gestionnaires soient autorisés pour obtenir l'adresse d'une variable locale à une autre fonction, puis utilisent une fonction verrouillée pour traiter cette variable, il est important de vérifier que la pile ne sera pas swappé de façon inatendue sur le disque et que la variable a la durée de vie correcte pour tous les threads qui qui pourrait l'utiliser.

Exemple

En général, la valeur de retour d'une sous-routine vérrouilléé est utilisée dans les calculs suivants, au lieu des arguments d'entrée.En outre, les routines vérrouilléé protègent uniquement le premier argument (celui le plus à gauche).Utiliser une routine vérrouilléé de la façon suivante ne protège pas la valeur de la variable global et ne sert souvent à rien.

InterlockedExchange(&local, global)

La forme suivante a le même effet sur les données et accède sans risque à la variable globale.

local = InterllockedExchange(&global, global)