Функция QueryServiceStatusEx (winsvc.h)
Извлекает текущее состояние указанной службы на основе указанного уровня информации.
Синтаксис
BOOL QueryServiceStatusEx(
[in] SC_HANDLE hService,
[in] SC_STATUS_TYPE InfoLevel,
[out, optional] LPBYTE lpBuffer,
[in] DWORD cbBufSize,
[out] LPDWORD pcbBytesNeeded
);
Параметры
[in] hService
Дескриптор службы. Этот дескриптор возвращается функцией CreateService или OpenService и должен иметь право доступа SERVICE_QUERY_STATUS. Дополнительные сведения см. в разделе Service Security and Access Rights.
[in] InfoLevel
Возвращаемые атрибуты службы. Используйте SC_STATUS_PROCESS_INFO для получения сведений о состоянии службы. Параметр lpBuffer является указателем на структуру SERVICE_STATUS_PROCESS .
В настоящее время другие уровни информации не определены.
[out, optional] lpBuffer
Указатель на буфер, который получает сведения о состоянии. Формат этих данных зависит от значения параметра InfoLevel .
Максимальный размер этого массива составляет 8 КБ байт. Чтобы определить требуемый размер, укажите значение NULL для этого параметра и 0 для параметра cbBufSize . Функция завершится ошибкой, и GetLastError вернет ERROR_INSUFFICIENT_BUFFER. Параметр pcbBytesNeeded получит необходимый размер.
[in] cbBufSize
Размер буфера, на который указывает параметр lpBuffer , в байтах.
[out] pcbBytesNeeded
Указатель на переменную, которая получает количество байтов, необходимое для хранения всех сведений о состоянии, если функция завершается сбоем с ERROR_INSUFFICIENT_BUFFER.
Возвращаемое значение
Если функция выполняется успешно, возвращается ненулевое значение.
Если функция выполняется неудачно, возвращается нулевое значение. Дополнительные сведения об ошибке можно получить, вызвав GetLastError. Могут быть возвращены следующие ошибки.
Код возврата | Описание |
---|---|
|
Дескриптор недействителен. |
|
Дескриптор не имеет права доступа к SERVICE_QUERY_STATUS. |
|
Буфер слишком мал для структуры SERVICE_STATUS_PROCESS . В структуру ничего не было написано. |
|
Недопустимый член cbSizeSERVICE_STATUS_PROCESS . |
|
Параметр InfoLevel содержит неподдерживаемое значение. |
|
Система завершает работу; Эта функция не может быть вызвана. |
Комментарии
Функция QueryServiceStatusEx возвращает последние сведения о состоянии службы, сообщаемые диспетчеру управления службами. Если служба только что изменила свое состояние, возможно, она еще не обновила диспетчер управления службой.
Идентификатор процесса, возвращаемый в структуре SERVICE_STATUS_PROCESS , действителен при условии, что служба находится в состоянии SERVICE_RUNNING, SERVICE_PAUSE_PENDING, SERVICE_PAUSED или SERVICE_CONTINUE_PENDING. Однако если служба находится в состоянии SERVICE_START_PENDING или SERVICE_STOP_PENDING, идентификатор процесса может быть недопустимым, а если служба находится в состоянии SERVICE_STOPPED, он никогда не будет допустимым.
Примеры
Пример см. в разделе Запуск службы или Остановка службы.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | winsvc.h (включая Windows.h) |
Библиотека | Advapi32.lib |
DLL | Advapi32.dll |