Zauważyłem, że większość kodów błędów systemu Windows występuje w jednej z dwóch form:
- Standardowe kody błędów systemu , np. 0x05, to odmowa dostępu.
- Kody błędów w formularzu
0xC000xxxx
, do których nie mogę znaleźć żadnego odniesienia.
Najpierw pomyślałem, że te ostatnie kody błędów były po prostu kodami błędów systemowych, które z 0xC0000000
jakiegoś powodu zostały bitowo OR'owane , ale wydaje się, że tak nie jest; nie są zgodne z charakterem błędu, jeśli są odwzorowane w ten sposób.
Wszystkie odniesienia do takich błędów w Google wydają się być związane z awariami aplikacji, ale nie podano nazw błędów.
Nie wydają się też być specyficzne dla aplikacji, ponieważ niektóre Nt*
API wewnątrz ntdll.dll zwracają je, np. NtCreateDirectoryObject
Zwraca, 0xC0000022
gdy są wywoływane ze złymi parametrami.
Jaka jest różnica między dwoma typami kodów błędów? Czy Microsoft oficjalnie rozpoznaje je jako standardowe kody błędów? Czy jest dla nich strona referencyjna?
Odpowiedzi:
W dokumentacji wartości NTSTATUS znajduje się obszerna lista wartości błędów .
Na przykład
0xC0000022
oznaczaSTATUS_ACCESS_DENIED
, co jest bardzo powszechną wartością zwracaną.Nieco niepowiązane, ale jest też lista kodów błędów . Kody te są zwykle wyświetlane po otrzymaniu BSOD.
źródło
Według niektórych informacji (np. Https://stackoverflow.com/questions/4550207/what-are-the-causes-and-solutions-of-exception-code-c0000005-in-mscorwks-dll ), kody błędów 0xC00xxxxx to „normalne” systemowe kody błędów interfejsu API Win32 opakowane jako kody wyjątków.
źródło