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

MFC Discussion :

Problème redémarrage service


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de jagboys
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 166
    Par défaut Problème redémarrage service
    Bonjour,

    J'ai crée un petit service comme indiqué sur la FAQ.
    Tout fonctionne bien dans le service sans aucune erreur.
    J'ai rajouté dans ce service une méthode qui après x secondes relance le service via un batch externe.
    Ce batch utilise les commandes net start / net stop ... pour arrêter et redemarrer le service.
    Lorsque qu'on utilise ce batch ou tout simplement lorsqu'on démarre le service via une console dos, le service s'arrête tout seul après initialisation en passant par tous les étapes d'arrêt sans erreur. Il faut toujours lancer le service via le SCM pour que cela fonctionne.

    Est ce quelqu'un à une idée ?

    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    c'est quoi la question ?
    un service se lance de l'extérieur ...
    une fois arrêté il ne peut pas se relancer lui même.

  3. #3
    Membre confirmé Avatar de jagboys
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 166
    Par défaut Redemarrage service.
    Bonjour,

    Pour être plus simple, voici le problème :

    Lorsque qu'on lance le service via un console avec la commande Net start, le service s'arrête tout seul. Pourquoi ?
    Si l'on lance le service via le service control manager (SCM), le service tourne comme il faut.

    Avez vous une idée ?

    J'ai à peu près une idée du problème. Le souci vient de la fonction suivante (vu dans la FAQ)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    // ------------------------------------------------------
    BOOL SendStatusToSCM(DWORD dwCurrentState,
                         DWORD dwWin32ExitCode,
                         DWORD dwServiceSpecificExitCode,
                         DWORD dwCheckPoint,
                         DWORD dwWaitHint)
    {
        BOOL bSuccess;
        SERVICE_STATUS ServiceStatus;
        ServiceStatus.dwServiceType = SERVICE_WIN32_SHARE_PROCESS; // SERVICE_WIN32_OWN_PROCESS
        ServiceStatus.dwCurrentState= dwCurrentState;
     
        ServiceStatus.dwControlsAccepted=0;
        if(dwCurrentState != SERVICE_START_PENDING)        
            ServiceStatus.dwControlsAccepted= SERVICE_ACCEPT_STOP |
            SERVICE_ACCEPT_SHUTDOWN;
     
        ServiceStatus.dwWin32ExitCode=ERROR_SERVICE_SPECIFIC_ERROR;
        if(!dwServiceSpecificExitCode) ServiceStatus.dwWin32ExitCode=dwWin32ExitCode;
     
        ServiceStatus.dwServiceSpecificExitCode=dwServiceSpecificExitCode;
     
        ServiceStatus.dwCheckPoint = dwCheckPoint;
        ServiceStatus.dwWaitHint = dwWaitHint;
     
        bSuccess = SetServiceStatus(ServiceStatusHandle,&ServiceStatus);
     
    	if(!bSuccess) StopService();
        return bSuccess;
    }
    Le problème vient de la ligne :

    bSuccess = SetServiceStatus(ServiceStatusHandle,&ServiceStatus);
    Lorsque lancer via le mode console, cette ligne renvoie FALSE ce qui arrête le service par la suite.

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    tu as les droits administrateur en mode console ?

  5. #5
    Membre confirmé Avatar de jagboys
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 166
    Par défaut Redémarrage service
    Bonsoir,

    Oui, je suis en administrateur en mode console.

    Par ailleurs, en forçant à TRUE le retour de la fonction SendStatusToSCM, le service fonctionne correctement si on le lance en mode console. Mais, une erreur apparait dans les event log de windows :

    Le service MyNewService a signalé un état actuel 0 non valide.
    Est ce que quelqu'un a une idée ?

    Merci

  6. #6
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    comme ça non .
    il faudrait appeler GetLastError() apres la fonction pour voir l'erreur:
    Citation Envoyé par msdn
    If the function fails, the return value is zero. To get extended error information, call GetLastError.
    The following error codes can be set by the service control manager. Other error codes can be set by the registry functions that are called by the service control manager.
    Return code Description ERROR_INVALID_DATA
    The specified service status structure is invalid.
    ERROR_INVALID_HANDLE
    The specified handle is invalid.

Discussions similaires

  1. Problème Web service : C# - IIS 6.0 - windows server 2003
    Par identifiant_bidon dans le forum Services Web
    Réponses: 3
    Dernier message: 20/04/2007, 16h33
  2. [Tableaux] Problème de service web et tableau
    Par hxt dans le forum Langage
    Réponses: 4
    Dernier message: 04/07/2006, 09h33
  3. problème de services web
    Par bada dans le forum Services Web
    Réponses: 2
    Dernier message: 09/06/2006, 18h26
  4. [Apache]Problème se services Apache
    Par bartmarley dans le forum Apache
    Réponses: 6
    Dernier message: 15/07/2004, 14h13
  5. [Kylix] problème web service kylix
    Par RezzA dans le forum EDI
    Réponses: 3
    Dernier message: 11/02/2003, 14h50

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