| Предыдущий | Следующий |
| ERROR_SERVICE_DATABASE_LOCKED | ERROR_INVALID_SERVICE_ACCOUNT |
ERROR_SERVICE_ALREADY_RUNNING
Служба уже запущена
StartService просит SCM запустить службу; этот вызов не является идемпотентной операцией «обеспечить запуск». Если служба уже работает, Windows может вернуть ERROR_SERVICE_ALREADY_RUNNING вместо запуска второго экземпляра службы.
Автоматизация должна запросить текущее состояние, прежде чем решать, является ли такой результат успехом, конфликтом или признаком гонки. Также учитывайте START_PENDING: параллельный контроллер мог уже запустить службу, и второму вызывающему следует дождаться перехода состояния, а не повторять запуск. Если продукт действительно ожидает несколько экземпляров, каждой независимо управляемой службе Windows нужен собственный объект и имя службы, либо исполняемый файл должен реализовать собственную многоэкземплярную модель вне идентичности службы SCM.
Что проверить
- Запросите текущее состояние и обрабатывайте RUNNING и START_PENDING отдельно.
- Сериализуйте конкурирующие запросы запуска или явно сделайте контроллер идемпотентным.
- Не ожидайте, что SCM создаст второй экземпляр одного объекта службы.
Ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.