| Предыдущий | Следующий |
| NAP_E_NOT_REGISTERED | NAP_E_MISMATCHED_ID |
NAP_E_NOT_INITIALIZED
Сущность NAP не инициализирована
NAP_E_NOT_INITIALIZED — это HRESULT 0x80270007 (знаковое десятичное значение -2144927737, беззнаковое десятичное значение 2150039559). AllStat на основании winerror.h описывает его так: «Сущность не инициализирована в системе NAP». Значение обозначает ошибку, имеет код средства 0x27 и поле кода 0x0007.
Для случая использования объекта до обязательной инициализации этот HRESULT относится к устаревшей технологии Network Access Protection: NAP недоступна начиная с Windows 10, а современные выпуски Windows Server не содержат прежних ролей NAP, HRA и HCAP. Поэтому его следует учитывать при проверке порядка Initialize и последующих вызовов на поддерживаемых устаревших системах, в архивной телеметрии, компонентах совместимости или проектах миграции, не ожидая наличия прежней платформы на современном компьютере.
После регистрации нарушена последовательность выполнения
Этот HRESULT описывает ошибку жизненного цикла объекта. Microsoft документирует его для методов привязки SHA, например GetSystemIsolationInfo, если Initialize ранее не завершился успешно. Зарегистрированные, но непривязанные SHA также могут заставить NapAgent сформировать для соответствующего SHV ошибочный SoH с NAP_E_NOT_INITIALIZED. Код не означает, что сама проверка работоспособности признала компьютер несоответствующим требованиям.
Ошибки последовательности
- Вызывающая сторона обращается к методу привязки сразу после создания COM-объекта и пропускает Initialize.
- Initialize завершился ошибкой, но последующий код сохранил объект и счёл его готовым.
- Uninitialize завершился, пока другой поток продолжал использовать старый экземпляр привязки.
- Отключение или перезапуск NapAgent сделал недействительными предположения оболочки, не учитывающей документированное поведение повторной привязки.
- Состояние инициализации хранится глобально, хотя несколько экземпляров SHA имеют независимые жизненные циклы.
Сведения о жизненном цикле
- Записывайте идентичность экземпляра привязки, HRESULT Initialize, идентификатор сущности, поколение указателя обратного вызова и каждый переход Uninitialize.
- Фиксируйте идентификаторы потоков и порядок первого вызова метода после создания объекта или перезапуска службы.
- Записывайте события RPC_E_DISCONNECTED отдельно: интерфейс документирует автоматическое восстановление при перезапуске NapAgent.
- Для обнаруженного сервером ошибочного SoH сохраните флаг системного формирования и идентификатор работоспособности, чтобы определить непривязанный клиентский SHA.
Исправление порядка вызовов
- Сначала убедитесь в наличии регистрации: Initialize не может исправить NAP_E_NOT_REGISTERED.
- Вызовите Initialize один раз со стабильным SystemHealthEntityId и объектом обратного вызова, который остаётся действительным до Uninitialize.
- Делайте привязку доступной рабочим потокам только после успешного завершения Initialize.
- При завершении сначала остановите пользователей объекта, затем вызовите Uninitialize и запретите повторное использование завершённого поколения.
Отличие от соседних результатов NAP
NAP_E_NOT_REGISTERED — проблема состояния установки или управления; NAP_E_NOT_INITIALIZED — проблема состояния выполнения после регистрации. NAP_E_SERVICE_NOT_RUNNING означает недоступность процесса NapAgent. RPC_E_DISCONNECTED — документированный сигнал уровня интерфейса об остановке агента, после перезапуска которого возможно автоматическое восстановление.
Повтор и восстановление
Инициализацию можно повторить после приведения в допустимое состояние необходимой регистрации и службы. Не продолжайте работу с частичными выходными данными отказавшего метода. Используйте явный автомат состояний — создан, инициализируется, привязан, завершается, деинициализирован, — чтобы устаревший объект не мог незаметно вернуться в активный путь.
Практический сценарий
Служба создаёт привязку SHA и запускает поток наблюдения до возврата Initialize. Рабочий поток вызывает GetSystemIsolationInfo и получает NAP_E_NOT_INITIALIZED. Публикация объекта рабочим потокам только после успешной инициализации устраняет гонку без изменения политики работоспособности.
Ссылки
- Microsoft: константы ошибок NAP
- Microsoft: инициализация привязки SHA
- Microsoft: GetSystemIsolationInfo
- Microsoft: жизненный цикл привязки SHA
Нужно найти другой код? Найти другой код состояния или ошибки.
