Программирование для Windows NT (том 2)


         

Установка сервиса


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

Прототип функции CreateService мы привели ниже:

SC_HANDLE CreateService(

  SC_HANDLE hSCManager,    // идентификатор базы данных системы

                           // управления сервисами

  LPCTSTR lpServiceName,   // имя сервиса, которое будет использовано

                           // для запуска

  LPCTSTR lpDisplayName,   // имя сервиса для отображения

  DWORD   dwDesiredAccess, // тип доступа к сервису

  DWORD   dwServiceType,   // тип сервиса

  DWORD   dwStartType,     // способ запуска сервиса

  DWORD   dwErrorControl,  // действия при ошибках в момент запуска

  LPCTSTR lpBinaryPathName,   // путь к загрузочному файлу сервиса

  LPCTSTR lpLoadOrderGroup,   // имя группы порядка загрузки

  LPDWORD lpdwTagId,          // адрес переменной для сохранения

                              // идентификатора тега

  LPCTSTR lpDependencies,     // адрес массива имен взаимосвязей

  LPCTSTR lpServiceStartName, // адрес имени пользователя, права

                    // которого будут применены для работы сервиса

  LPCTSTR lpPassword );       // адрес пароля пользователя

Через параметр hSCManager вы должны передать функции CreateService идентификатор базы данных системы управления сервисами, полученный от функции OpenSCManager, описанной выше.

Через параметры lpServiceName и lpDisplayName задаются, соответственно, имя сервиса, которое будет использовано для запуска и имя сервиса для отображения в списке установленных сервисов.

С помощью параметра dwDesiredAccess вы должны указать тип доступа, разрешенный при обращении к данному сервису. Здесь вы можете указать следующие значения:

Значение

Разрешенный тип доступа

SERVICE_ALL_ACCESS

Полный доступ

SERVICE_CHANGE_CONFIG

Изменение конфигурации сервиса функцией ChangeServiceConfig

SERVICE_ENUMERATE_DEPENDENTS

Просмотр сервиса в списке сервисов, созданных на базе данного сервиса функцией EnumDependentServices

SERVICE_INTERROGATE

Выдача сервису команды немедленного определения текущего состояния сервиса при помощи функции ControlService (эта функция будет описана ниже)

SERVICE_PAUSE_CONTINUE

Временная остановка сервиса или продолжение работы после временной остановки

SERVICE_QUERY_CONFIG

Определение текущей конфигурации функцией QueryServiceConfig

SERVICE_QUERY_STATUS

Определение текущего состояния сервиса функцией QueryServiceStatus

SERVICE_START

Запуск сервиса функцией StartService

SERVICE_STOP

Остановка сервиса выдачей соответствующей команды функцией ControlService

SERVICE_USER_DEFINE_CONTROL

Возможность передачи сервису команды, определенной пользователем, с помощью функции ControlService

<

Содержание  Назад  Вперед