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

Windows Discussion :

Generer un message d'erreur a l'arret d'un service


Sujet :

Windows

  1. #1
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut Generer un message d'erreur a l'arret d'un service
    Bonjour,

    Je développe un service en C et je cherche le moyen de générer une erreur dans le journal d'événement quand j'arrête mon service en cas d'erreur pendant son exécution.

    Je n'ai rien trouvé la dessus, si quelqu'un a une idée

    Merci.
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Que ne sais-tu pas faire ? Intercepter le plantage ou écrire dans l'EventLog ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Générer l'erreur dans l'eventlog

    J'ai trouvé dans MSDN ceci:
    EventWrite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ULONG EventWrite(
      __in      REGHANDLE RegHandle,
      __in      PCEVENT_DESCRIPTOR EventDescriptor,
      __in      ULONG UserDataCount,
      __in_opt  PEVENT_DATA_DESCRIPTOR UserData
    );
    Et pour obtenir REGHANDLE RegHandle, EventRegister.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ULONG EventRegister(
      __in      LPCGUID ProviderId,
      __in_opt  ENABLECALLBACK EnableCallback,
      __in_opt  PVOID CallbackContext,
      __out     PREGHANDLE RegHandle
    );
    Mais la gros soucis je ne trouve rien pour obtenir LPCGUID ProviderId

    Hum autre problème j'ai un message d'erreur me disant que EventRegister n'as pas été trouver dans ADVAPI32.DLL, d'après MSDN ça n'existe que depuis Vista :S

    Comment faire sous XP
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Je crois que ce n'est pas la bonne API d'eventlog.
    Essaie plutôt des fonctions comme RegisterEventSource() et LogEvent()...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Ah merci
    Par contre LogEvent n'existe pas, c'est ReportEvent, mais la aussi j'ai un petit soucis avec cette fonction.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    BOOL ReportEvent(
      __in  HANDLE hEventLog,
      __in  WORD wType,
      __in  WORD wCategory,
      __in  DWORD dwEventID,
      __in  PSID lpUserSid,
      __in  WORD wNumStrings,
      __in  DWORD dwDataSize,
      __in  LPCTSTR *lpStrings,
      __in  LPVOID lpRawData
    );
    Je ne comprend pas ce qu'il faut mettre pour dwEventID du coup j'ai toujours l'erreur Invalid Parameter.

    Tu aurais une idée?
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

  6. #6
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    La génération d'un EventLog est un tout petit peu plus compliquée que cela.

    Il faut d'abord enregistrer la source. Ensuite tu peux générer un message en indiquant son identifiant. Le système ira chercher la chaine de caractère dans les DLL ou EXE indiquées lors de l'enregistrement de la source. Il faut donc aussi créer des ressources spéciales dans ton exe ou dans une DLL.

    Un exemple ici dans le msdn (en anglais)
    http://msdn.microsoft.com/en-us/libr...81(VS.85).aspx
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  7. #7
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Oui j'ai vu cet exemple, mais ce que je ne comprend pas c'est comment tu obtient l'ID de la source?
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

  8. #8
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    C'est toi qui le définis.

    Dans l'esprit, tu dis :
    le message de start, c'est le 1, donc ta ressource N°1 est un texte représentant le message de start
    le message de stop, c'est le 2, donc ta ressource N°2 est un texte représentant le message de stop
    etc
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  9. #9
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Eu oui mais le paramètre dwEventID c'est l'ID de quoi? De la ressource message??
    Je ne comprend pas tout
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

  10. #10
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Non, c'est l'Id du message dans la ressource.
    Le MessageId de ton fichier .mc :
    Code mc : 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
    31
    32
    33
    34
    35
    36
    37
    38
    LanguageNames=(Norwegian=0x414:MSG00414)
    LanguageNames=(Italian=0x410:MSG00410)
    
    MessageId=100
    SymbolicName=EVT_INIT_SUCCESSFUL
    Language=English
    Server was initialized successfully
    .
    Language=Norwegian
    Serverens innstillingsprosess var vellykket
    .
    Language=Italian
    Server inizializzato con successo
    .
    
    MessageId=101
    SymbolicName=EVT_QUESTION_SPOOLED
    Language=English
    Search %1 has been spooled
    .
    Language=Norwegian
    Søk %1 har blitt sendt for utførelse
    .
    Language=Italian
    La ricerca %1è stata  inviata allo spool
    .
    
    MessageId=102
    SymbolicName=EVT_SHUTDOWN_SUCCESSFUL
    Language=English
    Server successfully shutdown
    .
    Language=Norwegian
    Serveren kontrollerte avslutning lyktes
    .
    Language=Italian
    Server chiuso con successo
    .
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #11
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Ok, par contre j'ai vu des événements qui dans leur descriptions ont ceci:
    La description pour l'ID d'événement ( 0 ) dans la source (Toto) est introuvable. L'ordinateur local n'a peut-être pas les informations de Registre ou les librairies requises pour afficher les messages émanant d'un ordinateur distant. Vous pourrez peut-être utiliser l'option /AUXSOURCE= pour récupérer cette description. Reportez-vous aux rubriques Aide et support pour plus de détails.
    Ca veut bien dire qu'ils n'ont pas de source enregistrée et pourtant ils arrivent quand même a écrire un événement. Ca simplifie non?
    Une idée de comment faire de cette manière?
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

  12. #12
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Soit la source n'est pas enregistrée, soit elle ne l'est plus, soit elle ne pointe pas où il faut.

    La seule signification claire de ce message d'erreur est que la MMC n'arrive pas à charger la ressource "messages" à l'endroit spécifié dans la base de registre.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  13. #13
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Bon j'ai réussi sans passer par un fichier ressource

    Par contre j'utilise netmsg.dll et je cherche tous les message qu'il est possible de lui passer, vous savez ou je pourrai trouver ça?

    Merci
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

  14. #14
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Bon j'ai comprit le principe de créer un fichier de ressource avec les messages que l'on souhaite créer puis ensuite en suivant le tuto sur MSDN d'obtenir une DLL a partir du fichier .mc seulement après avoir fait le link et obtenu ma DLL, elle ne fonctionne pas

    Pourriez vous m'aider?

    Merci
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

Discussions similaires

  1. le serveur sql anywhere s'arrete sans message d'erreur
    Par omarkaocem dans le forum SQL Anywhere
    Réponses: 0
    Dernier message: 09/10/2013, 16h06
  2. Réponses: 4
    Dernier message: 07/07/2010, 11h23
  3. Comment arreter un script sans message d'erreur?
    Par stich51 dans le forum Général Python
    Réponses: 3
    Dernier message: 14/05/2010, 10h31
  4. Arret d'un thread sans message d'erreur
    Par Beujator dans le forum ASP.NET
    Réponses: 6
    Dernier message: 24/07/2009, 10h25
  5. Réponses: 3
    Dernier message: 30/07/2007, 11h55

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