HRESULT Error Codes

The 32bits in an HRESULT error code have meanings, allowing the reader to gain additional insights into the error.

Of note:

The 32nd bit (the top bit) indicates if an error occurred or not. This is why errors are 0x8xxxxxxx.
The 16-26 bits are the Facility - the originating API (Win32, CLR, XAML, etc.).
The 0-15 bits are the (Error) Code.

Common NULL Facility Error Codes

S_OKOperation successful0x00000000
S_FALSEOperation successful but returned no results0x00000001
E_ABORTOperation aborted0x80004004
E_FAILUnspecified failure0x80004005
E_NOINTERFACENo such interface supported0x80004002
E_NOTIMPLNot implemented0x80004001
E_POINTERPointer that is not valid0x80004003
E_UNEXPECTEDUnexpected failure0x8000FFFF

Common Win32 Facility Error Codes

These are built by passing a System Error Code to HRESULT_FROM_WIN32

E_ACCESSDENIEDGeneral access denied error0x80070005
E_HANDLEHandle that is not valid0x80070006
E_INVALIDARGOne or more arguments are not valid0x80070057
E_OUTOFMEMORYFailed to allocate necessary memory0x8007000E

Related Links:

HRESULT Facility – By Value
HRESULT Facility – By Name