Freigeben über


Warnung C6215

Umwandlung zwischen semantisch unterschiedlichen ganzzahligen Typen: boolescher Typ in HRESULT

Diese Warnung gibt an, dass ein boolescher Wert in eine HRESULT. Boolesche Typen deuten auf Erfolg durch einen Wert ungleich Null hin, während der Erfolg (S_OK) HRESULT durch den Wert 0 angegeben wird. Das Umwandeln eines booleschen Typs in einen HRESULT Und dann in einem Testausdruck führt zu einem falschen Ergebnis.

Hinweise

Diese Warnung tritt häufig auf, wenn ein boolescher Wert als Argument oder SUCCEEDEDFAILED Makro verwendet wird, das seine Argumente explizit in ein HRESULT.

Codeanalysename: CAST_BOOL_TO_HRESULT

Beispiel

Der folgende Code generiert diese Warnung:

#include <windows.h>
BOOL IsEqual(REFGUID, REFGUID);

void f( REFGUID riid1, REFGUID riid2 )
{
  if (SUCCEEDED( IsEqual( riid1, riid2 ) )) //warning C6215
  {
    // success code ...
  }
  else
  {
    // failure code ...
  }
}

Im Allgemeinen sollten die SUCCEEDED Makros FAILED nur auf HRESULT.

So korrigieren Sie die Warnung unter Verwendung des folgenden Codes

#include <windows.h>
BOOL IsEqual(REFGUID, REFGUID);

void f( REFGUID riid1, REFGUID riid2 )
{
  if (IsEqual( riid1, riid2 ) == TRUE)
  {
    // code for riid1 == riid2
  }
  else
  {
    // code for riid1 != riid2
  }
}

Weitere Informationen finden Sie unter ERFOLGREICHen Makros und FAILED-Makro