为什么许多 Windows 错误代码以 0xC000xxxx 开头?有相关参考吗?

为什么许多 Windows 错误代码以 0xC000xxxx 开头?有相关参考吗?

我注意到大多数 Windows 错误代码都有两种形式:

  • 标准系统错误代码,例如 0x05 表示拒绝访问。
  • 表单中的错误代码0xC000xxxx,我找不到任何参考。

我首先认为后者的错误代码只是0xC0000000由于某种原因按位进行或运算的系统错误代码,但事实似乎并非如此;如果以这种方式映射,它们与故障的性质不匹配。

Google 上对此类错误的所有引用似乎都与应用程序崩溃有关,但没有提供错误名称。

它们似乎也不是特定于应用程序的,因为Nt*ntdll.dll 中的某些 API 会返回它们,例如,在使用错误参数调用时NtCreateDirectoryObject返回。0xC0000022

这两种错误代码有什么区别?Microsoft 是否正式承认它们是标准错误代码?是否有它们的参考页面?

答案1

文档中有一个详细的错误值列表NTSTATUS 值

例如0xC0000022代表STATUS_ACCESS_DENIED,这是一个非常常见的返回值。

有点不相关,但也有一个Bug 检查代码列表. 这些代码通常在收到 BSOD 时显示。

答案2

根据一些信息(例如https://stackoverflow.com/questions/4550207/what-are-the-causes-and-solutions-of-exception-code-c0000005-in-mscorwks-dll), 0xC00xxxxx 错误代码是 Win32 API 的“正常”系统错误代码,被包装为异常代码。

相关内容