Поделиться через


Функция QueryServiceLockStatusA (winsvc.h)

[Эта функция не действует в Windows Vista.]

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

Синтаксис

BOOL QueryServiceLockStatusA(
  [in]            SC_HANDLE                    hSCManager,
  [out, optional] LPQUERY_SERVICE_LOCK_STATUSA lpLockStatus,
  [in]            DWORD                        cbBufSize,
  [out]           LPDWORD                      pcbBytesNeeded
);

Параметры

[in] hSCManager

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

[out, optional] lpLockStatus

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

[in] cbBufSize

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

[out] pcbBytesNeeded

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

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

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

Если функция выполняется неудачно, возвращается нулевое значение. Дополнительные сведения об ошибке можно получить, вызвав 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 для снятия блокировки.

Примечание

Заголовок winsvc.h определяет QueryServiceLockStatus как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header winsvc.h (включая Windows.h)
Библиотека Advapi32.lib
DLL Advapi32.dll

См. также раздел

LockServiceDatabase

OpenSCManager

QUERY_SERVICE_LOCK_STATUS

Конфигурация службы.

Функции службы

UnlockServiceDatabase