Функция mainслужебной программы вызывает функцию StartServiceCtrlDispatcher для подключения к диспетчеру управления службами (SCM) и запуска потока диспетчера управления. Поток диспетчера выполняет циклы, ожидая входящих запросов управления для служб, указанных в таблице диспетчеризации. Этот поток возвращается при возникновении ошибки или при завершении работы всех служб в процессе. Когда все службы в процессе завершаются, SCM отправляет запрос на управление потоку диспетчера, сообщающий ему о выходе. Затем этот поток возвращается из вызова StartServiceCtrlDispatcher , и процесс может завершиться.
В этом примере используются следующие глобальные определения.
#define SVCNAME TEXT(«SvcName») SERVICE_STATUS gSvcStatus; SERVICE_STATUS_HANDLE gSvcStatusHandle; HANDLE ghSvcStopEvent = NULL;
Следующий пример можно использовать в качестве точки входа для служебной программы, поддерживающей одну службу. Если программа обслуживания поддерживает несколько служб, добавьте имена дополнительных служб в таблицу диспетчеризации, чтобы их можно было отслеживать с помощью потока диспетчера.
iikoDashboard Урок 8 — Служебные функции
_tmain функция является точкой входа. Функция SvcReportEvent записывает информационные сообщения и ошибки в журнал событий. Сведения о написании функции SvcMain см. в статье Написание функции ServiceMain. Дополнительные сведения о функции SvcInstall см. в разделе Установка службы. Сведения о написании функции SvcCtrlHandler см. в статье Написание функции обработчика элемента управления.
Полный пример службы, включая источник функции SvcReportEvent, см. в разделе Svc.cpp.
// // Purpose: // Entry point for the process // // Parameters: // None // // Return value: // None, defaults to 0 (zero) // int __cdecl _tmain(int argc, TCHAR *argv[]) < // If command-line parameter is «install», install the service. // Otherwise, the service is probably being started by the SCM. if( lstrcmpi( argv[1], TEXT(«install»)) == 0 ) < SvcInstall(); return; >// TO_DO: Add any additional services for the process to this table. SERVICE_TABLE_ENTRY DispatchTable[] = < < SVCNAME, (LPSERVICE_MAIN_FUNCTION) SvcMain >, < NULL, NULL >>; // This call returns when the service has stopped. // The process should simply terminate when the call returns. if (!StartServiceCtrlDispatcher( DispatchTable )) < SvcReportEvent(TEXT(«StartServiceCtrlDispatcher»)); >>
Ниже приведен пример Sample.h, созданный компилятором сообщений. Дополнительные сведения см. в разделе Sample.mc.
// The following are message definitions. // // Values are 32 bit values layed out as follows: // // 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 // 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 // +—+-+-+————————+——————————-+ // |Sev|C|R| Facility | Code | // +—+-+-+————————+——————————-+ // // where // // Sev — is the severity code // // 00 — Success // 01 — Informational // 10 — Warning // 11 — Error // // C — is the Customer code flag // // R — is a reserved bit // // Facility — is the facility code // // Code — is the facility’s status code // // // Define the facility codes // #define FACILITY_SYSTEM 0x0 #define FACILITY_STUBS 0x3 #define FACILITY_RUNTIME 0x2 #define FACILITY_IO_ERROR_CODE 0x4 // // Define the severity codes // #define STATUS_SEVERITY_WARNING 0x2 #define STATUS_SEVERITY_SUCCESS 0x0 #define STATUS_SEVERITY_INFORMATIONAL 0x1 #define STATUS_SEVERITY_ERROR 0x3 // // MessageId: SVC_ERROR // // MessageText: // // An error has occurred (%2). // // #define SVC_ERROR ((DWORD)0xC0020001L)
Источник: learn.microsoft.com
Основы делового протокола и этикета
Службы Windows
Службы Windows представляют собой такие приложения, которые могут автоматически запускаться при загрузке операционной системы. Они могут функционировать и без осуществления пользователем интерактивного входа в систему и производить в фоновом режиме какие-то операции по обработке.
Например, на сервере Windows Server сетевые службы системы позволяют клиентам получать к ним доступ без прохождения пользователем процедуры регистрации на сервере, а в клиентских системах службы позволяют загружать новую версию программного обеспечения из Интернета или выполнять очистку файлов на локальном диске.
Службы Windows можно сконфигурировать так, чтобы они выполнялись от имени специально созданной учетной записи пользователя или от имени учетной записи системы, т.е. учетной записи, которая имеет более высокие привилегии, чем учетная запись администратора системы. В дальнейшем изложении, если не указано иначе, то при упоминании службы имеется в виду именно служба Windows. • Ниже приведено несколько примеров служб Windows:
Простой компонент TCP/IP Services (Службы TCP/IP)
Представляет собой служебную программу, которая обслуживает небольшие серверы TCP/IP: отображение (echo), дата и время (daytime), цитаты (quote) и т.п.
Компонент World Wide Publishing Service (Служба WWW)
Представляет собой одну из служб информационного сервера Интернета (Internet Information Server — IIS).
Компонент Event Log (Журнал событий)
Представляет собой службу для регистрации сообщений в системе регистрации событий.
Компонент Windows Search (Поиск Windows)
Представляет собой службу, которая создает индексы данных на диске.
Для просмотра всех служб, имеющихся в системе, предусмотрен инструмент администрирования под названием Services (Службы), окно которого показано на рисунке. Этот инструмент доступен в разделе Administrative Tools (Администрирование).
Для оперирования службой Windows необходимы три программы следующего типа:
- программа службы;
- программа для управления службой;
- программа для конфигурирования службы.
Программа службы предоставляет действительную функциональность. Программа для управления службой позволяет отправлять службе запросы, касающиеся управления, например, запросы на запуск, останов, приостановку и возобновление ее работы.
Программа для конфигурирования службы позволяет устанавливать службу — она выполняет необходимое копирование в файловую систему, вносит соответствующие записи в системный реестр и настраивает результат как службу. Хотя компоненты .NET и могут устанавливаться с помощью просто команды хсору, поскольку им не обязательно записывать информацию о себе в системный реестр, установка служб требует выполнения соответствующей настройки в системном реестре. Программа для конфигурирования службы может применяться и для изменения конфигурации данной службы в более позднее время.
О каждом из этих трех составляющих службы Windows более подробно рассказывается в следующих подразделах.
Программа службы
Прежде чем рассматривать реализацию служб в .NET, давайте в общем посмотрим, как выглядит архитектура служб Windows и их внутренняя функциональность.
За реализацию функциональных возможностей отвечает программа службы. Она должна состоять из трех частей:
- главная функция;
- главная служебная функция;
- обработчик.
Для начала следует ознакомиться с диспетчером управления службами — Service Control Manager (SCM). Этот диспетчер играет важную роль для служб. Именно он отправляет службам запросы на выполнение запуска или остановки.
Диспетчер управления службами
представляет собой часть операционной системы, которая взаимодействует со службами. На рисунке это взаимодействие показано на диаграмме последовательностей:
Во время загрузки системы запускается каждый процесс, для которого настроен автоматический запуск службы, и вызывается его главная функция. Служба отвечает за регистрацию главных служебных функций для всех своих составляющих. Главная функция служит точкой входа в программу службы и в ней с помощью SCM должны регистрироваться точки входа для всех ее главных служебных функций.
Главная функция, главная служебная функция и обработчики
Главная функция службы представляет собой обычную точку входа в программу, т.е. метод Main(). В ней может регистрироваться более одной главной служебной функции. В главной служебной функции содержится сама функциональность службы. Служебная программа должна регистрировать главную служебную функцию для каждой из предоставляемых ею служб. Одна служебная программа может предоставлять множество служб; например, system32services.ехе представляет собой служебную программу, которая включает помимо прочих элементов такие службы, как Alerter, Application Management, Computer Browser и DHCP Client.
Далее диспетчер SCM вызывает главные служебные функции каждой из подлежащих запуску служб. Одной из важнейших задач главной служебной функции является регистрация обработчика в SCM.
Функция-обработчик представляет собой третью часть служебной программы. Она должна обязательно уметь отвечать на события SCM. Работа служб может останавливаться, приостанавливаться и возобновляться, и обработчик должен обязательно быть способен реагировать на все такие события.
После регистрации обработчика в SCM программа для управления службой может начинать посылать SCM запросы на завершение, приостановку и возобновление работы службы. Эта программа не зависит ни от SCM, ни от самой службы. В операционной системе поставляется множество подобных программ; одной из них является, например, оснастка Services (Службы) консоли ММС, упомянутая ранее. Можно также писать собственные программы для управления службами; хороший пример — приложение SQL Server Configuration Manager (Диспетчер настройки сервера SQL).
Программа для управления службой
Программа для управления службой, как не трудно догадаться по ее названию, позволяет управлять службой. Для завершения, приостановки и возобновления работы службы ей могут посылаться соответствующие управляющие коды, и обработчик должен на них реагировать. Можно также запрашивать текущее состояние службы и реализовать специальный код обработки, способный реагировать на специальные управляющие коды.
Программа для конфигурирования службы
Из-за того, что службы должны настраиваться соответствующим образом в системном реестре, применять для их установки команду хсору нельзя. В системном реестре содержится параметр, отвечающий за то, как должна запускаться служба. Он может быть настроен так, чтобы служба запускалась автоматически или вручную либо вообще была отключена. Также необходимо настраивать пользователя служебной программы и зависимости службы, например, другие службы, которые должны запускаться перед запуском данной.
Все эти настройки производятся в программе для конфигурирования службы. Эта программа может использоваться как в программе установки для первоначальной настройки службы, так и позже для изменения ее конфигурационных параметров.
Классы, с помощью которых можно реализовать три описанных составляющих службы, находятся в пространстве имен System.ServiceProcess:
Класс ServiceBase
Является главным классом, от которого должно осуществляться наследование для реализации службы. Этот класс применяется для регистрации службы и ответа на запросы, касающиеся ее запуска и остановки.
Класс ServiceController
Позволяет реализовать программу для управления службой. С помощью этого класса можно отправлять службам запросы.
Классы ServiceProcessInstaller и ServiceInstaller
Как не трудно догадаться по их именам, позволяют устанавливать и конфигурировать программы служб.
Теперь можно переходить к рассмотрению процесса создания новой службы.
Источник: professorweb.ru
Функции служебных программ это
Ответ:
Основное назначение служебных программ состоит в автоматизации работ по проверке, наладке и настройке компьютерной системы. Во многих случаях они используются для расширения или улучшения функций системных программ.
0 votes Thanks 0
More Questions From This User See All
Vredina64 August 2022 | 0 Ответы
lg9 pomogite
Vredina64 July 2022 | 0 Ответы
log5332 log533 2
Vredina64 July 2022 | 0 Ответы
1 koe gde v obyatiyah sumraka dremlet grusnaya beryozka pechalno svesv svoi
Vredina64 July 2022 | 0 Ответы
Источник: scholar.tips