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


структура 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