Структура SERVICE_STATUS_PROCESS имеет в своем составе информацию о службе. Функции EnumServicesStatusEx и QueryServiceStatusEx используют эту структуру, чтобы возвратить информацию о службе.
Синтаксис
typedef struct _SERVICE_STATUS_PROCESS { DWORD dwServiceType; DWORD dwCurrentState; DWORD dwControlsAccepted; DWORD dwWin32ExitCode; DWORD dwServiceSpecificExitCode; DWORD dwCheckPoint; DWORD dwWaitHint; DWORD dwProcessId; DWORD dwServiceFlags; } SERVICE_STATUS_PROCESS, *LPSERVICE_STATUS_PROCESS; |
Члены структуры
Тип службы. Этот член структуры может быть одним из следующих значений.
Значение | Предназначение |
---|---|
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 | Служба может взаимодействовать с рабочим столом.
Дополнительную информацию смотри в статье Диалоговые службы. |
Текущее состояние службы. Этот член структуры может быть одним из следующих значений.
Значение | Предназначение |
---|---|
SERVICE_STOPPED | Служба является не работающей. |
SERVICE_START_PENDING | Служба является запущенной. |
SERVICE_STOP_PENDING | Служба является остановленной. |
SERVICE_RUNNING | Служба является работающей. |
SERVICE_CONTINUE_PENDING | Служба продолжает ожидать. |
SERVICE_PAUSE_PENDING | Приостановленная служба является ожидающей. |
SERVICE_PAUSED | Служба является приостановленной. |
Управляющие коды служба принимает и обрабатывает в своем обработчике функции (см. 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. (Обратите внимание! на то, что, что эти управляющие коды нельзя отправить ControlService).
Управляющий код | Предназначение |
---|---|
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: Это значение не поддерживается. |
Код ошибки, который служба использует, чтобы сообщить об ошибке, которая происходит тогда, когда она запускается или останавливается. Чтобы возвратить код ошибки, который определен службе, служба должна установить это значение в ERROR_SERVICE_SPECIFIC_ERROR, указывая, что член структуры dwServiceSpecificExitCode имеет в своем составе код ошибки. Служба должна установить это значение в NO_ERROR, когда она запускается и после нормального завершения.
Специальный для службы код ошибки, который служба возвращает, когда происходит ошибка в то время как служба запускается или останавливается. Это значение игнорируется, если член структуры dwWin32ExitCode не устанавливается в ERROR_SERVICE_SPECIFIC_ERROR.
Значение контрольной точки службы периодически увеличивается на единицу, чтобы сообщить о своем продвижении в ходе длинного запуска, остановки, паузы или продолжения операции. Например, служба должна увеличивать это значение, поскольку она завершает каждого шага своей инициализации, когда она запускается. Пользовательский интерфейс программы, которая вызывала процедуру службы, использует это значение, чтобы отследить продвижение службы в ходе длинной операции. Это значение не действительно и должно быть нулем тогда, когда служба не запускается, не останавливается, не делает паузу или операция продолжает ожидать.
Предполагаемое время, требуемое для ожидания пуска, остановки, паузы или операции ожидания продолжения, в миллисекундах. Прежде, чем указанное время истечет, служба должна сделать свой следующий вызов функции SetServiceStatus или с увеличенным значением dwCheckPoint, или с изменением в dwCurrentState. Если время, заданное при передаче параметров dwWaitHint и dwCheckPoint не было увеличено, или параметр dwCurrentState не изменился, диспетчер управления службами или программа управления службой могут предположить, что произошла ошибка и служба должна быть остановлена.
Идентификатор процесса (PID) службы.
Этот член структуры может быть одним из следующих значений.
Значение | Предназначение |
---|---|
0 | Служба работает в процессе, который не системный
процесс, или она не запускается.
Если служба работает в процессе, который не системный процесс, dwProcessId является ненулевым. Если служба не запускается, dwProcessId - нуль. |
SERVICE_RUNS_IN_SYSTEM_PROCESS | Служба работает в системном процессе, который должен всегда запускаться. |
Смотри также
Обзор Службы, Структуры, используемые службами, EnumServicesStatusEx, QueryServiceStatusEx
Размещение и совместимость SERVICE_STATUS_PROCESS |
||
К | Windows XP | Да |
л | Windows 2000 Professional | Да |
и | Windows NT | Нет |
е | Windows Me | Да |
н | Windows 98 | Да |
т | Windows 95 | Да |
С | Windows Server 2003 | Да |
е | Windows 2000 Server | Да |
р | Windows NT Server | Нет |
в | ||
е | ||
р | ||
Используемая библиотека | - | |
Используемая DLL | - | |
Заголовочный файл | ||
- объявлено в | Winsvc.h | |
- включено в | Windows.h | |
Unicode | Нет | |
Замечания по платформе | Не имеется |