C6225
Aviso C6225: Conversão implícita entre diferentes semanticamente inteiro tipos: atribuindo 1 ou verdadeiro para HRESULT.Em vez disso, use S_FALSE
Este aviso indica que um HRESULT está sendo atribuído ou inicializado com um valor de um 1 explícita. Tipos booliano indicam êxito por um valor diferente de zero; ( sucessoS_OK) na HRESULT é indicado por um valor de 0. Esse aviso é freqüentemente causado por confusão acidental de booliano e de HRESULT tipos. Para indicar êxito, a constante simbólico S_OK deve ser usado.
Exemplo
O código a seguir, 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 esse aviso, o SCODE tipo é equivalente a HRESULT.
Para indicar falha, E_FAIL, ou outra constante deve ser usado.