Функция QueryServiceLockStatus


Функция QueryServiceLockStatus извлекает данные о состоянии блокировки указанной базы данных диспетчера управления службами.

Синтаксис

BOOL QueryServiceLockStatus(
  SC_HANDLE hSCManager,
  LPQUERY_SERVICE_LOCK_STATUS lpLockStatus,
  DWORD cbBufSize,
  LPDWORD pcbBytesNeeded
);

Параметры

hSCManager

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

lpLockStatus

[out] Указатель на структуру QUERY_SERVICE_LOCK_STATUS, которая получает возвращенное состояние блокировки указанной базы данных, плюс строки, на которые указывают ее члены.

cbBufSize

[in] Размер буфера, на который указывает параметр lpLockStatus, в байтах.

pcbBytesNeeded

[out] Указатель на переменную, получающую число байтов, которое должно возвратить всю информацию о состоянии блокировки, если функция завершается ошибкой.

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

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

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

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

Код возврата Описание
ERROR_ACCESS_DENIED Дескриптор не имеет права доступа SC_MANAGER_QUERY_LOCK_STATUS.
ERROR_INSUFFICIENT_BUFFER Информации о состоянии блокировки больше, чем вместится в  буфер lpLockStatus. Число байтов, необходимых для получения всей информации возвращается в параметре pcbBytesNeeded . В lpLockStatus ничего не пишется.
ERROR_INVALID_HANDLE Указанный дескриптор недействителен.

Замечания

Функция QueryServiceLockStatus возвращает структуру QUERY_SERVICE_LOCK_STATUS, которая указывает, блокирована ли указанная база данных. Если база данных блокирована, структура предоставляет имя учетной записи пользователя, который владеет блокировкой и длину отрезка времени, в течение которого блокировка будет удерживаться.

Процесс вызывает функцию LockServiceDatabase, чтобы получить монопольное использование блокировки базы данных диспетчера управления службами и функцию UnlockServiceDatabase, чтобы освободиться от блокировки.

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

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

Смотри также

Обзор Службы, Функции, используемые службамиLockServiceDatabase, OpenSCManagerUnlockServiceDatabase, QUERY_SERVICE_LOCK_STATUS

Размещение и совместимость QueryServiceLockStatus 

К 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 Реализуется как QueryServiceLockStatusW (Unicode) и QueryServiceLockStatusA (ANSI).
 Замечания по платформе Не имеется

 

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

Hosted by uCoz