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

Visual C++ Discussion :

Fermeture d'un service de lui-même


Sujet :

Visual C++

  1. #1
    Membre émérite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par défaut Fermeture d'un service de lui-même
    Bonsoir,

    Déjà pour précision, je réalise mon service à partir du squelette fait par Farscape et décrit dans la FAQ VC++.

    Je rencontre un problème lorsque le service doit se fermer de lui même. Ceci pour un cas particulier.

    Si je démarre mon service manuellement et que je me mets dans le cas particulier où le service doit se fermer de lui même, je ne rencontre aucun soucis.

    Par contre, si je redémarre mon pc, le service en question démarre automatiquement mais lorsqu'il doit se fermer de lui même, j'obtiens un joli message de plantage...
    Apparemment, à l'aide d'un debugger, je planterais dans NTDLL. Ca m'avance guère! Je constate aussi avec une message box que "ServiceMain()" se termine. L'erreur arrive quelques secondes après.

    Voici grossomodo le principe que j'utilise pour fermer mon service:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    DWORD ServiceThread(LPDWORD param)
    {
         MaFonction();
     
         //ServiceCtrlHandler(SERVICE_CONTROL_STOP); <- J'ai fait un test ainsi mais NOK
         ::SetEvent(hTerminateEvent);
     
         return 0;
    }
    Quelqu'un aurait il une idée du pourquoi d'un tel comportement? ou une autre façon de mettre en oeuvre la fermeture du service par lui même?

    Merci.
    Nicolas

  2. #2
    Membre émérite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par défaut
    J'ai ajouté un Sleep(120000) avant le SetEvent(). Je précise, cette valeur est mise au hasard. J'observe 1 fois sur 3 le problème cité plus haut...

    Je n'explique pas le comportement. Soit il faut laisser tourner le service un certain temps après le démarrage avant que l'on puisse le stopper. Soit, il y a un conflit, soit je ne sait pas...

    Je serais prenneur d'une éventuelle explication ou autre solution à mettre en ouevre.

    Bonne soirée!


  3. #3
    Membre émérite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par défaut
    La réponse:
    Stopping our service programmatically
    The first two steps for stopping our service are same as for starting our service. We call OpenSCManager to get a handle to the SCM and then call OpenService to get a handle to our service. Now we can use the ControlService API call to send a control code to our service handler.

    ControlService(hService,SERVICE_CONTROL_STOP,&m_SERVICE_STATUS);

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

Discussions similaires

  1. Service qui doit se contrôler lui-même
    Par gderenne dans le forum VB.NET
    Réponses: 5
    Dernier message: 29/01/2009, 16h56
  2. Clé Registre et copie du programme par lui même
    Par True Cluster dans le forum Windows
    Réponses: 5
    Dernier message: 13/03/2006, 13h59
  3. ACCESS 2002 (XP) incompatible avec lui même ?
    Par xanthos1348 dans le forum Access
    Réponses: 1
    Dernier message: 05/12/2005, 23h23
  4. [Rotation] Faire tourner un cube sur lui-même
    Par cyber_N dans le forum OpenGL
    Réponses: 4
    Dernier message: 14/07/2005, 21h29
  5. fichier envoye value de champ texte à lui même
    Par mat10000 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 23/04/2005, 07h33

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