# Предопределённые константы

Следующие константы определяются модулем и доступны, только если модуль либо собрали в PHP, либо динамически загрузили при выполнении кода.

Битовые маски типа службы Win32Service
Константа | Значение | Описание
--- | --- | ---
`WIN32_SERVICE_WIN32_OWN_PROCESS` | `0x00000010` | Служба работает в своём собственном процессе.
`WIN32_SERVICE_INTERACTIVE_PROCESS` | `0x00000100` | Служба может взаимодействовать с рабочим столом. Эта опция недоступна в Windows Vista и более поздних.
`WIN32_SERVICE_WIN32_OWN_PROCESS_INTERACTIVE` | `0x00000110` | Служба работает в своём собственном процессе и может взаимодействовать с рабочим столом. Эта опция недоступна в Windows Vista и более поздних.

Константы статуса службы Win32Service
Константа | Значение | Описание
--- | --- | ---
`WIN32_SERVICE_CONTINUE_PENDING` | `0x00000005` | Служба в ожидании выхода из состояния паузы.
`WIN32_SERVICE_PAUSE_PENDING` | `0x00000006` | Служба ожидает перехода в состояние паузы.
`WIN32_SERVICE_PAUSED` | `0x00000007` | Служба в состоянии паузы.
`WIN32_SERVICE_RUNNING` | `0x00000004` | Службу запустили.
`WIN32_SERVICE_START_PENDING` | `0x00000002` | Служба стартует.
`WIN32_SERVICE_STOP_PENDING` | `0x00000003` | Служба останавливается.
`WIN32_SERVICE_STOPPED` | `0x00000001` | Службу не запустили.

Константы обработки сообщений службы Win32Service
Константа | Значение | Описание
--- | --- | ---
`WIN32_SERVICE_CONTROL_CONTINUE` | `0x00000003` | Оповещает службу, что надо выйти из состояния паузы.
`WIN32_SERVICE_CONTROL_DEVICEEVENT` | `0x0000000B` |
`WIN32_SERVICE_CONTROL_HARDWAREPROFILECHANGE` | `0x0000000C` |
`WIN32_SERVICE_CONTROL_INTERROGATE` | `0x00000004` | Оповещает службу, что надо послать информацию по её текущему статусу в менеджер служб.
`WIN32_SERVICE_CONTROL_NETBINDADD` | `0x00000007` | Уведомляет сетевую службу о наличии нового компонента для привязки.
`WIN32_SERVICE_CONTROL_NETBINDDISABLE` | `0x0000000A` | Уведомляет сетевую службу о том, что одна из её привязок отключена.
`WIN32_SERVICE_CONTROL_NETBINDENABLE` | `0x00000009` | Уведомляет сетевую службу о том, что отключённая привязка включена.
`WIN32_SERVICE_CONTROL_NETBINDREMOVE` | `0x00000008` | Уведомляет сетевую службу о том, что компонент для привязки был удалён.
`WIN32_SERVICE_CONTROL_PARAMCHANGE` | `0x00000006` | Уведомляет службу о том, что её стартовые параметры изменились.
`WIN32_SERVICE_CONTROL_PAUSE` | `0x00000002` | Оповещает службу, что требуется перейти в режим паузы.
`WIN32_SERVICE_CONTROL_POWEREVENT` | `0x0000000D` |
`WIN32_SERVICE_CONTROL_PRESHUTDOWN` | `0x0000000F` | Оповещает службу, что система останавливается. Служба, которая обрабатывает такое сообщение, блокирует остановку системы до момента остановки службы или до превышения времени ожидания. Это значение не поддерживается ОС Windows Server 2003 и Windows XP/2000.
`WIN32_SERVICE_CONTROL_SESSIONCHANGE` | `0x0000000E` |
`WIN32_SERVICE_CONTROL_SHUTDOWN` | `0x00000005` | Оповещает службу, что система останавливается, а службе требуется выполнить корректную остановку. Служба, которая принимает такое сообщение, должна корректно завершить свои процессы. Менеджер служб отправляет такое сообщение, а затем прекращает отправлять сообщения службе.
`WIN32_SERVICE_CONTROL_STOP` | `0x00000001` | Оповещает службу, что требуется остановиться.

Принимаемые битовые маски обработки сообщений службы Win32Service
Константа | Значение | Описание
--- | --- | ---
`WIN32_SERVICE_ACCEPT_HARDWAREPROFILECHANGE` | `0x00000020` | Сервис уведомлен о том, что аппаратную конфигурацию компьютера изменили. Это разрешает системе отправить службе уведомление `WIN32_SERVICE_CONTROL_HARDWAREPROFILECHANGE`.
`WIN32_SERVICE_ACCEPT_NETBINDCHANGE` | `0x00000010` | Служба — сетевой компонент, который принимает изменения в своей привязке без необходимости остановки и перезапуска. Этот управляющий флаг разрешает службе принимать следующие уведомления: `WIN32_SERVICE_CONTROL_NETBINDADD`, `WIN32_SERVICE_CONTROL_NETBINDREMOVE`, `WIN32_SERVICE_CONTROL_NETBINDENABLE` и `WIN32_SERVICE_CONTROL_NETBINDDISABLE`.
`WIN32_SERVICE_ACCEPT_PARAMCHANGE` | `0x00000008` | Служба умеет перечитывать стартовые параметры без обязательных остановки и перезапуска. Этот управляющий флаг разрешает службе принимать следующие уведомления: `WIN32_SERVICE_CONTROL_PARAMCHANGE`.
`WIN32_SERVICE_ACCEPT_PAUSE_CONTINUE` | `0x00000002` | Службу разрешается приостанавливать и возобновлять. Этот код разрешает службе принимать сообщения `WIN32_SERVICE_CONTROL_PAUSE` и `WIN32_SERVICE_CONTROL_CONTINUE`.
`WIN32_SERVICE_ACCEPT_POWEREVENT` | `0x00000040` | Службу оповещают при изменении статуса электроснабжения. Разрешает системе отправлять службе уведомление `WIN32_SERVICE_CONTROL_POWEREVENT`.
`WIN32_SERVICE_ACCEPT_PRESHUTDOWN` | `0x00000100` | Служба умеет выполнять задачи при остановке системы. Этот код разрешает службе принимать сообщения `WIN32_SERVICE_CONTROL_PRESHUTDOWN`. Это значение не поддерживается ОС Windows Server 2003 и Windows XP/2000.
`WIN32_SERVICE_ACCEPT_SESSIONCHANGE` | `0x00000080` | Сервис оповещается при изменении статуса сессии на компьютере. Разрешает системе отправлять службе уведомление `WIN32_SERVICE_CONTROL_SESSIONCHANGE`. Не поддерживается в ОС Windows 2000.
`WIN32_SERVICE_ACCEPT_SHUTDOWN` | `0x00000004` | Службу требуется оповестить об остановке системы. Этот код разрешает службе принимать сообщения `WIN32_SERVICE_CONTROL_SHUTDOWN`.
`WIN32_SERVICE_ACCEPT_STOP` | `0x00000001` | Службу разрешается остановить. Этот код разрешает службе принимать сообщения `WIN32_SERVICE_CONTROL_STOP`.
`WIN32_SERVICE_ACCEPT_TIMECHANGE` | `0x00000200` | Служба оповещается, когда изменилось системное время. Разрешает системе посылать службе оповещение `WIN32_SERVICE_CONTROL_TIMECHANGE`. В Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP/2000 этот управляющий код не используется.
`WIN32_SERVICE_ACCEPT_TRIGGEREVENT` | `0x00000400` | Служба уведомляется, когда происходит событие, для которого её зарегистрировали. Разрешает системе отправлять службе оповещение `WIN32_SERVICE_CONTROL_TRIGGEREVENT`. В Windows Server 2008, Windows Vista, Windows Server 2003, и Windows XP/2000 этот управляющий код не используется.

Константы типа запуска службы Win32Service
Константа | Значение | Описание
--- | --- | ---
`WIN32_SERVICE_BOOT_START` | `0x00000000` | Драйвер устройства запускается системным загрузчиком. Это значение корректно только для служб драйверов.
`WIN32_SERVICE_SYSTEM_START` | `0x00000001` | Драйвер устройства запускается функцией IoInitSystem. Это значение корректно только для служб драйверов.
`WIN32_SERVICE_AUTO_START` | `0x00000002` | Служба запускается автоматически при запуске системы.
`WIN32_SERVICE_DEMAND_START` | `0x00000003` | Сервис стартует автоматически, если какой-либо процесс вызвал функцию StartService.
`WIN32_SERVICE_DISABLED` | `0x00000004` | Службу нельзя запустить. Попытка запуска службы вызовет ошибку `WIN32_ERROR_SERVICE_DISABLED`.

Константы управления ошибками службы Win32Service
Константа | Значение | Описание
--- | --- | ---
`WIN32_SERVICE_ERROR_IGNORE` | `0x00000000` | Запускающаяся программа игнорирует ошибки и продолжает запускаться.
`WIN32_SERVICE_ERROR_NORMAL` | `0x00000001` | Запускающаяся программа записывает ошибку в журнал ошибок, но продолжает запускаться.
`WIN32_SERVICE_ERROR_SEVERE` | `0x00000002` | Записывать ошибки старта программы в журнал событий. Процесс запуска продолжится, если запускается последняя известная хорошая конфигурация. В противном случае система перезапустится с последней известной хорошей конфигурацией.
`WIN32_SERVICE_ERROR_CRITICAL` | `0x00000003` | Записывать ошибки старта программы в лог событий, если возможно. Процесс запуска прекратится, если запускается последняя известная хорошая конфигурация. В противном случае система перезапустится с последней известной хорошей конфигурацией.

Константы флагов сервиса Win32Service
Константа | Значение | Описание
--- | --- | ---
`WIN32_SERVICE_RUNS_IN_SYSTEM_PROCESS` | `0x00000001` | Служба выполняется в системном процессе, который постоянно активен.

> Замечание:

> С Win32Service 1.0.0 эти константы больше не используются.

Коды ошибок службы Win32Service
Константа | Значение | Описание
--- | --- | ---
`WIN32_ERROR_ACCESS_DENIED` | `0x00000005` | У обработчика базы данных SCM нет прав доступа, которые соответствуют операции.
`WIN32_ERROR_CIRCULAR_DEPENDENCY` | `0x00000423` | Указали циклическую зависимость служб.
`WIN32_ERROR_DATABASE_DOES_NOT_EXIST` | `0x00000429` | База данных, которую указали, не существует.
`WIN32_ERROR_DEPENDENT_SERVICES_RUNNING` | `0x0000041B` | Службу нельзя остановить, поскольку от неё зависит другая запущенная служба.
`WIN32_ERROR_DUPLICATE_SERVICE_NAME` | `0x00000436` | Отображаемое имя уже существует в базе данных диспетчера служб либо в качестве имени службы, либо как другое отображаемое имя.
`WIN32_ERROR_FAILED_SERVICE_CONTROLLER_CONNECT` | `0x00000427` | Эта ошибка возвращается, если программа запускается как консольное приложение, а не как служба. Если программа выполняется как консольное приложение в целях отладки, структурируйте её так, чтобы код, специфичный для служб, не вызывался.
`WIN32_ERROR_INSUFFICIENT_BUFFER` | `0x0000007A` | Буфер слишком мал для структуры состояния службы. В структуру не будет ничего записано.
`WIN32_ERROR_INVALID_DATA` | `0x0000000D` | Указали некорректную структуру состояния службы.
`WIN32_ERROR_INVALID_HANDLE` | `0x00000006` | Обработчик для заданной базы данных диспетчера управления службами недействителен.
`WIN32_ERROR_INVALID_LEVEL` | `0x0000007C` | Параметр InfoLevel содержит неподдерживаемое значение.
`WIN32_ERROR_INVALID_NAME` | `0x0000007B` | Заданное имя службы некорректно.
`WIN32_ERROR_INVALID_PARAMETER` | `0x00000057` | Заданный параметр некорректен.
`WIN32_ERROR_INVALID_SERVICE_ACCOUNT` | `0x00000421` | Имя аккаунта пользователя, которое указали в параметре `user`, отсутствует. Смотрите описание функции win32_create_service().
`WIN32_ERROR_INVALID_SERVICE_CONTROL` | `0x0000041C` | Запрошенный контрольный код недействителен или неприемлем для службы.
`WIN32_ERROR_PATH_NOT_FOUND` | `0x00000003` | Исполняемый файл службы не найден.
`WIN32_ERROR_SERVICE_ALREADY_RUNNING` | `0x00000420` | Экземпляр службы уже запустили.
`WIN32_ERROR_SERVICE_CANNOT_ACCEPT_CTRL` | `0x00000425` | Запрошенный управляющий код нельзя послать службе, поскольку статус службы `WIN32_SERVICE_STOPPED`, `WIN32_SERVICE_START_PENDING` или `WIN32_SERVICE_STOP_PENDING`.
`WIN32_ERROR_SERVICE_DATABASE_LOCKED` | `0x0000041F` | База данных заблокирована.
`WIN32_ERROR_SERVICE_DEPENDENCY_DELETED` | `0x00000433` | Служба зависит от службы, которой нет или которую отметили для удаления.
`WIN32_ERROR_SERVICE_DEPENDENCY_FAIL` | `0x0000042C` | Служба зависит от другой службы, которая не может запуститься.
`WIN32_ERROR_SERVICE_DISABLED` | `0x00000422` | Служба запрещена.
`WIN32_ERROR_SERVICE_DOES_NOT_EXIST` | `0x00000424` | Заданную службу не установили.
`WIN32_ERROR_SERVICE_EXISTS` | `0x00000431` | Заданная служба уже есть в базе данных.
`WIN32_ERROR_SERVICE_LOGON_FAILED` | `0x0000042D` | Служба не запускается из-за проблем авторизации. Такая ошибка возникает, если службу настроили на запуск под учётной записью, у которой нет прав запускаться как службе (Log on as a service).
`WIN32_ERROR_SERVICE_MARKED_FOR_DELETE` | `0x00000430` | Заданную службу уже пометили для удаления.
`WIN32_ERROR_SERVICE_NO_THREAD` | `0x0000041E` | Для службы нельзя создать поток.
`WIN32_ERROR_SERVICE_NOT_ACTIVE` | `0x00000426` | Службу не запустили.
`WIN32_ERROR_SERVICE_REQUEST_TIMEOUT` | `0x0000041D` | Процесс службы запустили, но он не вызывал функцию StartServiceCtrlDispatcher, или поток, который вызвал функцию StartServiceCtrlDispatcher, заблокировала функция-обработчик управления.
`WIN32_ERROR_SHUTDOWN_IN_PROGRESS` | `0x0000045B` | Система останавливается; эту функцию нельзя вызвать.
`WIN32_ERROR_SERVICE_SPECIFIC_ERROR` | `0x0000042A` | Служба вернула свой код ошибки.
`WIN32_NO_ERROR` | `0x00000000` | Ошибки не возникали.

Базовые классы приоритетов службы Win32Service
Константа | Значение | Описание
--- | --- | ---
`WIN32_ABOVE_NORMAL_PRIORITY_CLASS` | `0x00008000` | Приоритет процесса выше WIN32_NORMAL_PRIORITY_CLASS, но ниже WIN32_HIGH_PRIORITY_CLASS.
`WIN32_BELOW_NORMAL_PRIORITY_CLASS` | `0x00004000` | Приоритет процесса выше WIN32_IDLE_PRIORITY_CLASS, но ниже WIN32_NORMAL_PRIORITY_CLASS.
`WIN32_HIGH_PRIORITY_CLASS` | `0x00000080` | Процесс выполняет критичную по времени задачу и его требуется запустить немедленно. Потоки этого процесса опережают потоки обычных и ожидающих процессов. Например, «Диспетчер задач», который должен откликаться настолько быстро, насколько возможно. Будьте крайне осторожны с этим приоритетом, поскольку приложения, которые с ним работают, исчерпают почти все процессорные ресурсы.
`WIN32_IDLE_PRIORITY_CLASS` | `0x00000040` | Процессы, чьи потоки работают только когда система находится в ожидании. Потоки этих процессов уступают потокам всех остальных процессов, запущенных с более высоким приоритетом. Например, «Хранитель экрана». Этот уровень приоритета наследуется каждым потомком процесса.
`WIN32_NORMAL_PRIORITY_CLASS` | `0x00000020` | Процесс без каких-либо особых потребностей в приоритизации
`WIN32_REALTIME_PRIORITY_CLASS` | `0x00000100` | Самый высокий приоритет. Потоки таких процессов опережают потоки остальных процессов, включая процессы операционной системы, которые выполняют важные задачи. Например, процесс реального времени, который выполняется с высокой частотой, иногда приводит к тому, что ОС перестанет очищать дисковые кеши или мышь перестанет реагировать на перемещение.

Действия при восстановлении службы Win32Service
Константа | Значение | Описание
--- | --- | ---
`WIN32_SC_ACTION_NONE` | `0x00000000` | Никаких действий.
`WIN32_SC_ACTION_RESTART` | `0x00000001` | Перезапуск сервиса.
`WIN32_SC_ACTION_REBOOT` | `0x00000002` | Перезапуск сервера.
`WIN32_SC_ACTION_RUN_COMMAND` | `0x00000003` | Выполнение команды.

Информационные константы службы Win32Service
Константа | Значение | Описание
--- | --- | ---
`WIN32_INFO_SERVICE` | "service" |
`WIN32_INFO_DISPLAY` | "display" |
`WIN32_INFO_USER` | "user" |
`WIN32_INFO_PASSWORD` | "password" |
`WIN32_INFO_PATH` | "path" |
`WIN32_INFO_PARAMS` | "params" |
`WIN32_INFO_DESCRIPTION` | "description" |
`WIN32_INFO_START_TYPE` | "start_type" |
`WIN32_INFO_LOAD_ORDER` | "load_order" |
`WIN32_INFO_SVC_TYPE` | "svc_type" |
`WIN32_INFO_ERROR_CONTROL` | "error_control" |
`WIN32_INFO_DELAYED_START` | "delayed_start" |
`WIN32_INFO_BASE_PRIORITY` | "base_priority" |
`WIN32_INFO_DEPENDENCIES` | "dependencies" |
`WIN32_INFO_RECOVERY_DELAY` | "recovery_delay" |
`WIN32_INFO_RECOVERY_ACTION_1` | "recovery_action_1" |
`WIN32_INFO_RECOVERY_ACTION_2` | "recovery_action_2" |
`WIN32_INFO_RECOVERY_ACTION_3` | "recovery_action_3" |
`WIN32_INFO_RECOVERY_RESET_PERIOD` | "recovery_reset_period" |
`INFO_RECOVERY_ENABLED` | "recovery_enabled" |
`WIN32_INFO_RECOVERY_REBOOT_MSG` | "recovery_reboot_msg" |
`WIN32_INFO_RECOVERY_COMMAND` | "recovery_command" |

Константы прав доступа службы Win32Service
Константа | Значение | Описание
--- | --- | ---
`WIN32_SERVICE_ALL_ACCESS` | `0x000F003F` |
`WIN32_SERVICE_CHANGE_CONFIG` | `0x00000002` |
`WIN32_SERVICE_ENUMERATE_DEPENDENTS` | `0x00000008` |
`WIN32_SERVICE_INTERROGATE` | `0x00000080` |
`WIN32_SERVICE_PAUSE_CONTINUE` | `0x00000040` |
`WIN32_SERVICE_QUERY_CONFIG` | `0x00000001` |
`WIN32_SERVICE_QUERY_STATUS` | `0x00000004` |
`WIN32_SERVICE_START` | `0x00000010` |
`WIN32_SERVICE_STOP` | `0x00000020` |
`WIN32_SERVICE_USER_DEFINED_CONTROL` | `0x00000100` |
`WIN32_ACCESS_SYSTEM_SECURITY` | `0x00001000` |
`WIN32_DELETE` | `0x00010000` |
`WIN32_READ_CONTROL` | `0x00020000` |
`WIN32_WRITE_DAC` | `0x00040000` |
`WIN32_WRITE_OWNER` | `0x00080000` |
`WIN32_GENERIC_READ` | Включает права: `WIN32_STANDARD_RIGHTS_READ`, `WIN32_SERVICE_QUERY_CONFIG`, `WIN32_SERVICE_QUERY_STATUS`, `WIN32_SERVICE_INTERROGATE`, `WIN32_SERVICE_ENUMERATE_DEPENDENTS` |
`WIN32_GENERIC_WRITE` | Включает права: `WIN32_STANDARD_RIGHTS_WRITE`, `WIN32_SERVICE_CHANGE_CONFIG` |
`WIN32_GENERIC_EXECUTE` | Включает права: `WIN32_STANDARD_RIGHTS_EXECUTE`, `WIN32_SERVICE_START`, `WIN32_SERVICE_STOP`, `WIN32_SERVICE_PAUSE_CONTINUE`, `WIN32_SERVICE_USER_DEFINED_CONTROL` |

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open