Функция LockServiceDatabase


Функция LockServiceDatabase запрашивает монопольное использование блокировки базы данных диспетчера управления службами. Только один процесс может иметь блокировку в любое данное время.

Синтаксис 

SC_LOCK LockServiceDatabase(
  SC_HANDLE hSCManager
);

Параметры

hSCManager
[in] Дескриптор базы данных диспетчера управления службами. Этот дескриптор возвращается функцией  OpenSCManager и должен иметь право доступа SC_MANAGER_LOCK. Дополнительную информацию смотри в статье Защита службы и права доступа.

Возвращаемые значения

Если функция завершается успешно, возвращаемое значение - блокировка указанной базы данных диспетчера управления службами.

Если функция завершается ошибкой, возвращаемое значение - ПУСТО (NULL). Чтобы получить дополнительные данные об ошибке, вызовите функцию GetLastError.

Ниже перечисленные коды ошибок могут быть установлены диспетчером управления службами. Другие коды ошибок могут быть установлены функциями реестра, которые вызываются диспетчером управления службами.

Код возврата Описание
ERROR_ACCESS_DENIED У дескриптора нет прав доступа SC_MANAGER_LOCK.
ERROR_INVALID_HANDLE Указанный дескриптор - недопустим.
ERROR_SERVICE_DATABASE_LOCKED База данных заблокирована.

Замечания 

Блокировка - это протокол, который используется программами установки и конфигурации, а так же диспетчером управления службами, чтобы преобразовывать в последовательную форму  доступ к дереву служб в реестре. Только один раз диспетчер управления службами требует монопольного использования блокировки - когда он запускает службу.

Запрошенная блокировка базы данных SCM не допускает запуск служб диспетчером управления службами до тех пор, пока блокировка не будет отменена.

Вызов функции StartService, чтобы запустить службу в блокированной базе данные завершается ошибкой. Нет других функций диспетчера управления службами, на которые бы повлияла блокировка. 

Блокировка удерживается до тех пор, пока задается дескриптор SC_LOCK при последовательных вызовах функции UnlockServiceDatabaseЕсли процесс, который владеет блокировкой, завершает свою работу, диспетчер управления службами автоматически  очищает и восстанавливает монопольное использование блокировки.

Демонстрационный код

Пример смотри в статье Изменение конфигурации службы.

Смотри также

Обзор Службы, Функции, используемые службамиChangeServiceConfig, OpenSCManager, QueryServiceLockStatus, SetServiceObjectSecurity, StartService, UnlockServiceDatabase

Размещение и совместимость 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

Нет

 Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
В оглавление справки

Hosted by uCoz