| Предыдущий | Следующий |
| STATUS_WAIT_0 |
STATUS_SUCCESS
Успешный NTSTATUS не означает, что каждый выходной результат семантически полон
STATUS_SUCCESS является каноническим нулевым значением NTSTATUS и удовлетворяет проверке NT_SUCCESS . Важно различать успешное завершение на уровне вызова и контракт вызванной операции. API может завершиться успешно, но вернуть ноль элементов, сокращённый набор результатов, флаг состояния или другой выходной параметр, который вызывающий код всё равно обязан проверить.
Не сравнивайте каждый NTSTATUS только с нулём, если API документирует информационные результаты или предупреждения. И наоборот, не считайте, что успешный вызов обязательно заполнил необязательные указатели или произвёл ожидаемый побочный эффект, если это прямо не гарантировано контрактом API. При диагностике неожиданного успешного результата сохраняйте точное имя API, класс информации, длину выходных данных и поля количества.
Что проверить
- Проверьте контракт успешного завершения конкретного API и все выходные поля количества или длины.
- Используйте NT_SUCCESS только там, где API допускает весь диапазон успешных значений NTSTATUS.
- Записывайте возвращённый статус и смысловые выходные значения раздельно, чтобы успешная операция без фактического действия была заметна.
Ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.
