Using Macros for Error Handling

COM defines a number of macros that make it easier to work with HRESULT values.

The error handling macros are described in the following table.

Macro Description
MAKE_HRESULT
Returns an HRESULT given the severity bit, facility code, and error code that comprise the HRESULT.
[!Note]
Calling MAKE_HRESULT for S_OK verification carries a performance penalty. You should not routinely use MAKE_HRESULT for successful results.

MAKE_SCODE
Returns an SCODE given the severity bit, facility code, and error code that comprise the SCODE.
HRESULT_CODE
Extracts the error code portion of the HRESULT.
HRESULT_FACILITY
Extracts the facility code of the HRESULT.
HRESULT_SEVERITY
Extracts the severity bit of the HRESULT.
SCODE_CODE
Extracts the error code portion of the SCODE.
SCODE_FACILITY
Extracts the facility code of the SCODE.
SCODE_SEVERITY
Extracts the severity field of the SCODE.
SUCCEEDED
Tests the severity bit of the SCODE or HRESULT; returns TRUE if the severity is zero and FALSE if it is one.
FAILED
Tests the severity bit of the SCODE or HRESULT; returns TRUE if the severity is one and FALSE if it is zero.
IS_ERROR
Provides a generic test for errors on any status value.
HRESULT_FROM_WIN32
Maps a system error code to an HRESULT value.
HRESULT_FROM_NT
Maps an NT status value to an HRESULT value.

Error Handling in COM