Entwickler-Ecke
Windows API - Format_Message bei Auslesen von Event Logs
Jim_Knopf - Do 06.07.06 15:24
Titel: Format_Message bei Auslesen von Event Logs
Hallo zusammen! :-)
Ich bin gerade dabei eine Prozedur zu schreiben, die Windows Event Logs ausliest und die Records anschliessend schön aufbereitet in HTML ausgeben soll.
Um die kompletten Messagestrings für jeden Event zu erhalten benötigt man ja diverse Msg-dlls aus dem System32 Ordner.
Nun will ich mit der win-api function FORMAT_MESSAGE die Strings erzeugen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| hModule := LoadLibraryEx(MessageFileFN, 0, LOAD_LIBRARY_AS_DATAFILE);
if hModule <> 0 then
NumCharsMsg := FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER or FORMAT_MESSAGE_FROM_HMODULE or FORMAT_MESSAGE_ARGUMENT_ARRAY, Pointer(hModule), EventID, 0, Pchar(@MsgBuf), 0, ArgsBuffer); |
Das funktioniert auch solange die EventIds zweistellig sind. Aber alle größeren EventIds (und die meisten sind 4-stellig) liefert mir FormatMessage immer 0 zurück und ei GetLastError bringt Fehler Nummer 317, welcher folgendes bedeutet:
The system cannot find message text for message number 0x%1 in the message file for %2. ERROR_MR_MID_NOT_FOUND
Vielen dank,
Gruss,
Jim Knopf
Jim_Knopf - Do 06.07.06 15:52
Update:
Ich seh gerade dass es nicht an der Anzahl der Stellen der EventIds liegt, sondern an der Source des Events.
Nur die Source "Windows Update Agent" liefert Ergebnisse, alle anderen Sourcen funktionieren nicht.
Der zugehörige EventMessageFile zum Windows Update Agent ist laut Registry C:\WINDOWS\system32\wuaucpl.cpl
Andere EventMessageFiles/Dlls wie z.B. C:\WINDOWS\system32\netevent.dll, C:\WINDOWS\system32\w32time.dll oder c:\windows\System32\spmsg.dll funktionieren nciht..... :-/
Delete - Do 06.07.06 16:17
Meines Wissens entsprechen die EventIDs keinen Windows Fehlercode (Sagt ja schon der Name: EventID.), wie in GetLastError liefert. Mit FormatMessage dürfte da nichts zu holen sein. Für EventIDs kenne ich nur diese Seite:
http://www.eventid.net/
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!