我注意到大多数 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 的“正常”系统错误代码,被包装为异常代码。