Fonction de CAtlServiceModuleT::ServiceMain
Le gestionnaire de contrôle des services (SCM) appelle ServiceMain lorsque vous ouvrez l'application du panneau de configuration des services, sélectionnez le service, puis cliquez sur Démarrer.
Une fois le SCM appelle ServiceMain, un service doit donner au SCM une fonction gestionnaire.Cette fonction permet d'obtenir SCM le mode de service et passer des instructions spécifiques (telles que suspendre ou arrêter).SCM Le reçoit cette fonction lorsqu'il passe _Handler à la fonction de l'API Win32, RegisterServiceCtrlHandlerde service.(_Handler est une fonction membre statique qui appelle la fonction Gestionnairede membre non statique.)
Au démarrage, un service doit également informer le SCM de son état actuel.Il le fait en passant SERVICE_START_PENDING à la fonction de l'API Win32, SetServiceStatus.
ServiceMain appelle ensuite CAtlExeModuleT::InitializeCom, qui appelle la fonction CoInitializeExAPI Win32.Par défaut, InitializeCom passe la balise de COINIT_MULTITHREADED à la fonction.Cet indicateur indique que le programme doit être un serveur libre de threads.
Maintenant, CAtlServiceModuleT::Run est appelé pour effectuer le travail principaux du service.Run continue à s'exécuter jusqu'à ce que le service est arrêté.