Condividi tramite


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)