Структура SERVICE_STATUS


Структура SERVICE_STATUS имеет в своем составе информацию о службе. Функции ControlService, EnumDependentServices, EnumServicesStatus и QueryServiceStatus используют эту структуру, чтобы возвратить информацию о службе. Служба использует эту структуру в функции SetServiceStatus, чтобы сообщать о ее текущем состоянии диспетчеру управления службами.

Синтаксис

typedef struct _SERVICE_STATUS {
  DWORD dwServiceType;
  DWORD dwCurrentState;
  DWORD dwControlsAccepted;
  DWORD dwWin32ExitCode;
  DWORD dwServiceSpecificExitCode;
  DWORD dwCheckPoint;
  DWORD dwWaitHint;
} SERVICE_STATUS, 
*LPSERVICE_STATUS;

Члены структуры

dwServiceType

Тип службы. Этот член структуры может быть одним из следующих значений.

Значение Предназначение
SERVICE_FILE_SYSTEM_DRIVER Служба - драйвер файловой системы.
SERVICE_KERNEL_DRIVER Служба - драйвер устройства.
SERVICE_WIN32_OWN_PROCESS Служба запускается в своем собственном процессе.
SERVICE_WIN32_SHARE_PROCESS Служба совместно использует процесс с другими службами.

 

Если тип службы является или SERVICE_WIN32_OWN_PROCESS, или SERVICE_WIN32_SHARE_PROCESS, и служба запускается в контексте учетной записи LocalSystem, может также определиться и следующий тип.

Значение Предназначение
SERVICE_INTERACTIVE_PROCESS Служба может взаимодействовать с рабочим столом.

Дополнительную информацию смотри в статье Диалоговые службы.

dwCurrentState

Текущее состояние службы. Этот член структуры может быть одним из следующих значений.

Значение Предназначение
SERVICE_CONTINUE_PENDING Продолжение работы службы ожидается.
SERVICE_PAUSE_PENDING Приостановка работы службы ожидается.
SERVICE_PAUSED Служба приостановлена.
SERVICE_RUNNING Служба в рабочем состоянии.
SERVICE_START_PENDING Служба запускается.
SERVICE_STOP_PENDING Служба останавливается.
SERVICE_STOPPED Служба не в рабочем состоянии.

dwControlsAccepted

Управляющие коды служба принимает и обрабатывает в своем обработчике функции (см. описание функций Handler и HandlerEx). Процесс пользовательского интерфейса может управлять службой, задавая команду управления в функции ControlService. По умолчанию, все службы принимают значение SERVICE_CONTROL_INTERROGATE.

Ниже следуют управляющие коды.

Управляющий код Предназначение
SERVICE_ACCEPT_NETBINDCHANGE Служба - сетевой компонент, который может принять изменения в своем связывании, не останавливаясь и не перезапускаясь.

Этот управляющий код позволяет службе получать уведомления SERVICE_CONTROL_NETBINDADD, SERVICE_CONTROL_NETBINDREMOVE, SERVICE_CONTROL_NETBINDENABLE и SERVICE_CONTROL_NETBINDDISABLE.

Windows NT:  Это значение не поддерживается.
SERVICE_ACCEPT_PARAMCHANGE Служба может перечитать свои параметры запуска, не останавливаясь и не перезапускаясь.

Этот управляющий код позволяет службе получать уведомления SERVICE_CONTROL_PARAMCHANGE.

Windows NT:  Это значение не поддерживается.
SERVICE_ACCEPT_PAUSE_CONTINUE Служба может приостановиться и продолжить работу.

Этот управляющий код позволяет службе получать уведомления SERVICE_CONTROL_PAUSE и SERVICE_CONTROL_CONTINUE.

SERVICE_ACCEPT_SHUTDOWN Служба уведомляется, когда происходит  закрытие системы. 

Этот управляющий код позволяет службе получать уведомления SERVICE_CONTROL_SHUTDOWN.

Обратите внимание! на то, что это функция ControlService не может отправить это уведомление; только система может отправить его.
SERVICE_ACCEPT_STOP Служба может остановиться.

Этот управляющий код позволяет службе получать уведомления  SERVICE_CONTROL_STOP.

Это значение может также иметь в своем составе и следующие расширенные управляющие коды, которые поддерживаются только HandlerEx.

Управляющий код Предназначение
SERVICE_ACCEPT_HARDWAREPROFILECHANGE Служба уведомляется, когда профиль аппаратных средств компьютера изменился. Это дает возможность системе отправить уведомления SERVICE_CONTROL_HARDWAREPROFILECHANGE службе.

Windows NT:  Это значение не поддерживается.

SERVICE_ACCEPT_POWEREVENT Служба уведомляется, когда состояние электропитания компьютера изменилось. Это дает возможность системе отправить уведомления SERVICE_CONTROL_POWEREVENT службе.

Windows NT:   Это значение не поддерживается.

SERVICE_ACCEPT_SESSIONCHANGE Служба уведомляется, когда состояние сессии компьютера изменилось. Это дает возможность системе отправить уведомления SERVICE_CONTROL_SESSIONCHANGE службе.

Windows 2000/NT:   Это значение не поддерживается.

dwWin32ExitCode

Код ошибки служба использует, чтобы сообщить об ошибке, которая происходит, когда она запускается или останавливается. Чтобы возвратить код ошибки, который определен службе, служба должна установить это значение в ERROR_SERVICE_SPECIFIC_ERROR, указывая, что член структуры dwServiceSpecificExitCode имеет в своем составе код ошибки. Служба должна установить это значение в NO_ERROR, когда она запускается и после нормального завершения.

dwServiceSpecificExitCode

Специальный для службы код ошибки, который служба возвращает, когда происходит ошибка в то время как служба запускается или останавливается. Это значение игнорируется, если член структуры dwWin32ExitCode не устанавливается в ERROR_SERVICE_SPECIFIC_ERROR.

dwCheckPoint

Значение контрольной точки службы периодически увеличивается на единицу, чтобы сообщить о своем продвижении в ходе длинного запуска, остановки, паузы или продолжения операции. Например, служба, когда она запускается, должна увеличивать это значение, поскольку она завершает каждый шаг своей инициализации. Пользовательский интерфейс программы, который вызывал процедуру службы, использует это значение, чтобы отследить продвижение службы в ходе длинной операции. Это значение не действительно и должно быть нулем тогда, когда служба не запускается, не останавливается, не делает паузу или операция продолжает ожидать.

dwWaitHint

Предполагаемое время, требуемое для ожидания пуска, остановки, паузы или операции ожидания продолжения, в миллисекундах. Прежде, чем указанное время истечет, служба должна сделать свой следующий вызов функции SetServiceStatus или с увеличенным значением dwCheckPoint, или с изменением в dwCurrentState. Если время, заданное параметрами dwWaitHint и dwCheckPoint не было увеличено, или параметр dwCurrentState не изменился, диспетчер управления службами или программа управления службой могут предположить, что произошла ошибка и служба должна быть остановлена.

Смотри также

Обзор Службы, Структуры, используемые службамиControlService, EnumDependentServices, EnumServicesStatus, QueryServiceStatus, SetServiceStatus

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

К Windows XP Да 
л Windows 2000 Professional Да
и Windows NT  Workstation Да
е Windows Me Да
н Windows 98 Да
т Windows 95 Да
 
С Windows Server 2003 Да
е Windows 2000 Server Да
р Windows NT Server Да 
в    
е    
р    
Используемая библиотека -
Используемая DLL -
 Заголовочный файл  
- объявлено в Winsvc.h
 - включено в Windows.h
 Unicode Нет
 Замечания по платформе Не имеется

 

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

Hosted by uCoz