Advertencia C28113

Accediendo a una variable local mediante una función Interlocked

El controlador usa una rutina de soporte ejecutivo Interlocked, como InterlockedDecrement, para acceder a una variable local.

Aunque los controladores pueden pasar la dirección de una variable local a otra función y, a continuación, usar una función interbloqueada para operar en esa variable, es importante comprobar que la pila no se intercambiará al disco de forma inesperada y que la variable tenga el tiempo de vida correcto en todos los subprocesos que puedan usarlo.

Ejemplo

Normalmente, el valor devuelto de una rutina de soporte ejecutivo Interlocked se usa en los cálculos posteriores, en lugar de los argumentos de entrada. Además, las rutinas Interlocked solo protegen el primer argumento (el situado más a la izquierda). El uso de una rutina interbloqueada de la siguiente manera no protege el valor global y, a menudo, no sirve para nada.

InterlockedExchange(&local, global)

El siguiente formulario tiene el mismo efecto en los datos y accede con seguridad a la variable global.

local = InterllockedExchange(&global, global)