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)
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de