Udostępnij za pośrednictwem


C28113

ostrzeżenie C28113: dostęp do zmiennej lokalnej za pomocą funkcji Interlocked

Sterownik używa takich jak rutynowych wsparcie kierownictwa Interlocked funkcji InterlockedDecrement, uzyskać dostęp do zmiennej lokalnej.

Chociaż sterowniki mogą przekazać adres zmiennej lokalnej do innej funkcji, a następnie użyj funkcji blokujących działania na tej zmiennej, ważne jest żeby zweryfikować, że stos nie będzie nieoczekiwanie przeniesiony z dysku, a zmienna ma poprawny czas życia dla wszystkich wątków, które mogą jej używać.

Przykład

Zazwyczaj wartość zwracana głównej procedury obsługi Interlocked jest używana do kolejnych obliczeń, zamiast wprowadzania argumentów.Ponadto procedury Interlocked chronią tylko pierwszy argument (po lewej stronie).Użycie procedury Interlocked w następujący sposób nie chroni wartości globalnych i jest często bezcelowe.

InterlockedExchange(&local, global)

Następujący formularz ma ten sam efekt dla danych i bezpiecznie uzyskuje dostęp do zmiennej globalnej.

local = InterllockedExchange(&global, global)