C6225
Aviso C6225: conversão implícita entre tipos inteiros semanticamente diferentes: atribuindo 1 ou verdadeiro para o HRESULT.Considere o uso de S_FALSE em vez disso
Este aviso indica que uma HRESULT está sendo atribuído ou inicializado com um valor de um 1 explícita.Tipos booleanos indicam êxito 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 código a seguir:
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 falha, E_FAIL, ou outra constante, deve ser usado.
Para obter mais informações, consulte um dos seguintes tópicos: