La routine WinMain gère l'enregistrement et en installation, ainsi que la radiation et la désinstallation. Lorsque le service est exécuté, WinMain appelle CServiceModule::Start.
CServiceModule::Start met en place un tableau de structures SERVICE_TABLE_ENTRY qui mappent chaque service à sa fonction de démarrage. Ce tableau est ensuite passé à la fonction API Win32, StartServiceCtrlDispatcher. En théorie, un EXE peut gérer plusieurs services et le tableau pourrait avoir plusieurs structures SERVICE_TABLE_ENTRY . Actuellement, toutefois, un ATL-générée service prend en charge qu'un seul service par EXE. Par conséquent, le tableau a une seule entrée qui contient le nom du service et la _ServiceName que la fonction de démarrage. _ServiceName est une fonction membre statique de CServiceModule qui appelle la fonction membre non statique, NomService.
&Notenbsp ; Échec de StartServiceCtrlDispatcher pour se connecter au service control manager (SCM) probablement signifie que le programme ne s'exécute pas en tant que service. Dans ce cas, le programme appelle CServiceModule::Run directement afin que le programme peut fonctionner comme un serveur local. Pour plus d'informations sur l'exécution du programme comme un serveur local, consultez Débogage des conseils.