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