Reputation: 675
Can someone help me decode this HResult? What does it mean? I know the negative stands for a failure. How about the rest of the 10 bits?
I referenced MSDN HResult article here, but I am not sure how to determine what my facility and code bits are.
More info:
_message: "External component has thrown an exception."
Data: {System.Collections.ListDictionaryInternal}
Upvotes: 45
Views: 67771
Reputation: 3797
Decoding the error code with tools.
1. Visual Studio Error lookup tool
Locating the tool in Visual Studio (VS 2022):
On my system it is present at the following location:
"C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\Tools\errlook.exe"
2. Microsoft Err.exe command line
Microsoft also has a standalone commandline tool for decoding HRESULT errors: Err.exe
. You need not install visual studio for this.
Usage:
PS C:\Users\j\Downloads> .\Err_6.4.5.exe 0x80004027
# for hex 0x80004027 / decimal -2147467225
CO_E_CLASS_DISABLED winerror.h
# The component or application containing the component has
# been disabled.
# 1 matches found for "0x80004027"
PS C:\Users\j\Downloads> .\Err_6.4.5.exe -2147467225
# for decimal -2147467225 / hex 0x80004027
CO_E_CLASS_DISABLED winerror.h
# The component or application containing the component has
# been disabled.
# 1 matches found for "-2147467225"
0x80004027 (-2147467225) is the error code above. As you can see it accepts both hex, and negative integers.
3. Online utility - https://errorcodelookup.com
The website allows you to decode error codes online.
eg. https://errorcodelookup.com/?q=0x80004027
PS: The answer expands upon @BenjaminB's answer with some of my learnings. The error lookup tool is suggested in a comment by @Ohad Schneider.
Upvotes: 3
Reputation: 12922
Another way to do it is as follows. An HRESULT should contain a System Error Code in its first 32 bits. Using an AND operation will retrieve the error code from the HRESULT:
int result = (-2147467259 & 0xFFFF)
result
is 16389, which is not a part of the System Error Codes list, and as a result, is unspecified.
Upvotes: 4
Reputation: 2763
I'll show you how to do it. Paste the negative number into Calculator (Windows) in programmer mode "Dec" setting. Then convert to "Hex" setting. You get the number: FFFFFFFF80004005. The error is 80004005 which is:
0x80004005
E_FAIL
Unspecified
Unfortunately the provider of the function that gave you this error did not categorize the error.
Useful links:
Upvotes: 90
Reputation: 60962
-2147467259 in decimal is 80004005 in hexadecimal (usually rendered as 0x80004005). That's "E_FAIL (Unspecified error)" in Win32.
Not a very helpful error code, but maybe it'll get you a half-step closer to a solution.
Upvotes: 3
Reputation: 1869
Print it as an hexadecimal number, then, use for instance, VisualStudio ErrorLookup, to get the message.
Upvotes: 4