Avviso C28112
È necessario accedere a una variabile (parameter-name) accessibile tramite una funzione interlocked tramite una funzione interlocked. Vedere il numero di riga: non è sempre sicuro accedere a una variabile a cui si accede tramite la famiglia di funzioni Interlocked* in altro modo.
Una variabile a cui si accede tramite le routine di supporto esecutivo interlocked, ad esempio InterlockedCompareExchangeAcquire, viene successivamente accessibile tramite una funzione diversa.
Osservazioni:
InterlockedXxx
le funzioni sono destinate a fornire operazioni atomiche, ma sono atomiche solo rispetto ad altre InterlockedXxx
funzioni. Anche se alcune assegnazioni, accessi e confronti con le variabili usate dalle routine Interlocked* possono essere accessibili in modo sicuro usando una funzione diversa, il rischio è sufficientemente elevato da giustificare l'esame di ogni istanza.
Nome dell'analisi del codice: INTERLOCKED_ACCESS
Esempio
Il codice seguente genera questo avviso:
inter_var--;
//code
InterlockedIncrement(&inter_var);
Il codice seguente corregge questo avviso accedendo inter_var
rigorosamente tramite InterlockedXxx
funzioni:
InterlockedDecrement(&inter_var);
//code
InterlockedIncrement(&inter_var);
Vedi anche
Funzione InterlockedIncrement (wdm.h)
Funzione InterlockedDecrement (wdm.h)