Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Выполнение сервиса

Читайте также:
  1. II. ВЫПОЛНЕНИЕ КОНТРОЛЬНЫХ ЗАДАНИЙ И ОФОРМЛЕНИЕ КОНТРОЛЬНЫХ РАБОТ
  2. II. ВЫПОЛНЕНИЕ КОНТРОЛЬНЫХ ЗАДАНИЙ ПО НЕМЕЦКОМУ ЯЗЫКУ.
  3. II. Выполнение работы.
  4. V. ВЫПОЛНЕНИЕ КОНТРОЛЬНЫХ ЗАДАНИЙ И ОФОРМЛЕНИЕ КОНТРОЛЬНЫХ РАБОТ
  5. Бланк формализованного наблюдения за выполнением манипуляции Измерение длины тела
  6. БОУ СПО ВО "Вологодский колледж коммерции, технологии и сервиса
  7. В исключительных случаях руководителем может быть поручено работнику выполнение работ, не предусмотренных настоящей должностной инструкцией.

Когда SCM запускает сервисный процесс, тот немедленно вызывает StartServiceCtrlDispatcher. Эта функция принимает список точек входа в сервисы – по одной на каждый сервис процесса. Каждая точка входа идентифицируется именем соответствующего сервиса. Установив соединение с SCM по именованному каналу, функция StartServiceCtrlDispatcher входит в цикл ожидания команды запуска сервиса от SCM. SCM посылает команду запуска и функция StartServiceCtrlDispatcher, выйдя из цикла ожидания, создаёт поток сервиса (service thread). Поток вызывает точку входа в сервис и входит в цикл ожидания команд для сервиса. StartServiceCtrlDispatcher находится в бесконечном ожидании команд от SCM и возвращает управление основной функции процесса только после остановки всех сервисов в данном процессе. Это необходимо для обеспечения возможности освобождения занимаемых ресурсов.

При передаче управления на точку входа сервиса происходит вызов функции RegisterServiceCtrlHandler. Эта функция принимает и хранит указатель на функцию – обработчик управления (control service), которую реализует сервис для обработки различных команд SCM. Она не взаимодействует с SCM, а лишь хранит упомянутую функцию в локальной памяти процесса для функции StartServiceCtrlDispatcher. Точка входа продолжает инициализацию, выделяя необходимую память, создавая коммуникационный канал и считывая из реестра данные о собственной конфигурации сервиса. По соглашению эти параметры хранятся в разделе Параметры (Parameteres) раздела реестра для данного сервиса. Точка входа, инициализируя сервис, может периодически посылать SCM сообщения в ходе процесса запуска сервиса, используя функцию SetServiceStatus. Когда точка входа заканчивает инициализацию, поток сервиса обычно входит в цикл ожидания запросов от клиентских приложений. Например, Web-сервер должен инициализировать TCP-сокет и ждать запросы на входящие HTTP-соединения.

На рисунке показана схема внутренней организации сервисного процесса (рис.6):

1) StartServiceCtrlDispatcher запускает поток сервиса;

2) Поток сервиса регистрирует обработчик управления;

3) StartServiceCtrlDispatcher вызывает обработчик в ответ на команды SCM;

4) Поток сервиса обрабатывает клиентские запросы.

 

Рис.6. Процесс сервиса и его потоки

На рисунке показаны два потока процесса, созданных для одного сервиса: основной поток и поток сервиса.

SCM посылает сервису следующие команды: stop (стоп), pause (пауза), resume (возобновление), interrogate (опрос), shutdown (выключение) и команды, определяемые приложением.

 

 


Дата добавления: 2015-08-13; просмотров: 52 | Нарушение авторских прав


Читайте в этой же книге: Службы Windows. | Диспетчер управления сервисами (SCM) | Программы управления сервисами | Учетные зависи сервиса | Точка входа main | Точка входа в сервис (ServiceMain) | Пример функций сервиса. | Отладка сервиса. |
<== предыдущая страница | следующая страница ==>
Начало работы сервиса| Структура программы сервиса

mybiblioteka.su - 2015-2024 год. (0.005 сек.)