Запуск службы


Чтобы запустить службу или сервисный драйвер, программа управления службой использует функцию StartService. Функция StartService завершается ошибкой, если база данных блокирована. Если это происходит, программа управления службой должна ждать несколько секунд и вызывать StartService снова. Она может проверить текущее состояние блокировки базы данных, вызывая функцию QueryServiceLockStatus.

 Если программа управления службой запускает службу, она может использовать функцию StartService, чтобы определить массив параметров, которые будут переданы функции ServiceMain службы.  Функцией StartService возвращаются значения после того как будет создан новый поток, чтобы выполнить функцию ServiceMain. Программа управления службой может восстановить состояние недавно запущенной службы в структуре SERVICE_STATUS, вызывая функцию QueryServiceStatus. В ходе инициализации, член этой структуры  dwCurrentState должен быть SERVICE_START_PENDING. Член структуры dwWaitHint - это временной интервал, в миллисекундах, который указывает, как долго программа управления службой должна ждать перед вызовом QueryServiceStatus снова. Когда инициализация завершается полностью, служба изменяет значение члена структуры dwCurrentState на SERVICE_RUNNING.

Диспетчер управления службами не поддерживает передачу специальных переменных окружающей среды в службу при запуске. Кроме того, диспетчер управления службами не обнаруживает и не передает изменения переменных окружающей среды, когда служба запускается. Вместо того, чтобы создавать службу, зависящую от переменной окружающей среды, используйте значения реестра или параметры ServiceMain.

Если служба не обновляет свое состояние в течение 80 секунд, плюс последнее указание на ожидание, диспетчер управления службами решает, что служба прекратила отвечать. Диспетчер управления службами зарегистрирует событие и остановить службу.

Если программой запущен сервисный драйвер, функция  StartService возвращает значения после того, как драйвер устройства полностью завершил свою инициализацию.

Дополнительную информацию смотри в статье Запуск службы (Пример).

Назад в оглавление
На главную страницу

Hosted by uCoz