Я заметил, что большинство кодов ошибок Windows имеют одну из двух форм:
- Стандартные системные коды ошибок , например, 0x05 - Доступ запрещен.
- Коды ошибок в форме
0xC000xxxx
, ссылки на которые я не могу найти.
Сначала я подумал, что последние коды ошибок были просто системными кодами ошибок, которые 0xC0000000
по какой-то причине были побитовыми ИЛИ , но это, похоже, не так; они не соответствуют характеру ошибки, если отображены таким образом.
Кажется, что все ссылки на такие ошибки в Google связаны со сбоями приложений, но имена ошибок не приводятся.
Похоже, что они не являются специфичными для приложения, поскольку некоторые Nt*
API внутри ntdll.dll возвращают их, например, NtCreateDirectoryObject
возвращает 0xC0000022
при вызове с неверными параметрами.
В чем разница между двумя типами кода ошибки? Microsoft официально распознает их как стандартные коды ошибок? Есть ли для них справочная страница?
Ответы:
Существует обширный список значений ошибок в документации значений NTSTATUS .
Например,
0xC0000022
обозначаетSTATUS_ACCESS_DENIED
, что является очень распространенным возвращаемым значением.Несколько не связано, но есть также список кодов ошибок . Эти коды обычно отображаются при получении BSOD.
источник
Согласно некоторым сведениям (например, /programming/4550207/what-are-the-causes-and-solutions-of-exception-code-c0000005-in-mscorwks-dll ), коды ошибок 0xC00xxxxx «нормальные» системные коды ошибок Win32 API, заключенные в коды исключений.
источник