Что означает код HRESULT 0x80270004 (NAP_E_NO_CACHED_SOH)?

 
Предыдущий Следующий
NAP_E_CONFLICTING_ID NAP_E_STILL_BOUND

NAP_E_NO_CACHED_SOH

У агента работоспособности нет кэшированного Statement of Health

NAP_E_NO_CACHED_SOH — это HRESULT 0x80270004 (знаковое десятичное значение -2144927740, беззнаковое десятичное значение 2150039556). AllStat на основании winerror.h описывает его так: «Кэшированный SoH отсутствует». Значение обозначает ошибку, имеет код средства 0x27 и поле кода 0x0004.

Для случая отсутствия кэшированного SoH у агента работоспособности этот HRESULT относится к устаревшей технологии Network Access Protection: NAP недоступна начиная с Windows 10, а современные выпуски Windows Server не содержат прежних ролей NAP, HRA и HCAP. Поэтому его следует учитывать при проверке формирования и обновления кэша SoH на поддерживаемых устаревших системах, в архивной телеметрии, компонентах совместимости или проектах миграции, не ожидая наличия прежней платформы на современном компьютере.

Зависящее от времени условие обратного вызова SHA

Microsoft документирует это значение в пути обратного вызова GetSoHRequest. Такой обратный вызов должен возвращаться немедленно и не должен выполнять длительный контроль работоспособности. Если получение новых данных требует времени, SHA должен вернуть кэшированный SoH; если кэшированного утверждения нет, он должен вернуть пакет категории ошибки с NAP_E_NO_CACHED_SOH, а позднее вызвать NotifySoHChange, когда актуальные данные о работоспособности будут готовы.

Почему кэш пуст

  • SHA только что запустился, ещё не завершил первую оценку состояния, а предыдущий результат не был сохранён NapAgent.
  • FlushCache был вызван при изменении конфигурации или исправлении до формирования заменяющего SoH.
  • NapAgent удалил SHA из списка привязанных и очистил его кэш после ошибки недоступности RPC-сервера.
  • Изменение версии компонента или идентификатора работоспособности сделало прежнее кэшированное утверждение неприменимым к текущему SHA.
  • SHA ошибочно выполняет весь контроль внутри GetSoHRequest, и обратный вызов происходит до появления фонового результата.

Телеметрия кэша и поколения

  • Записывайте поколение и возраст кэша, SystemHealthEntityId и причину отсутствия или очистки предыдущей записи.
  • Фиксируйте продолжительность обратного вызова отдельно от длительности фоновой проверки: быстрый вызов без кэша отличается от заблокированного вызова.
  • Сохраняйте время последующего NotifySoHChange и результат получения корректного утверждения при следующем обмене.
  • Фиксируйте перезапуск службы, повторную привязку SHA, обновление политики и время исправления, способные сделать кэшированное состояние недействительным.

Восстановление конвейера формирования данных

  • Перенесите затратную проверку работоспособности в рабочий поток или службу, а обратному вызову оставьте чтение неизменяемого завершённого результата.
  • Создайте явное начальное состояние «данные о работоспособности недоступны», вместо неограниченного ожидания первого сканирования.
  • Убедитесь, что NotifySoHChange отправляется только после полного построения нового утверждения и его видимости потоку обратного вызова.
  • Отдельно проверяйте запуск, очистку кэша, перезапуск NapAgent и быстрые последовательности изменения политики.

Отличие от соседних результатов NAP

Этот код не означает, что ожидаемый SoH был потерян в самом пакете NAP при передаче; такое наблюдаемое сервером условие обозначается NAP_E_MISSING_SOH. Он также не является заключением о работоспособности. Категория ошибки сообщает, что клиентский компонент сейчас не может предоставить данные о состоянии, а влияние этого инфраструктурного сбоя на доступ определяет политика.

Повтор и восстановление

Немедленно верните документированный пакет ошибки, завершите оценку работоспособности асинхронно, затем инициируйте новый обмен SoH. Частые повторы со стороны вызывающего кода могут увеличить нагрузку, пока кэш всё ещё пуст. Полезной границей повтора является новое поколение, объявленное NotifySoHChange, а не таймер, многократно вызывающий тот же обратный вызов.

Практический сценарий

После обновления политики SHA очищает кэш и начинает полное сканирование соответствия требованиям. NapAgent запрашивает SoH до завершения сканирования. SHA немедленно сообщает NAP_E_NO_CACHED_SOH, позднее публикует готовое утверждение и вызывает NotifySoHChange для начала нового обмена.

Ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.