Функция QueryServiceStatusEx


Функция QueryServiceStatusEx извлекает текущее состояние указанной службы, основанное на указанном уровне защиты информации.

Синтаксис

BOOL QueryServiceStatusEx(
  SC_HANDLE hService,
  SC_STATUS_TYPE InfoLevel,
  LPBYTE lpBuffer,
  DWORD cbBufSize,
  LPDWORD pcbBytesNeeded
);

Параметры

hService

[in] Дескриптор службы. Этот дескриптор возвращается функцией CreateService или OpenService и он должен иметь право доступа SERIVCE_QUERY_STATUS. Дополнительную информацию смотри в статье Защита службы и права доступа

InfoLevel

[in] Возвращаемые атрибуты службы. Используйте флажок SC_STATUS_PROCESS_INFO, чтобы извлечь информацию состояния службы. Параметр lpBuffer  - указатель на структуру SERVICE_STATUS_PROCESS.

В настоящее время, никакие другие уровни защиты информации не определены.

lpBuffer

[out] Указатель на буфер, который получает информацию о статусе. Формат этих данных зависит от значения параметра InfoLevel.

Максимальный размер этого массива - 8 КБ. Чтобы определять требуемый размер, задайте значение ПУСТО (NULL) для этого параметра и 0 для параметра cbBufSize. Функция завершится ошибкой, а GetLastError возвратит значение ERROR_INSUFFICIENT_BUFFER. Параметр pcbBytesNeeded получит требуемый размер.

cbBufSize

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

pcbBytesNeeded

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

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

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

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

Код возврата Описание
ERROR_INVALID_HANDLE Дескриптор недействителен.
ERROR_ACCESS_DENIED Дескриптор не имеет права доступа SERVICE_QUERY_STATUS.
ERROR_INSUFFICIENT_BUFFER Буфер является слишком маленьким для структуры SERVICE_STATUS_PROCESS. В структуре ничто не было записано.
ERROR_INVALID_PARAMETER Член cbSize  структуры SERVICE_STATUS_PROCESS не действителен.
ERROR_INVALID_LEVEL Параметр InfoLevel имеет в своем составе неподдерживаемое значение.
ERROR_SHUTDOWN_IN_PROGRESS Система закрывается; эту функцию нельзя вызвать.

Замечания

Функция QueryServiceStatusEx возвращает новую информацию о состоянии службы, которая сообщается диспетчеру управления службами. Если служба изменила только свое состояние, функция не может еще обновить диспетчера управления службами. Приложения могут найти текущее состояние службы, запрашивая службы непосредственно при помощи использования функции ControlService с управляющим кодом SERVICE_CONTROL_INTERROGATE.

Идентификатор процесса (PID), возвращенный в структуре SERVICE_STATUS_PROCESS действителен при условии, что состояние службы имеет  одно из значений SERVICE_RUNNING, SERVICE_PAUSE_PENDING, SERVICE_PAUSED или SERVICE_CONTINUE_PENDING. Если служба находится в состоянии SERVICE_START_PENDING или SERVICE_STOP_PENDING, то идентификатор процесса (PID) не может  быть действительным и, если служба находится в состоянии SERVICE_STOPPED, то он никогда не действителен.

Смотри также

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

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

К Windows XP Да 
л Windows 2000 Professional Да
и Windows NT Нет
е 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 Нет
 Замечания по платформе Не имеется

 

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

Hosted by uCoz