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.
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.
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.
Générer l'erreur dans l'eventlog
J'ai trouvé dans MSDN ceci:
EventWrite
Et pour obtenir REGHANDLE RegHandle, EventRegister.
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 );
Mais la gros soucis je ne trouve rien pour obtenir LPCGUID ProviderId
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 );
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
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.
Ah merci
Par contre LogEvent n'existe pas, c'est ReportEvent, mais la aussi j'ai un petit soucis avec cette fonction.
Je ne comprend pas ce qu'il faut mettre pour dwEventID du coup j'ai toujours l'erreur Invalid Parameter.
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 );
Tu aurais une idée?
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.
Oui j'ai vu cet exemple, mais ce que je ne comprend pas c'est comment tu obtient l'ID de la source?
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.
Eu oui mais le paramètre dwEventID c'est l'ID de quoi? De la ressource message??
Je ne comprend pas tout
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.
Ok, par contre j'ai vu des événements qui dans leur descriptions ont ceci:
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?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.
Une idée de comment faire de cette manière?
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.
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
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager