Our website uses cookies to enhance your browsing experience.
Accept
to the top
>
>
>
V544. It is suspicious that the...
menu mobile close menu
Additional information
toggle menu Contents

V544. It is suspicious that the value 'X' of HRESULT type is compared with 'Y'.

Nov 20 2010

The analyzer detected a potential error related to handling a variable of the HRESULT type.

HRESULT is a 32-bit value divided into three different fields: severity code, device code and error code. Such special constants as S_OK, E_FAIL, E_ABORT, etc. serve to handle HRESULT-values while the SUCCEEDED and FAILED macros are used to check HRESULT-values.

The V544 warning is generated if the analyzer detects an attempt to compare a variable of the HRESULT type to -1, true or false. Consider this sample:

HRESULT hr;
...
if (hr == -1)
{
}

Comparison of the variable to "-1" is incorrect. Error codes may differ. For instance, these may be 0x80000002L (Ran out of memory), 0x80004005L (unspecified failure), 0x80070005L (General access denied error) and so on. To check the HRESULT -value in this case, we must use the FAILED macro defined in "WinError.h". This is the correct code:

if (FAILED(hr))
{
}

References:

This diagnostic is classified as: