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.
Aviso
RtlCompareMemoryretorna o número de bytes correspondentes. Considere substituir essa chamada porRtlEqualMemory
Comentários
Quando RtlCompareMemoryo valor retornado de é tratado como um booleano, ele é avaliado como verdadeiro quando há pelo menos 1 byte igual antes de encontrar uma diferença. Além disso, comparar o resultado de RtlCompareMemory com 0 será avaliado como falso se houver pelo menos 1 byte correspondente. Esse comportamento pode ser inesperado porque é diferente de outras funções de comparação, como strcmp, tornando o código mais difícil de entender. Para verificar a igualdade, considere usar RtlEqualMemory em vez disso.
Esse aviso está disponível no Visual Studio 2022 versão 17.7 e versões posteriores.
Exemplo
int foo(const void* ptr)
{
if (RtlCompareMemory("test", ptr, 5) == 0) // C26835
{
// ...
}
}
Para corrigir o problema, verifique se a intenção original era verificar a igualdade e substitua a chamada de função por RtlEqualMemory:
int foo(const void* ptr)
{
if (RtlEqualMemory("test", ptr, 5)) // C26835
{
// ...
}
}
Confira também
RtlEqualMemory macro (wdm.h)
RtlCompareMemory função (wdm.h)