Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Извлекает текущее состояние указанной службы на основе указанного уровня информации.
Синтаксис
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 |