c - 以 0x8 和 0xC 开头的 HRESULT 错误代码有什么区别?

标签 c windows winapi hresult

这更多的是一种好奇心。我一直在查看许多 Win32 API 和 Windows 组件返回以表示错误的 HRESULT 错误代码。

如果我明白its structure正确地,最高有效位 31 是错误位。如果已设置,则 HRESULT 包含错误。

例如,0x80004002E_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。

enter image description here

enter image description here

引用:“[MS-ERREF]: Windows Error Codes

关于c - 以 0x8 和 0xC 开头的 HRESULT 错误代码有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54034910/

相关文章:

mysql - C语言中mysql连接丢失

c - 输出一个指针

windows - Direct2d 时序性能

windows - IIS 多个站点在同一个 ip 上,具有不同的 ssl

c++ - 为什么 Main 函数上的 Sleep() 会停止所有线程?

c++ - 按下回车按钮时如何使用 C++ Win32 API 调用按钮?

C、舍入问题。 UWORD、整数和 double

c - 安腾汇编编程资源?

Windows Dir 命令 - 按大小排序子目录

c++ - 什么可能导致 ShellExecute 返回 SE_ERR_OOM(错误 8)?