C6225
Aviso C6225: Conversão implícita entre tipos inteiros semanticamente diferentes: atribuindo 1 ou TRUE para o HRESULT. Considere usando o S_FALSE
Este aviso indica que uma HRESULT está sendo atribuído ou inicializado com um valor de um 1 explícita. Tipos booleanos indicam o sucesso por um valor diferente de zero; sucesso (S_OK) em HRESULT é indicado por um valor de 0. Esse aviso é frequentemente provocado por confusão acidental de booleano e HRESULT tipos. Para indicar êxito, a constante simbólico S_OK deve ser usado.
Exemplo
No código a seguir, a atribuição de HRESULT gera este aviso:
#include <windows.h>
VOID f( )
{
HRESULT hr;
LPMALLOC pMalloc;
if (SUCCEEDED(CoGetMalloc(1, &pMalloc)))
{
// code ...
hr = S_OK;
}
else
{
// code ...
hr = 1;
}
}
Para corrigir esse aviso, use o seguinte código:
VOID f( )
{
HRESULT hr;
LPMALLOC pMalloc;
if (SUCCEEDED(CoGetMalloc(1, &pMalloc)))
{
hr = S_OK;
// code ...
}
else
{
hr = S_FALSE;
// code ...
}
}
Para este aviso, o SCODE tipo é equivalente a HRESULT.
Para indicar a falha, E_FAIL, ou outra constante, deve ser usado.
Para obter mais informações, consulte um dos seguintes tópicos: