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


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

Для отправки управляющих запросов к работающей службе программа управления службой использует функцию 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