Compartilhar via


C28113

warning C28113: Accessing a local variable via an Interlocked function

O driver está usando uma rotina de suporte executivo Interlocked, tais como InterlockedDecrement, para acessar uma variável local.

Embora drivers têm permissão para passar o endereço de uma variável local para outra função e, em seguida, use uma função interligada para operar em que variável, é importante verificar que a pilha será não ser trocada por disco inesperadamente e se a variável tem o tempo de vida correto em todos os threads que podem usá-lo.

Exemplo

Normalmente, o valor de retorno de uma rotina de suporte executivo Interlocked é usado em cálculos subsequentes, em vez de argumentos de entrada.Além disso, as rotinas de Interlocked protegem somente o primeiro argumento (mais à esquerda).Usando uma rotina Interlocked da seguinte maneira não protege o valor global e geralmente não têm objetivo.

InterlockedExchange(&local, global)

O formulário a seguir tem o mesmo efeito nos dados e com segurança acessa a variável global.

local = InterllockedExchange(&global, global)