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
CafuroCafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
e-verbeUn logiciel de conjugaison des verbes de la langue française.
Ma page personnelle sur DVP.
Partager