В чем разница между кодами ошибок HRESULT, которые начинаются с 0x8 и с 0xC? - PullRequest
0 голосов
/ 04 января 2019

Это больше любопытство, чем все остальное.Я просматривал коды ошибок HRESULT, которые возвращают многие Win32 API и компоненты Windows, чтобы выявить ошибки.

Если я правильно понимаю его структуру , старший бит 31 - это бит ошибки.Если он установлен, то HRESULT содержит ошибку.

Например, 0x80004002 равно E_NOINTERFACE:

Такой интерфейс не поддерживается.

Но что происходит, когда два из его старших значащих битов установлены как в 0xC0262588?Чем он отличается?

Это значение, по-видимому, также приводит к ошибке: ERROR_GRAPHICS_MCA_INTERNAL_ERROR:

Произошла внутренняя ошибка API конфигурации монитора.

РЕДАКТИРОВАТЬ: Документация объявляет такие значения недействительными, но затем перечисляет несколько предположительно недопустимых значений.

1 Ответ

0 голосов
/ 07 января 2019

Из определения Структуры HRESULT 0x8 и 0xC отличаются у бита "R", и если бит N установлен, этот бит определяется пространством нумерации NTSTATUS.В определении NTSTATUS 0x8 указывают STATUS_SEVERITY_WARNING, а 0xC указывают STATUS_SEVERITY_ERROR.

enter image description here

enter image description here

Ссылка:« [MS-ERREF]: коды ошибок Windows »

...