Поделиться через


структура SERVICE_STATUS_PROCESS (winsvc.h)

Содержит сведения о состоянии процесса для службы. Эта структура используется в функциях ControlServiceEx, EnumServicesStatusEx, NotifyServiceStatusChange и 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;

Члены

dwServiceType

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

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

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

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

Дополнительные сведения см. в разделе Интерактивные службы.

dwCurrentState

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

Значение Значение
SERVICE_CONTINUE_PENDING
0x00000005
Служба будет продолжена.
SERVICE_PAUSE_PENDING
0x00000006
Служба приостанавливается.
SERVICE_PAUSED
0x00000007
Служба приостановлена.
SERVICE_RUNNING
0x00000004
Служба запущена.
SERVICE_START_PENDING
0x00000002
Служба запускается.
SERVICE_STOP_PENDING
0x00000003
Служба останавливается.
SERVICE_STOPPED
0x00000001
Служба остановлена.

dwControlsAccepted

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

Ниже приведены коды элементов управления.

Код элемента управления Значение
SERVICE_ACCEPT_NETBINDCHANGE
0x00000010
Служба — это сетевой компонент, который может принимать изменения в привязке без остановки и перезапуска.

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

SERVICE_ACCEPT_PARAMCHANGE
0x00000008
Служба может повторно считывать параметры запуска без остановки и перезапуска.

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

SERVICE_ACCEPT_PAUSE_CONTINUE
0x00000002
Службу можно приостановить и продолжить.

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

SERVICE_ACCEPT_PRESHUTDOWN
0x00000100
Служба может выполнять задачи предварительного завершения.

Этот код элемента управления позволяет службе получать уведомления SERVICE_CONTROL_PRESHUTDOWN . Обратите внимание, что ControlService и ControlServiceEx не могут отправить это уведомление; Только система может отправить его.

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

SERVICE_ACCEPT_SHUTDOWN
0x00000004
Служба получает уведомление при завершении работы системы.

Этот код элемента управления позволяет службе получать уведомления SERVICE_CONTROL_SHUTDOWN . Обратите внимание, что ControlService и ControlServiceEx не могут отправить это уведомление; Только система может отправить его.

SERVICE_ACCEPT_STOP
0x00000001
Службу можно остановить.

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

 

Этот элемент также может содержать следующие расширенные коды элементов управления, которые поддерживаются только HandlerEx. (Обратите внимание, что эти коды элементов управления не могут быть отправлены ControlService или ControlServiceEx.)

Код элемента управления Значение
SERVICE_ACCEPT_HARDWAREPROFILECHANGE
0x00000020
Служба получает уведомление при изменении профиля оборудования компьютера. Это позволяет системе отправлять SERVICE_CONTROL_HARDWAREPROFILECHANGE уведомления в службу.
SERVICE_ACCEPT_POWEREVENT
0x00000040
Служба получает уведомление при изменении состояния питания компьютера. Это позволяет системе отправлять SERVICE_CONTROL_POWEREVENT уведомления в службу.
SERVICE_ACCEPT_SESSIONCHANGE
0x00000080
Служба получает уведомление при изменении состояния сеанса компьютера. Это позволяет системе отправлять SERVICE_CONTROL_SESSIONCHANGE уведомления в службу.

dwWin32ExitCode

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

dwServiceSpecificExitCode

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

dwCheckPoint

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

dwWaitHint

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

dwProcessId

Идентификатор процесса службы.

dwServiceFlags

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

Значение Значение
0
Служба выполняется в процессе, который не является системным процессом или не выполняется.

Если служба выполняется в процессе, который не является системным, значение dwProcessId не равно нулю. Если служба не запущена, значение dwProcessId равно нулю.

SERVICE_RUNS_IN_SYSTEM_PROCESS
0x00000001
Служба выполняется в системном процессе, который должен выполняться всегда.

Требования

   
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Верхняя часть winsvc.h (включая Windows.h)

См. также раздел

ControlServiceEx

EnumServicesStatusEx

NotifyServiceStatusChange

QueryServiceStatusEx