IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Threads & Processus C++ Discussion :

Service Windows, StartServiceCtlDispatcher


Sujet :

Threads & Processus C++

  1. #1
    Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Mars 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Service Windows, StartServiceCtlDispatcher
    Bonjour, bonjour!

    Je suis actuellement en train de m'initier aux développements des services windows. Jusqu'à l’installation tous va bien, le soucis vient du démarrage du service.

    Je ne comprends pas l'utilité de la fonction "StartServiceCtlDispatcher" (même avec la documentation), je "suppose" qu'elle permet de démarrer le service.
    Le problème c'est qu'elle me renvoie en permanence le code retour 1063 (ERROR_FAILED_SERVICE_CONTROLLER_CONNECT).

    J'ai consulté énormément de forum concernant cette erreur sans pouvoir résoudre ce problème. Quel que soit le mode d'exécution (en debug sous visual, exécution depuis le CMD le tout en administrateur) mais rien n'y fait, le service ne veut pas démarrer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SERVICE_TABLE_ENTRY serviceTable[] =
    	{
    		{ L"MonService", ServiceMain },
    		{ NULL, NULL }
    	};
    	return StartServiceCtrlDispatcher(serviceTable);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    void WINAPI ServiceBase::ServiceMain(DWORD dwArgc, PWSTR *pszArgv)
    {
     
    	s_service->m_statusHandle = RegisterServiceCtrlHandler(
    		s_service->m_name, ServiceCtrlHandler);
    	if (s_service->m_statusHandle == NULL)
    	{
    		throw GetLastError();
    	}
    	s_service->Start(dwArgc, pszArgv);
    }

    J'ai pu voir d'autre méthode pour le démarrage d'un service via la méthode "StartService".
    J'ai également pu voir sur différent forum que l'erreur 1063 provenait d'un mauvais démarrage du service et que pour utiliser la méthode startServiceCtlDispatcher il fallait démarrer le service via Service Control Manager.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 073
    Points : 12 119
    Points
    12 119
    Par défaut
    Qu'est-ce qui n'est pas clair dans la documentation ?
    https://msdn.microsoft.com/fr-fr/lib...or=-2147217396
    Si vous avez une application console, ça le fera pas.

  3. #3
    Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Mars 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Quel type de projet dois-je créer si ce n'est pas une application console ? application de service ?
    Pour ma part j'ai créé un projet win32, après j'ai choisi "application console" donc ça vient très certainement de là... J'ai suivi la documentation de création de services de la msdn.

    J'ai également télécharge le sample service que la msdn propose, et il me fait exactement la même erreur.

    https://code.msdn.microsoft.com/wind...rvice-cacf4948

  4. #4
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 591
    Points
    188 591
    Par défaut
    La différence, c'est qu'il ne faut pas lancer ton application comme une console (depuis Visual Studio, par exemple), mais bien comme un service (https://support.microsoft.com/en-gb/...y-using-sc.exe).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  5. #5
    Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Mars 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    J'ai toujours lancé soit son exécution via Visual, soit via un cmd, soit directement via l'.exe.
    Je check ça, Merci!

  6. #6
    Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Mars 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Bon effectivement, j'ai l'impression que ça provient de son démarrage puisque que la commande sc ne me retourne aucune erreur et démarre correctement le service. Je suppose que dans le cas inverse elle devrait me renvoyer une erreur.

    J'aimerais savoir aussi si il est plus intéressant de démarré le service avec la méthode "StartServiceCtlDispatcher" plutôt que "StartService".

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WinService][C#] Comment déployer un service windows ?
    Par sokette dans le forum Windows Forms
    Réponses: 5
    Dernier message: 27/04/2005, 16h38
  2. Planifier le démarrage d'un service Window
    Par tscoops dans le forum Windows XP
    Réponses: 2
    Dernier message: 29/03/2005, 14h56
  3. [WD7.5] Service Windows
    Par cqfd dans le forum WinDev
    Réponses: 1
    Dernier message: 29/03/2005, 08h58
  4. [VB6]Arreter un service windows
    Par bouboussjunior dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 04/10/2004, 17h03
  5. [C#] Icône, barre des tâches et Service Windows
    Par SErhio dans le forum Windows Forms
    Réponses: 17
    Dernier message: 03/09/2004, 12h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo