CAtlServiceModuleT::ServiceMain Function
Диспетчеру служб вызывает ServiceMain при открытии приложение панель управления службы, выберите служба и нажмите кнопку Пуск.
После того, как диспетчер служб вызывает ServiceMain служба должна предоставить диспетчер служб функцию обработчика. Эта функция позволяет диспетчеру служб получить состояние службы и передать определенных инструкций (такие как приостанавливать или останавливать). Диспетчер служб возвращает эту функцию, когда служба передает _Handler к функции api-интерфейса Win32, RegisterServiceCtrlHandler. (_Handler функция статического члена, которая вызывает функцию-член обработчик), не являющихся статическими.
При запуске служба должна также информировать диспетчер служб его текущего состояния. Это делается путем передачи SERVICE_START_PENDING к функции api-интерфейса Win32, SetServiceStatus.
ServiceMain затем вызывает CAtlExeModuleT::InitializeCom, который вызывает функцию Win32 API CoInitializeEx. По умолчанию InitializeCom передает пометить COINIT_MULTITHREADED функции. Этот пометить указывает, что программа продетым быть свободен- потоков сервером.
Теперь, вызываются CAtlServiceModuleT::Run выполнения главный работы службы. Запуск продолжает выполняться до тех пор, пока служба не остановлена.