Warnung C28112
Auf eine Variable (Parametername), auf die über eine verriegelte Funktion zugegriffen wird, muss immer über eine verriegelte Funktion zugegriffen werden. Siehe Zeilenzeilennummer: Es ist nicht immer sicher, auf eine Variable zuzugreifen, auf die über die Interlocked*-Familie von Funktionen auf andere Weise zugegriffen wird.
Auf eine Variable, auf die mithilfe der Interlocked Executive Support Routinen wie InterlockedCompareExchangeAcquire zugegriffen wird, wird später mithilfe einer anderen Funktion zugegriffen.
Hinweise
InterlockedXxx
Funktionen sollen Atomoperationen bereitstellen, sind aber nur atom in Bezug auf andere InterlockedXxx
Funktionen. Obwohl bestimmte gewöhnliche Zuweisungen, Zugriffe und Vergleiche mit Variablen, die von den Interlocked*-Routinen verwendet werden, sicher mithilfe einer anderen Funktion aufgerufen werden können, ist das Risiko groß genug, um die Prüfung der einzelnen Instanzen zu rechtfertigen.
Codeanalysename: INTERLOCKED_ACCESS
Beispiel
Der folgende Code generiert diese Warnung:
inter_var--;
//code
InterlockedIncrement(&inter_var);
Der folgende Code korrigiert diese Warnung durch strikten Zugriff auf inter_var
InterlockedXxx
Funktionen:
InterlockedDecrement(&inter_var);
//code
InterlockedIncrement(&inter_var);
Weitere Informationen
InterlockedIncrement-Funktion (wdm.h)
InterlockedDecrement-Funktion (wdm.h)