Функция 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, OpenSCManager, UnlockServiceDatabase, 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). | |
| Замечания по платформе | Не имеется | |