Compartir a través de


Advertencia C28112

Siempre se debe tener acceso a una variable (nombre de parámetro) a la que se accede a través de una función interbloqueada a través de una función interbloqueada. Vea line-number (Número de línea de línea): no siempre es seguro acceder a una variable a la que se accede a través de la familia interbloqueada* de funciones de cualquier otra manera.

El acceso a una variable que normalmente se realiza mediante las rutinas de soporte técnico ejecutivo Interlocked, como InterlockedCompareExchangeAcquire, tiene lugar posteriormente mediante una función diferente.

Comentarios

InterlockedXxx Las funciones están diseñadas para proporcionar operaciones atómicas, pero solo son atómicas con respecto a otras InterlockedXxx funciones. Aunque se puede acceder a determinadas asignaciones, accesos y comparaciones con variables normales donde se usan las rutinas Interlocked* mediante una función diferente, el riesgo es lo suficientemente grande como para justificar el examen de cada instancia.

Nombre de análisis de código: INTERLOCKED_ACCESS

Ejemplo

El código siguiente genera esta advertencia:

inter_var--;
//code
InterlockedIncrement(&inter_var);

El código siguiente corrige esta advertencia mediante el acceso estricto a través inter_var de InterlockedXxx funciones:

InterlockedDecrement(&inter_var);
//code
InterlockedIncrement(&inter_var);

Consulte también

Función InterlockedIncrement (wdm.h)
Función InterlockedDecrement (wdm.h)