Freigeben über


Warnung C28113

Zugreifen auf eine lokale Variable über eine Interlocked-Funktion.

Der Treiber verwendet eine interlocked Executive Support Routine, z . B. InterlockedDecrement, um auf eine lokale Variable zuzugreifen.

Obwohl Treiber die Adresse einer lokalen Variablen an eine andere Funktion übergeben dürfen und dann eine verriegelte Funktion zum Arbeiten mit dieser Variablen verwenden können, ist es wichtig zu überprüfen, ob der Stapel nicht unerwartet auf den Datenträger ausgetauscht wird und dass die Variable die richtige Lebensdauer für alle Threads aufweist, die sie möglicherweise verwenden.

Beispiel

In der Regel wird der Rückgabewert einer stützenden Interlocked-Ausführungsroutine in nachfolgenden Berechnungen anstelle der Eingabeargumente verwendet. Darüber hinaus schützen die Interlocked-Routinen nur das erste Argument (ganz links). Die Verwendung einer interlocked Routine auf die folgende Weise schützt nicht den Wert globaler und dient häufig keinem Zweck.

InterlockedExchange(&local, global)

Das folgende Format hat dieselbe Wirkung auf die Daten und greift sicher auf die globale Variable zu.

local = InterllockedExchange(&global, global)