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


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

Содержит параметры управления службой.

Синтаксис

typedef struct _SERVICE_CONTROL_STATUS_REASON_PARAMSA {
  DWORD                  dwReason;
  LPSTR                  pszComment;
  SERVICE_STATUS_PROCESS ServiceStatus;
} SERVICE_CONTROL_STATUS_REASON_PARAMSA, *PSERVICE_CONTROL_STATUS_REASON_PARAMSA;

Члены

dwReason

Причина изменения состояния службы на SERVICE_CONTROL_STOP. Если текущий код элемента управления не SERVICE_CONTROL_STOP, этот элемент игнорируется.

Этот элемент должен быть задан в сочетании одного общего кода, одного основного кода причины и одного дополнительного кода причины.

Ниже приведены общие коды причин.

Ценность Значение
SERVICE_STOP_REASON_FLAG_CUSTOM
0x20000000
Код причины определяется пользователем. Если этот флаг отсутствует, код причины определяется системой. Если этот флаг указан с кодом системной причины, вызов функции завершается сбоем.

Пользователи могут создавать пользовательские коды основных причин в диапазоне SERVICE_STOP_REASON_MAJOR_MIN_CUSTOM (0x00400000) через SERVICE_STOP_REASON_MAJOR_MAX_CUSTOM (0x00ff0000) и дополнительные коды причин в диапазоне SERVICE_STOP_REASON_MINOR_MIN_CUSTOM (0x00000100) через SERVICE_STOP_REASON_MINOR_MAX_CUSTOM (0x0000FFFF).

SERVICE_STOP_REASON_FLAG_PLANNED
0x40000000
Запланирована остановка службы.
SERVICE_STOP_REASON_FLAG_UNPLANNED
0x10000000
Остановка службы не была запланирована.
 

Ниже приведены основные коды причин.

Ценность Значение
SERVICE_STOP_REASON_MAJOR_APPLICATION
0x00050000
Проблема с приложением.
SERVICE_STOP_REASON_MAJOR_HARDWARE
0x00020000
Проблема с оборудованием.
SERVICE_STOP_REASON_MAJOR_NONE
0x00060000
Нет основной причины.
SERVICE_STOP_REASON_MAJOR_OPERATINGSYSTEM
0x00030000
Проблема с операционной системой.
SERVICE_STOP_REASON_MAJOR_OTHER
0x00010000
Другая проблема.
SERVICE_STOP_REASON_MAJOR_SOFTWARE
0x00040000
Проблема с программным обеспечением.
 

Ниже приведены коды незначительных причин.

Ценность Значение
SERVICE_STOP_REASON_MINOR_DISK
0x00000008
Диск.
SERVICE_STOP_REASON_MINOR_ENVIRONMENT
0x0000000a
Окружающая среда.
SERVICE_STOP_REASON_MINOR_HARDWARE_DRIVER
0x0000000b
Водитель.
SERVICE_STOP_REASON_MINOR_HUNG
0x00000006
Не реагирующий.
SERVICE_STOP_REASON_MINOR_INSTALLATION
0x00000003
Установка.
SERVICE_STOP_REASON_MINOR_MAINTENANCE
0x00000002
Содержание.
SERVICE_STOP_REASON_MINOR_MMC
0x00000016
Проблема MMC.
SERVICE_STOP_REASON_MINOR_NETWORK_CONNECTIVITY
0x00000011
Сетевое подключение.
SERVICE_STOP_REASON_MINOR_NETWORKCARD
0x00000009
Сетевая карта.
SERVICE_STOP_REASON_MINOR_NONE
0x00060000
Нет незначительных причин.
SERVICE_STOP_REASON_MINOR_OTHER
0x00000001
Другая проблема.
SERVICE_STOP_REASON_MINOR_OTHERDRIVER
0x0000000c
Другое событие драйвера.
SERVICE_STOP_REASON_MINOR_RECONFIG
0x00000005
Перенастроить.
SERVICE_STOP_REASON_MINOR_SECURITY
0x00000010
Проблема безопасности.
SERVICE_STOP_REASON_MINOR_SECURITYFIX
0x0000000f
Обновление системы безопасности.
SERVICE_STOP_REASON_MINOR_SECURITYFIX_UNINSTALL
0x00000015
Удаление обновления системы безопасности.
SERVICE_STOP_REASON_MINOR_SERVICEPACK
0x0000000d
Пакет обновления.
SERVICE_STOP_REASON_MINOR_SERVICEPACK_UNINSTALL
0x00000013
Удаление пакета обновления.
SERVICE_STOP_REASON_MINOR_SOFTWARE_UPDATE
0x0000000e
Обновление программного обеспечения.
SERVICE_STOP_REASON_MINOR_SOFTWARE_UPDATE_UNINSTALL
0x0000000e
Удаление обновления программного обеспечения.
SERVICE_STOP_REASON_MINOR_UNSTABLE
0x00000007
Нестабильный.
SERVICE_STOP_REASON_MINOR_UPGRADE
0x00000004
Модернизировать.
SERVICE_STOP_REASON_MINOR_WMI
0x00000012
Проблема WMI.

pszComment

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

ServiceStatus

Указатель на структуру SERVICE_STATUS_PROCESS, которая получает последние сведения о состоянии службы. Возвращаемые сведения отражают последнее состояние, которое служба сообщила диспетчеру управления службами.

Диспетчер управления службами заполняет структуру, только если ControlServiceEx возвращает один из следующих кодов ошибок: NO_ERROR, ERROR_INVALID_SERVICE_CONTROL, ERROR_SERVICE_CANNOT_ACCEPT_CTRL или ERROR_SERVICE_NOT_ACTIVE. В противном случае структура не заполняется.

Замечания

Заметка

Заголовок winsvc.h определяет SERVICE_CONTROL_STATUS_REASON_PARAMS как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows Vista [только классические приложения]
минимальный поддерживаемый сервер Windows Server 2008 [только классические приложения]
заголовка winsvc.h (включая Windows.h)

См. также

ControlServiceEx

SERVICE_STATUS_PROCESS