| Предыдущий | Следующий |
| 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. Установщик останавливает службу, ждёт завершения соединений, отменяет регистрацию старой сущности и затем регистрирует новую версию.
Ссылки
- Microsoft: константы ошибок NAP
- Microsoft: UnregisterEnforcementClient
- Microsoft: соединение клиента применения требований
- Microsoft: интерфейсы NAP
Нужно найти другой код? Найти другой код состояния или ошибки.