Die WinMain -Routine behandelt sowohl die Registrierung als auch die Installation, sowie Abmeldungen und Deinstallation. Wenn der Dienst ausgeführt wird, ruft WinMain CServiceModule::Start.
CServiceModule::Start stellt ein Array von SERVICE_TABLE_ENTRY Strukturen, die jeder Dienst seine Start-Funktion zugeordnet. Dieses Array wird dann an die Win32-API-Funktion übergeben StartServiceCtrlDispatcher. In der Theorie eine EXE konnte mehrere Dienste behandeln und das Array mehrere SERVICE_TABLE_ENTRY Strukturen haben könnte. Derzeit unterstützt jedoch ein ATL generierte Dienst nur ein Dienst pro EXE. Daher hat das Array einen einzigen Eintrag, der Dienstname und _ServiceName als die Autostart-Funktion enthält. _ServiceName ist eine statische Memberfunktion CServiceModule , die nicht-statischen Member-Funktion, ServiceName aufruft.
Hinweis&Nbsp; Ausfall von StartServiceCtrlDispatcher zum Herstellen des Dienststeuerungs-Managers (SCM) wahrscheinlich bedeutet, dass das Programm nicht als Dienst ausgeführt wird. In diesem Fall ruft das Programm direkt CServiceModule::Run , so dass das Programm als lokaler Server ausführen können. Weitere Informationen über das Programm als lokaler Server ausführen finden Sie unter Debugging Tipps.