В чем разница кодов тяжести ошибок Windows
Вопрос по поводу того, чем отличаются коды тяжести ошибок в Windows. Мне известно, что в коде ошибки старшие 2 бита отвечают за код тяжести ошибки. В двоичном виде: 00 — успех, 01 — информация, 10 — предупреждение, 11 — ошибка. В чем отличие между этими кодами, что должно произойти, чтобы сгенерировался каждый из них? Буду рад литературе или ссылкам на статьи, а то информации об этом вообще нигде не нашел.
Ответы (1 шт):
То, что вы описываете, относится к кодам ошибок NTSTATUS, которые в основном используются драйверами. Успех означает, что устройство смогло обработать запрос и "все хорошо", ошибка - что запрос выполнить не удалось и "все плохо". Информация и предупреждение означают что-то промежуточное между этими двумя вариантами. Примером ошибки является, скажем, STATUS_ACCESS_VIOLATION (0xC0000005), который возникает при попытке обратиться к недоступному блоку памяти. Этот код часто фигурирует и в пользовательских программах, так как Windows превращает этот NTSTATUS в код исключения с таким же значением.
Документация по кодам NTSTATUS. Помимо кодов NTSTATUS есть и другие коды ошибок, которые не следуют этому формату. Про них можно прочитать в том же разделе по ссылке.