| Предыдущий | Следующий |
| STATUS_KERNEL_APC | STATUS_TIMEOUT |
STATUS_ALERTED
Явное оповещение потока завершило ожидание
Оповещение отличается от выполнения пользовательского APC и от истечения тайм-аута. API ожидания ядра, разрешающие оповещение, могут вернуть этот статус, когда другой компонент помечает поток оповещённым. Ожидаемый объект может оставаться несигнальным, а исходная операция — всё ещё выполняться.
Машины состояний с оповещаемым ожиданием должны отдельно обрабатывать оповещение, APC, тайм-аут и завершение объекта. Циклу повторов также нужна политика отмены или крайний срок; немедленный повтор бесконечного оповещаемого ожидания может скрыть постоянный источник оповещений или помешать штатному завершению.
Что проверить
- Сохраните процедуру ожидания, режим ожидания, флаг alertable, оповещающий компонент и состояние диспетчерского объекта.
- Не трактуйте оповещение как успешное завершение базовой операции.
- Очистите или обработайте состояние завершения приложения до повторного входа в ожидание.
- Используйте трассировку, чтобы отличить явные оповещения от доставки APC и обычных тайм-аутов.
Ссылки
- Открытые спецификации Microsoft: значения NTSTATUS
- Microsoft WDK: KeWaitForSingleObject
- Microsoft WDK: KeDelayExecutionThread
- Метаданные Windows SDK Microsoft: ntstatus.h
Нужно найти другой код? Найти другой код состояния или ошибки.