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

Диспетчер управления сервисами (SCM)

Читайте также:
  1. I. Концепция научного управления.
  2. I. Организационные структуры управления.
  3. II. Концепция административного управления (классическая школа управления).
  4. II. Основные направления деятельности органов студенческого самоуправления.
  5. III. Концепция управления с позиции психологии и человеческих отношений.
  6. III. Органы студенческого самоуправления.
  7. III. Структура управления службой (отделом)

Как уже отмечалось, сервисы или службы, рассматриваемые в данном учебном пособии, - это процессы режима пользователя. Они похожи на процессы-демоны Unix и могут быть запущены автоматически при запуске системы. Этими сервисами управляет специальный системный процесс, называемый Диспетчер управления сервисами (Service Control Manager – CSM) - \Windows\System32\Services.exe, отвечающий за запуск, остановку и взаимодействие с процессами сервисов. Другими словами, диспетчер управления сервисами исполняется в процесссе services.exe и является консольным Win32-приложением. Место в архатектуре Windows диспетчера управления сервисами показано на (рис.1).

Для взаимодействия SCM с сервисами Windows предоставляет специальные API-функции, с помощью которых выполняются такие действия как регистрация успешного запуска сервиса, ответы на запросы о состоянии, приостановка или завершение работы сервиса.

 

Процесс Winlogon запускает SCM на начальном этапе загрузки системы вызовом функции SvcCtrlMain. Функция SvcCtrlMain создает синхронизирующее событие с именем SvcCtrlEvent_A3752DX и устанавливает ему состояние – занято. Затем функция

 

Рис.1. Архитектура Windows

 

SvcCtrlMain вызывает функцию SvcCreateServiceDB, которая создает базу данных сервисов SCM. Функция SvcCreateServiceDB считывает и сохраняет разделе реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder в параметре List типа REG_MULTI_SZ список имен и порядок определенных групп сервисов. Если сервису или драйверу нужно отслеживать порядок запуска относительно других групп, то в раздел реестра этого сервиса включается параметр Group.

В разделе реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\

Control\Ser-vices находится база данных диспетчера управления сервисами (SCM) (Рис.2). Для каждого установленного драйвера и сервиса создается запись, содержащая следующую информацию:

· Тип сервиса. Необходим для того, чтобы различать сервисы уровня пользователя и драйверы. Для сервисов уровня пользователя тип указывает, выполняется ли сервис в собственном процессе или разделяет адресное пространство процесса с другими сервисами. Для драйвара указывается, является ли он драйвером ядра или драйвером файловой системы.

· Способ запуска (автоматически при старте системы, по запросу приложения, управляющего сервисом либо запрет запуска). В системе может быть установлено три значения для этого поля: Авто (automatic), Вручную (manual), Отключено (disabled).

· Уровнь контроля ошибок. Указывает серьезность ошибки, если служба или драйвер не запускается при запуске системы, и определяет действия в случае аварийного завершения сервиса или ошибки при запуске (отсутствие действий, перезапуск сервиса или перезапуск системы).

· Полный путь к исполняемому файлу (т.е. путь к программе сервиса - файлу с расширением. EXE или драйверу – с расширением. SYS).

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

· Имя учетной записи и пароль. Сервисная программа выполняется в контексте этой учетной записи. Если учетная запись не указана, то сервис выполняется в контексте учетной записи LocalSystem.

· Для драйверов, дополнительно указывается имя объекта драйвера (например, \ FileSystem \ Rdr или \ Driver \ XNS), используемая система ввода / вывода для загрузки драйвера устройства. Если имя не задано, то система ввода / вывода создает имя по умолчанию на основе службы имен драйверов.

С помощью SCP-апплета*) можно установить или изменить тип запуска. Кроме этого можно посмотреть под чьей учетной записью запускается сервис на вкладке «Вход в систему» (Log On).

Рис.2. Редактор реестра. Просмотр ключа

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

Базу данных сервисов не рекомендуется изменять самостоятельно (при помощи функций работы с реестром). Вместо этого, следует обращаться к API-функциям, предоставляемым диспетчером управления сервисами (SCM).

Перед запуском автоматически запускаемых сервисов (здесь как сервисы, так и драйверы) SCM выполняет еще несколько действий. Создает именованный канал RPC с именем \Pipe\Ntsvcs. После чего RPC запускает поток, отслеживающий приходящие по этому каналу сообщения от SCP. Затем SCM освобождает свой объект типа событие SvcCtrlEvent_A3752DX, сигнализируя о завершении инициализации. SCP устанавливает связь с SCM с помощью функции OpenSCManager, которая ждет перехода события SvcCtrlEvent_A3752DX в свободное состояние.


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


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

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