C28113
Предупреждение C28113: доступ к локальной переменной через функцию Interlocked
Драйвер использует служебную исполняемую подпрограмму Interlocked, например InterlockedDecrement, для получения локальной переменной.
Хотя драйверам разрешено передавать адрес локальной переменной в другую функцию, а затем использовать функцию Interlocked для обработки этой переменной, важно убедиться, что стек не будет неожиданно выгружаться на диск, а для переменной задано правильное время существования во всех потоках, которые могут ее использовать.
Пример
Как правило, возвращаемое значение служебной исполняемой подпрограммы Interlocked используется в последующих вычислениях вместо входных аргументов.Кроме того, подпрограммы Interlocked защищают только первый аргумент (крайний левый).Использование подпрограммы Interlocked следующим образом не защищает значение глобальной переменной и зачастую бессмысленно.
InterlockedExchange(&local, global)
Следующая форма оказывает тот же эффект на данные и обеспечивает безопасный доступ к глобальной переменной.
local = InterllockedExchange(&global, global)