Структура 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; |
Члены структуры
Тип службы. Этот член структуры может быть одним из следующих значений.
Значение | Предназначение |
---|---|
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.
|
|
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 | Нет | |
Замечания по платформе | Не имеется |