Freigeben über


C28113

Warnung C28113: Zugriff auf eine lokale Variable über eine Funktion ineinandergegriffene

Der Treiber verwendet eine ineinandergegriffene Exekutivstützroutine, wie InterlockedDecrement, um auf eine lokale Variable zuzugreifen.

Obwohl Treiber zulässig, um die Adresse einer lokalen Variablen an eine andere Funktion zu übergeben und dann eine ineinandergegriffene Funktion verwenden, um diese Variable an auszuführen, ist wichtig, zu überprüfen, dass der Stapel nicht auf dem Datenträger unerwartet ausgelagert werden und dass die Variable die richtige Lebenszeit über alle Threads verfügt, die möglicherweise die Verwendung.

Beispiel

In der Regel wird der Rückgabewert einer ineinandergegriffenen Exekutivstützroutine in den folgenden Berechnungen, anstelle der Eingabeargumente verwendet.Auch die ineinandergegriffenen Routinen schützen nur das erste (ganz links) Argument.Verwenden einer ineinandergegriffenen Routine auf folgende Weise schützt nicht den Wert von globalen und dient häufig keinen Zweck.

InterlockedExchange(&local, global)

Im folgenden Formular hat die gleichen Auswirkungen auf die Daten und greift sicher auf die globale Variable zu.

local = InterllockedExchange(&global, global)