Функция LockServiceDatabase запрашивает монопольное использование блокировки базы данных диспетчера управления службами. Только один процесс может иметь блокировку в любое данное время.
Синтаксис
SC_LOCK LockServiceDatabase( SC_HANDLE hSCManager ); |
Если функция завершается успешно, возвращаемое значение - блокировка указанной базы данных диспетчера управления службами.
Если функция завершается ошибкой, возвращаемое значение - ПУСТО (NULL). Чтобы получить дополнительные данные об ошибке, вызовите функцию GetLastError.
Ниже перечисленные коды ошибок могут быть установлены диспетчером управления службами. Другие коды ошибок могут быть установлены функциями реестра, которые вызываются диспетчером управления службами.
Код возврата | Описание |
---|---|
ERROR_ACCESS_DENIED | У дескриптора нет прав доступа SC_MANAGER_LOCK. |
ERROR_INVALID_HANDLE | Указанный дескриптор - недопустим. |
ERROR_SERVICE_DATABASE_LOCKED | База данных заблокирована. |
Блокировка - это протокол, который используется программами установки и конфигурации, а так же диспетчером управления службами, чтобы преобразовывать в последовательную форму доступ к дереву служб в реестре. Только один раз диспетчер управления службами требует монопольного использования блокировки - когда он запускает службу.
Запрошенная блокировка базы данных SCM не допускает запуск служб диспетчером управления службами до тех пор, пока блокировка не будет отменена.
Вызов функции StartService, чтобы запустить службу в блокированной базе данные завершается ошибкой. Нет других функций диспетчера управления службами, на которые бы повлияла блокировка.
Блокировка удерживается до тех пор, пока задается дескриптор SC_LOCK при последовательных вызовах функции UnlockServiceDatabase. Если процесс, который владеет блокировкой, завершает свою работу, диспетчер управления службами автоматически очищает и восстанавливает монопольное использование блокировки.
Пример смотри в статье Изменение конфигурации службы.
Смотри также
Обзор Службы,
Функции,
используемые службами, ChangeServiceConfig, OpenSCManager,
QueryServiceLockStatus,
Размещение и совместимость LockServiceDatabase |
||
К |
Windows XP |
Да |
л |
Windows 2000 Professional |
Да |
и |
Windows NT Workstation |
Да |
е |
Windows Me |
Нет |
н |
Windows 98 |
Нет |
т |
Windows 95 |
Нет |
С |
Windows Server 2003 |
Да |
е | Windows 2000 Server | Да |
р | Windows NT Server | Да |
в | ||
е | ||
р | ||
Используемая библиотека |
Advapi32.lib |
|
Используемая DLL | advapi32.dll | |
Заголовочный файл | ||
- объявлено в |
Winsvc.h |
|
- включено в |
Windows.h |
|
Unicode |
Нет |
|
Замечания по платформе |
Не имеется |