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


Запросы на управление службами

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

  • Остановка службы (SERVICE_CONTROL_STOP).
  • Приостановка службы (SERVICE_CONTROL_PAUSE).
  • Возобновление выполнения приостановленной службы (SERVICE_CONTROL_CONTINUE).
  • Получение обновленных сведений о состоянии из службы (SERVICE_CONTROL_INTERROGATE).

Каждая служба задает значения элемента управления, которые будут приниматься и обрабатываться. Чтобы определить, какие из стандартных значений элементов управления принимаются службой, используйте функцию QueryServiceStatusEx или укажите значение элемента управления SERVICE_CONTROL_INTERROGATE в вызове функции ControlService. Элемент dwControlsAccepted структуры SERVICE_STATUS, возвращаемой этими функциями, указывает, может ли служба быть остановлена, приостановлена или возобновлена. Все службы принимают значение элемента управления SERVICE_CONTROL_INTERROGATE.

Функция QueryServiceStatusEx сообщает последнее состояние указанной службы, но не получает обновленное состояние от самой службы. Использование значения элемента управления SERVICE_CONTROL_INTERROGATE в вызове ControlService гарантирует, что возвращаемые сведения о состоянии являются текущими.

управление службой с помощью sc