Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Uma variável (nome do parâmetro) que é acedida através de uma função Interlocked deve ser sempre acedida através de uma função Interlocked. Ver número da linha: Nem sempre é seguro aceder a uma variável que é acedida através da família de funções Interlocked* de qualquer outra forma.
Uma variável que é acessada usando as rotinas de suporte executivo intertravadas, como InterlockedCompareExchangeAcquire, é acessada posteriormente usando uma função diferente.
Observações
InterlockedXxx
As funções destinam-se a fornecer operações atómicas, mas são apenas atómicas em relação a outras InterlockedXxx
funções. Embora certas atribuições, acessos e comparações comuns com variáveis que são usadas pelas rotinas Interlocked* possam ser acessadas com segurança usando uma função diferente, o risco é grande o suficiente para justificar o exame de cada instância.
Nome da análise de código: INTERLOCKED_ACCESS
Exemplo
O código a seguir gera esse aviso:
inter_var--;
//code
InterlockedIncrement(&inter_var);
O código a seguir corrige este aviso acedendo a inter_var
exclusivamente através das funções InterlockedXxx
.
InterlockedDecrement(&inter_var);
//code
InterlockedIncrement(&inter_var);
Ver também
Função InterlockedIncrement (wdm.h)
Função InterlockedDecrement (wdm.h)