这更多的是一种好奇心。我一直在查看许多 Win32 API 和 Windows 组件返回以表示错误的 HRESULT
错误代码。
如果我明白its structure正确地,最高有效位 31 是错误位。如果已设置,则 HRESULT
包含错误。
例如,0x80004002
是 E_NOINTERFACE
:
No such interface supported.
但是当它的两个最高有效位设置为 0xC0262588
时会发生什么?有什么不同?
上面的值似乎也转化为错误,即 ERROR_GRAPHICS_MCA_INTERNAL_ERROR
:
An internal Monitor Configuration API error occurred.
编辑:documentation declares这样的值是无效的,但随后会继续列出多个假定无效的值。
最佳答案
从 HRESULT 定义的结构来看,0x8 和 0xC 在“R”位不同,如果设置了 N 位,则该位由 NTSTATUS 编号空间定义。在NTSTATUS定义中,0x8表示STATUS_SEVERITY_WARNING,0xC表示STATUS_SEVERITY_ERROR。
关于c - 以 0x8 和 0xC 开头的 HRESULT 错误代码有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54034910/