| Предыдущий | Следующий |
| ERROR_PROCESS_IS_PROTECTED | ERROR_DISK_QUOTA_EXCEEDED |
ERROR_SERVICE_NOTIFY_CLIENT_LAGGING
Клиент уведомлений службы отстал от состояния SCM
NotifyServiceStatusChange доставляет уведомления об изменении состояния службы через APC, поставленный в очередь вызывающего потока. Для получения обратного вызова поток должен войти в предупреждаемое ожидание. Microsoft документирует ERROR_SERVICE_NOTIFY_CLIENT_LAGGING для случая, когда обработка уведомлений слишком сильно отстаёт от текущего состояния служб компьютера.
Документированный способ восстановления конкретен: закройте дескриптор SCM, откройте новый и снова вызовите NotifyServiceStatusChange. Также устраните причину отставания. Каждая регистрация уведомления может поставить в очередь не более одного обратного вызова, и для дальнейших обновлений клиент должен зарегистрироваться повторно. Поддерживайте поток уведомлений отзывчивым и в предупреждаемом ожидании; не выполняйте длительную работу по управлению службами непосредственно в обратном вызове. Клиент, который не обрабатывает APC или неверно выполняет повторную регистрацию, может потерять синхронизацию с состоянием SCM, даже если отдельные службы исправны.
Что проверить
- Закройте и заново откройте дескриптор SCM, затем повторно зарегистрируйте уведомление.
- Убедитесь, что поток уведомлений выполняет предупреждаемые ожидания и обрабатывает обратные вызовы APC.
- Вынесите ресурсоёмкую работу из обратного вызова и осознанно регистрируйтесь повторно для последующих изменений.
Ссылки
- Microsoft: NotifyServiceStatusChangeW
- Microsoft: QueryServiceStatusEx
- Microsoft: диспетчер управления службами
Нужно найти другой код? Найти другой код состояния или ошибки.