Что означает код HRESULT 0x80270005 (NAP_E_STILL_BOUND)?

 
Предыдущий Следующий
NAP_E_NO_CACHED_SOH NAP_E_NOT_REGISTERED

NAP_E_STILL_BOUND

При отмене регистрации сущность NAP всё ещё привязана

NAP_E_STILL_BOUND — это HRESULT 0x80270005 (знаковое десятичное значение -2144927739, беззнаковое десятичное значение 2150039557). AllStat на основании winerror.h описывает его так: «Сущность всё ещё привязана к системе NAP». Значение обозначает ошибку, имеет код средства 0x27 и поле кода 0x0005.

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

Завершение работы ещё не дошло до границы регистрации

Microsoft указывает NAP_E_STILL_BOUND для INapClientManagement::UnregisterEnforcementClient, когда клиент применения требований остаётся подключённым к системе NAP. Регистрация и привязка времени выполнения имеют разные сроки жизни: удаление метаданных при наличии обратных вызовов или соединений, всё ещё ссылающихся на компонент, оставило бы агенту недействительную цель, поэтому отмена регистрации отклоняется.

Какие привязки обычно остаются активными

  • Перед попыткой отмены регистрации из установщика клиент применения требований не вызвал соответствующую операцию деинициализации или отвязки.
  • Один или несколько объектов INapEnforcementClientConnection всё ещё активны либо удерживаются рабочим потоком.
  • Завершение работы вступило в гонку с обратным вызовом, и компонент остаётся логически привязанным до освобождения ссылки этим вызовом.
  • При обновлении процесса регистрации всё ещё работает процесс службы предыдущей версии.
  • Очистка обработала штатный путь, но пропустила отвязку после частичной инициализации или неудачного соединения.

Сведения о времени жизни

  • Запишите идентификаторы процессов, состояние службы, идентификаторы экземпляров привязки и активных соединений, число обратных вызовов и владельцев ссылок COM.
  • Проследите порядок остановки, закрытия соединений, деинициализации, освобождения объектов и отмены регистрации.
  • Определите, принадлежит ли привязка удаляемому компоненту или другому процессу, использующему ту же зарегистрированную сущность.
  • Зафиксируйте этап установки и признак ожидающей перезагрузки: новый двоичный файл нельзя регистрировать поверх работающего старого процесса.

Безопасная последовательность завершения

  • Прекратите принимать новые соединения применения требований и переведите компонент в состояние опустошения очередей.
  • Завершите или отмените незаконченные запросы согласно их контрактам, затем освободите каждый объект соединения.
  • Отвяжитесь от NapAgent и дождитесь прекращения обратных вызовов до освобождения интерфейса привязки.
  • Повторяйте UnregisterEnforcementClient только после полного исчезновения владения времени выполнения.

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

NAP_E_CONFLICTING_ID возникает при создании регистрации с идентификатором, уже принадлежащим другому владельцу; NAP_E_STILL_BOUND возникает при удалении существующего владельца, который всё ещё используется. NAP_E_SERVICE_NOT_RUNNING относится к доступности NapAgent и не доказывает, что все локальные ссылки освобождены.

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

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

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

Служба обновления пытается отменить регистрацию клиента применения требований до остановки его старой службы Windows. Клиент всё ещё владеет двумя объектами соединения, поэтому возвращается NAP_E_STILL_BOUND. Установщик останавливает службу, ждёт завершения соединений, отменяет регистрацию старой сущности и затем регистрирует новую версию.

Ссылки


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