| Предыдущий | Следующий |
| NAP_E_INVALID_PACKET | NAP_E_CONFLICTING_ID |
NAP_E_MISSING_SOH
Ожидаемый Statement of Health отсутствует
NAP_E_MISSING_SOH — это HRESULT 0x80270002 (знаковое десятичное значение -2144927742, беззнаковое десятичное значение 2150039554). AllStat на основании winerror.h описывает его так: «В пакете NAP отсутствует SoH». Значение обозначает ошибку, имеет код средства 0x27 и поле кода 0x0002.
Для случая отсутствия ожидаемого Statement of Health этот HRESULT относится к устаревшей технологии Network Access Protection: NAP недоступна начиная с Windows 10, а современные выпуски Windows Server не содержат прежних ролей NAP, HRA и HCAP. Поэтому его следует учитывать при поиске участка, на котором было потеряно утверждение о работоспособности на поддерживаемых устаревших системах, в архивной телеметрии, компонентах совместимости или проектах миграции, не ожидая наличия прежней платформы на современном компьютере.
Отсутствуют данные о работоспособности, а не повреждённые данные
NAP_E_MISSING_SOH используется, когда путь проверки ожидает запрос Statement of Health, но его нет. Microsoft описывает точное поведение SHV: если GetSoHRequest возвращает нулевой пакет, обычный валидатор должен сформировать ответ с этой ошибкой. Валидатор обнаружения вторжений вместо этого может создать собственный запрос с описанием причины, по которой клиент считается вредоносным. Таким образом, код отражает отсутствие входных данных на границе контракта SHA—SHV.
Как SoH может исчезнуть
- Клиентский путь применения требований отправил конверт NAP без относящегося к SHA SoH, который ожидал серверный валидатор.
- Зарегистрированный SHA не был привязан или завершился сбоем до формирования данных о работоспособности, поэтому системный запрос не содержал обычных атрибутов состояния.
- Промежуточный компонент отфильтровал атрибут по SystemHealthEntityId либо пересобрал пакет, пропустив кажущийся пустым элемент SoH.
- SHV запросил объект до того, как сервер NAP связал с ним нужное утверждение, либо использовал другой экземпляр запроса проверки.
- Конфигурации устаревшего клиента и сервера расходятся в том, какие SHA и SHV участвуют в сценарии применения требований.
Что необходимо зафиксировать
- Запишите SystemHealthEntityId, запрошенный SHV, и перечислите атрибуты SoH, которые фактически поступили.
- Сохраните флаг napSystemGenerated из GetSoHRequest: системный пакет ошибки следует интерпретировать иначе, чем обычное утверждение SHA.
- Сопоставьте регистрацию SHA, состояние привязки, активность NotifySoHChange, идентификатор соединения клиента применения требований и идентификатор серверного запроса проверки.
- Зафиксируйте, предоставили ли другие SHA свои утверждения в том же обмене: это отличает отсутствие конкретного компонента от потери всей полезной нагрузки NAP.
Поиск места потери утверждения
- Убедитесь, что SHA зарегистрирован с тем же числовым идентификатором работоспособности, который ожидает SHV.
- Подтвердите успешную инициализацию привязки SHA и вызов его GetSoHRequest, когда NapAgent запрашивает данные о работоспособности.
- Проверьте транспорт применения требований до и после инкапсуляции, чтобы определить, существовал ли SoH на клиенте и был ли отброшен позднее.
- На сервере получайте запрос один раз в рамках документированного жизненного цикла и не подменяйте его несвязанным кэшированным объектом проверки.
Отличие от соседних результатов NAP
NAP_E_INVALID_PACKET означает, что байты присутствуют, но некорректны. NAP_E_NO_CACHED_SOH относится к более конкретной ситуации, когда SHA не может быстро сформировать новые сведения о работоспособности и не имеет кэшированного утверждения. NAP_E_NOT_INITIALIZED сообщает о непривязанном SHA, а не только об отсутствии, обнаруженном SHV.
Повтор и восстановление
Не создавайте фиктивный ответ о нормальной работоспособности. Верните или сохраните NAP_E_MISSING_SOH, чтобы политика могла явно сопоставить отказ компонента, затем восстановите регистрацию SHA, привязку или транспортный путь. Новая проверка безопасна после того, как производитель сможет предоставить утверждение; повторная проверка того же объекта запроса не создаст отсутствующие данные.
Практический сценарий
На сервере включён антивирусный SHV, но соответствующий SHA удалён из старого клиентского образа. Пакет NAP поступает валидатору без этого утверждения о работоспособности. SHV возвращает ответ с NAP_E_MISSING_SOH, позволяя политике отличить недоступные данные о состоянии от несоответствия требованиям антивируса.
Ссылки
- Microsoft: константы ошибок NAP
- Microsoft: контракт проверки SHV
- Microsoft: обратный вызов SHA GetSoHRequest
- Microsoft: обзор Network Access Protection
Нужно найти другой код? Найти другой код состояния или ошибки.