Обычные функции WinMain обрабатывает регистрации и установки, а также о снятии с учета и деинсталляции. Когда запущена эта служба, WinMain вызывает CServiceModule::Start.
CServiceModule::Start задает массив структур SERVICE_TABLE_ENTRY , помечающих каждой службы для его запуска функции. Этот массив затем передается функции Win32 API, StartServiceCtrlDispatcher. В теории один EXE могут обрабатывать несколько служб и массив может иметь несколько SERVICE_TABLE_ENTRY структур. В настоящее время однако, генерируемые ATL служба поддерживает только одну службу на EXE. Таким образом массив содержит одну запись, содержащую имя службы и _ServiceName как функция запуска. _ServiceName — статический член функция CServiceModule , вызывающий не статическая функция-член, ServiceName.
Примечание Отказ StartServiceCtrlDispatcher для подключения к диспетчеру управления (службами SCM) скорее всего означает, что программа не выполняется как служба. В этом случае программа вызывает CServiceModule::Run непосредственно таким образом, чтобы программа может работать как локальный сервер. Дополнительные сведения о запуске программы как на локальном сервере содержатся в разделе Отладка советы.