Freigeben über


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)