Rutynowe WinMain obsługuje zarówno rejestracji, jak i instalacji, a także wyrejestrowanie oraz odinstalowywania. Gdy uruchomiona jest usługa, WinMain wywołuje CServiceModule::Start.
CServiceModule::Start ustawia tablicę struktur SERVICE_TABLE_ENTRY , które mapują każdej usługi do jego uruchamiania funkcji. Ta tablica jest następnie przekazywany do funkcji Win32 API, StartServiceCtrlDispatcher. W teorii jeden EXE może obsługiwać wiele usług i tablicy może mieć wiele SERVICE_TABLE_ENTRY struktury. Obecnie jednak usługi generowane ATL obsługuje tylko jedną usługę na EXE. W związku z tym tablica ma pojedynczy wpis zawierający nazwę usługi i _ServiceName jako funkcja uruchamiania. _ServiceName jest funkcją statycznym Państwa CServiceModule , który wywołuje funkcję niestatycznego członka, ServiceName.
Uwaganbsp; &Niepowodzenie StartServiceCtrlDispatcher połączyć Menedżera sterowania usługami (SCM), prawdopodobnie oznacza, że program nie jest uruchomione jako usługa. Program w tym przypadku wywołuje CServiceModule::Run bezpośrednio tak, aby program może działać jako serwer lokalny. Aby uzyskać więcej informacji na temat uruchamiania programu jako serwer lokalny zobacz Debugowanie porady.